Meet Dave. Dave works for a company whose success is
contingent on its ability to offer new and exciting products to its online customers
faster than competitors. Dave is a developer, who writes code for new
products, new features, security updates and bug fixes. Unfortunately, he needs to wait weeks for
his work to be placed into production. This delay increases the pressure of staying
competitive, because some competitors are able to deploy new products and features much
faster. In addition, the delay makes it very challenging
for Dave to manage both the code that is pending to be pushed into production and the development
of the next product and/or feature that he is responsible for producing. When DaveÕs code is finally deployed into
the production environment, occasionally unforeseen errors or problems occur. This mostly happens because Dave is focused
on writing code for his Development Environment and itÕs not identical to the Production
Environment. Meet DaveÕs coworker Anna! SheÕs a System Administrator from the Operations
team. She is responsible for maintaining and assuring
the uptime of the Production Environment. The number of servers that she needs to administer
is constantly growing because her company continues to launch new products and customers
are consuming more of their services. This increase of servers has caused some challenges
for Anna. The tools that she used to administer a few
servers are not as effective when used to administer a much larger volume of servers. This challenge affects how new code is deployed
in her production environment. Usually when new code is released it takes
a little massaging to fit into her environment. This is why she requires code deployments
to be scheduled and are only allowed once a month. Once the new code is actually deployed, itÕs
her responsibility to diagnoses any errors or problems caused by the changes. Sometimes to her it feels as though the Developers
have tossed their work over the wall to her and her team. So, What can be done to help Dave and Anna
work better? Ultimately, they want the same thing,,,, happy
customers! What if Dave the Developer and Anna from Operations
* Worked better together? * Thought more alike? * Broke down silos? * Shared responsibilities? This would require them to change their mindset
on how DEV and Ops work? So, what is DevOps? Devops integrates developers and operations
teams in order to improve collaboration and productivity, by automating infrastructure,
automating workflows and continuously measuring application performance. If AnnaÕs and DaveÕs teams were more DevOps
oriented, they would do a few things differently. They would place more focus on automation. DevOps teams try to automate everything: from
testing of new code to how infrastructure is provisioned. They would write software in small chunks
that are integrated, tested, monitored and deployed usually in hours, versus the traditional
way of writing large chunks of software over weeks or months to then do weeks or months
of testing. Plus they will have identical development
and production environments based on same configurations. Writing small chunks of software will allow
them to increase the frequency of the deployments and improve the time to deploy new code. It also enables them to adopt an iterative
process to monitor, measure and improve the code and operations every day. Improve their ability to respond to market
needs, or other things that impact software. Instead of building and configuring software
plus infrastructure manually on an ad-hoc basis, AnnaÕs and DaveÕs teams would write
Configuration Management Code that describes how things should be built. As a result: they will have the ability to
build infrastructure at scale to dozens, hundreds or even thousands of servers), in multiple
locations, using different types of hardware. Another change that a DevOps oriented team
would do, is to use a source control system to help manage and document all of the changes
to both the Application Code and Configuration Management Code. The change that Anna and Dave would implement
is to adopt a discipline of application performance monitoring and optimization in almost real-time. This will allow Dave and the rest of his developers
to understand the performance impact of their changes. The ultimate goal is to have a Production
Environment that gives their customers a great experience. So what benefits does having a DevOps oriented
team give AnnaÕs and DaveÕs company? Well, it allows them to increase the rate
of Software Delivery and improves the companyÕs ÒTime to MarketÓ potentially from Months
and Weeks to Days and Hours. This will be a huge competitive advantage. It also allows them to maintain better Business
Focus by automating their infrastructure so they can focus things that improve the business
and their online content. They will spend more time of the things that
add more value to their organizations When a company is able to build and offer
better products, this means they have happier customers, and happier developers. How does a DevOps oriented team actually accomplish
this? Well as mentioned before, a culture change
is needed, or changes in the mindsets of the two groups that need to work closer together. The other component to the formula is getting
the right tools. New tools are needed in this new fast pace
world. They will need a tool that allows them to
test their code and programs. An example of this is Jenkins. They will need a tool for Source Control such
as GiTHub. This will allow them to manage and document
all the changes to their Application Code and their Configuration Management Code. They will need tools for Configuration Management,
such as Chef, puppet and Saltstack. These tools will allow them to deploy applications
in an automated fashion, maybe across hundred or thousands of servers in different locations. They will also need new tools that allow them
to continuously measure the performance of their environment. Generating, reading and analyzing system logs
is extremely helpful to monitor an environment; but now that many environments have hundreds
or thousands of servers, new tools like new relic are required to make sense on all the
data. This will allow them to know how the entire
application is performing and identify bottlenecks. But many companies donÕt know how to use
these new tools or do not have the skills to automate software delivery process. This is where Rackspace DevOps Automation
Service can help. In Conclusion, DevOps is a new philosophy
that can help software organizations innovate faster and be more responsive to business
needs. It promotes collaboration between developers
and operations, which improves quality or software deployments, and more frequent software
releases. Adopting the DevOps philosophy requires a
new mindset, new tools and new skills. Rackspace can help. Learn more at www.rackspace.com/DevOps
DevOps is DaveAnna - merge two into one, cut jobs.
The person who sets up a computer to automatically build, test, and deploy a software project.
Too many places are trying to implement DevOps by giving Developers Responsibility without giving Developers Power. If you don't trust developers with the complete set of tools to fix a problem, then don't do DevOps. Let somebody you do trust be on-call for the next middle-of-the-night emergency.