So, you've decided that you are going to adopt DevOps — a culture and a practice that will help you deliver better products faster to the customer, a set of activities that continuously improve all functions and involve all employees. According to this article at Gartner, although people are at the very core of the DevOps philosophy, they are only a portion of the wider equation. The DevOps philosophy, therefore, centers on people, process, technology, and information. Now that you do want to embrace DevOps, there might be a dilemma about what tools to choose, how to manage these tools, their security, deployment on multiple environments, monitoring, etc.
Well, look no further than AWS! Read below to find out how AWS is a solution for all your DevOps requirements and how AWS can help you to implement your DevOps strategy.
DevOps is becoming everything — development, operations, security, testing, and deployment. It is more of a culture rather than a single department. Hence, a platform that consists of multiple tools with effective integrations is required. These tools shouldn't be costly, as you don't want to get bankrupt by license fees.
Infrastructure as Code
A fundamental principle of DevOps is to treat infrastructure the same way developers treat code. It should be versioned, scripted, repeatable, reliable, and consistent. AWS provides a DevOps-focused way of creating and maintaining infrastructure, similar to the way software developers write application code. AWS provides that enable the creation, deployment, and maintenance of infrastructure in a programmatic way.
Focus on People and Processes, Not Tools Management
Another fundamental DevOps practice is to perform very frequent but small updates to your software. As an organization, you should focus on creating your software and not on managing and maintaining underlying infrastructure. AWS takes care of these tasks and lets your people focus on what they do best: making great products and getting them to your customers faster and more often. AWS enables you to focus on people and processes for adopting DevOps. AWS has a range of services for all phases of DevOps starting from Planning to Operations including Continuous Integration, Continuous Delivery, etc.
Automation is a key enabler for deploying faster and more frequently while ensuring quality and service continuity. You want to automate as much of your process as possible gradually — specifically, hand-offs between different teams and different tools. AWS enables seamless integration of its services with best and most used tools in industry such as Git, Jenkins, Docker, etc.
With the AWS pay-as-you-go model, you need not worry about costly license fees. You can set up billing alarms for resources you consume to enable your DevOps strategy. AWS enables you in applying the "fail fast" principle; you can terminate your resources anytime. You don't have to commit huge resources to an idea or an experiment and you don't pay anything upfront.
To conclude: according to Steve Yegge (a former Amazon engineer) Jeff Bezos issued a mandate during the early development of the AWS platform, that stated, in Yegge's words:
All teams will henceforth expose their data and functionality through service interfaces.
Teams must communicate with each other through these interfaces.
There will be no other form of interprocess communication allowed: no direct linking, no direct reads of another team's data store, no shared-memory model, no back doors whatsoever. The only communication allowed is via service interface calls over the network.
It doesn't matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn't matter. Bezos doesn't care.
All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.
Anyone who doesn't do this will be fired.
For more information on all tools available at AWS for DevOps, please visit DevOps section of the AWS website here. I have also created a YouTube playlist containing AWS DevOps videos from re-Invent 2016 and tech talks.
Let me know your thoughts about this article, how you implement your DevOps strategy, and what platform you use. I'll be happy to answer questions you might have about DevOps or implementing DevOps with AWS.