Rapidly evolving customer needs and accelerating innovations are forcing businesses to be increasingly agile. To facilitate overall
business goals, time to market is the key. Over the years the software development life cycle has moved from the patented
waterfall model to agile method
3. Abstract
Rapidly evolving customer needs and accelerating innovations are forcing businesses to be increasingly agile. To facilitate overall
business goals, time to market is the key. Over the years the software development life cycle has moved from the patented
waterfall model to agile methodology. These improvements have a rippling effect downstream towards IT operations, as the
DevOps practice is embraced.
AWS, being the primary player in Cloud, supports numerous DevOps principles & practices, which can be capitalized for an
improved software development life cycle.
Idexcel, being a partner of AWS, focuses on DevOps principles and practices.
Introduction
DevOps is a practice focusing on collaboration between the development team & IT operations. It is a philosophy that ushers in cultural
change.
The mismatch of goals between the development team & IT operations can lead to conflicts, resulting in the business to suffer.
These conflicts are melting down, following a series of systematic approaches:
• Infrastructure as code
• Continuous deployment
• Automation
• Monitoring
• Security
The article focuses on services & features exposed by AWS to enable the entire end-to-end DevOps solution on Cloud Environment.
Agility & DevOps
Agile software development primarily focuses on the collaboration between businesses and developers; DevOps focuses on the collaboration
between developers, IT operations and security teams.
As Agile Software Development provides business agility, DevOps provides IT agility, enabling the delivery of reliable & predictable
applications.
DevOps focuses on code, testing, packaging, and deployment. With infrastructure, on the other hand, DevOps focuses on provisioning,
configuration, orchestration, and deployment, keeping the underlying basic principle of project delivery unchanged.
DevOps on AWS Whitepaper
3
4. 4DevOps on AWS Whitepaper
IMAGE
Subjects of Interest
Infrastructure as Code (IaC): The process
of managing and provisioning computing
infrastructure (processes, bare-metal servers,
virtual servers, etc.) and their configuration
through machine processable definition files,
rather than physical hardware configuration or
the use of interactive configuration tools. IaC can
be implemented in AWS using:
• AWS CloudFormation
Infrastructure as Code (IaC)
DevOps treats infrastructure the same way developers treat code. Practicing IaC
means applying the principle of application code development to infrastructure
provisioning. All configurations need to be defined in a specific format and stored in
a code repository.
AWS provides multiple options to facilitate DevOps way of creating infrastructure.
The company provides services that enable the creation, deployment and
maintenance of infrastructure in a programmatic way. These services provide rigor,
clarity, and reliability.
AWS Cloud Formation
The core example of DevOps practice is AWS Cloud Formation. Cloud Formation
templates allow users to define & model AWS resources that can be created or
updated. A simple JSON formatted template needs to be written with a specific
syntax and structure, which varies depending on the types of resources chosen.
The stack can be created or updated from AWS console or can be integrated with
an orchestration tool like Jenkins. Events are displayed along with the stage of
progress and in case of any error, the stack is rolled back.
AWS Cloud Formation makes it easy to provision a collection of AWS resources
and describe any dependencies or pass in special parameters when the stack is
configured.
AWS Cloud Formation is a free service; only normal rates are levied for the AWS
resources. Simply put, whatever AWS Cloud Formation creates, only that is billed.
Planning Requirement
Use Case
Design code Unit
Test Bug Fix
Provision Configure
Orchestrate Deploy Monitor
The key to following the continuous
delivery path is to continually question
your own assumptions about what’s
possible.”
-Jeff Sussna
5. 5DevOps on AWS Whitepaper
Continuous Deployment (CD)
Continuous deployment is another core concept in a DevOps strategy. Its primary
goal is to enable the automated deployment of a production-ready application
code.
Sometimes continuous deployment is referred to as continuous delivery. The only
difference is that continuous deployment usually refers to production deployments.
By using continuous delivery practices and tools, software can be deployed rapidly,
repeatedly, and reliably in test, staging & production environments. If a deployment
fails, it can be automatically rolled back to its previous version.
AWS Code Deploy
The core features of AWS Code Deploy provide the ability to deploy applications
of virtually any programming language across an AWS EC2 fleet with minimum
downtime. It can be integrated with existing continuous integration tool and be a
part of the existing software release & delivery process.
IMAGE
Subjects of Interest
Continuous Deployment (CD): It is a software
engineering approach in which the teams
produce software in short cycles, ensuring that
the software can be reliably released at any
time. It aims at building, testing, and releasing
software faster and more frequently. CD in AWS
can be implemented using:
• AWS CodeDeploy
Check In
Trigger
Feedback
Check In
Trigger
Feedback
Check In
Trigger
Trigger
Trigger
Feedback
Feedback
Version ControlDelivery Team Buid & United Tests Automated Acceptance Tests User Acceptance Tests Release
Feedback Approval
ApprovalFeedback
6. 6DevOps on AWS Whitepaper
AWS Code Pipeline
AWS Code Pipeline is a continuous delivery and release automation service that
aids smooth deployment. Custom Development Workflow can be designed for
checking any code, building it, as well as deploying and pushing it into the staging,
testing and production phase. A custom tool like Jenkins can be integrated with
the AWS Code Pipeline. AWS Code Pipeline provides rapid delivery of features; it
also maintains high quality by adapting to the automation of your build, test, and
release process.
Source
Developers
commit Changes
Changes
Updates Fixes
Ideas
Requests Bugs
Developers Customers
Build
Changes
are built
Staging
Code is deployed
and tested
Staging
Code is deployed
to public servers
AWS Code Commit
Code Commit is a secure, scalable, managed source control service from AWS. It
eliminates the need of managing your own source control system as well as relieves
you from any worries of scaling the infrastructure.
Team using local GIT repositories can clone using Code Commit to allow seamless
deployment in AWS instances.
AWS Code Commit has several benefits:
• Fully managed
• Able to store anything
• Readily available
• Offers faster development lifecycles
• Works with your existing tools
• Secure
Subjects of Interest
Continuous Deployment (CD): contd.
• AWS Code Pipeline
• AWS Code Commit
7. 7DevOps on AWS Whitepaper
AWS BeanStalk
Bean Stalk is AWS’s answer to automation. AWS Elastic Bean Stalk is an application
container that makes it easy and productive for developers to deploy applications
into commonly used technology stacks.
AWS Elastic Bean Stalk supports automation and numerous other DevOps
best practices including automated application deployment, infrastructure
configuration, and version management.
Depending on the platform, all you need to deploy applications is to upload
packages in the form of .war or .zip files directly from your computer or from
Amazon S3.
Subjects of Interest
Continuous Deployment (CD): contd.
• AWS Bean Stalk
• AWS Ops works
AWS Ops Works
Ops Works takes the principles of DevOps a step ahead of Bean Stalk. AWS Ops
Works provides different levels of automation with additional features like
integration with configuration management software (Chef) and application
lifecycle management. You can use application lifecycle management to define how
resources are set up, configured, deployed, un-deployed, or terminated.
Out of the box, AWS Ops Works also simplifies setting up Auto Scaling groups and
Elastic Load Balancing load balancers, further illustrating the DevOps principles of
automation.
8. 8DevOps on AWS Whitepaper
Subjects of Interest
Monitoring: Monitoring the deployment and
infrastructure is an integral part of DevOps.
Proper monitoring and timely information can
eliminate all unwanted issues that arise due to
overload or any other errors. Monitoring in AWS
can be performed using:
• AWS CloudWatch
Conclusion:
In order to make the journey to the cloud
smooth, efficient and effective, technology
companies should embrace DevOps principles
and practices. These principles are embedded
in the AWS platform. Indeed, they form the
cornerstone of numerous AWS services,
especially those in the deployment and
monitoring offerings.
With AWS as your chosen environment, your
DevOps principles will bring agility to your
business and IT organization and accelerate your
journey to the cloud
Monitoring
Communication and collaboration is fundamental in a DevOps strategy. To facilitate
this, feedback is critical. In AWS, feedback is provided by the core service: Amazon
CloudWatch. It provide a robust monitoring, alerting, and auditing infrastructure to
help developers and operations teams work together closely and transparently.
AWS Cloud Watch
AWS Cloud Watch monitors all AWS resources in a real time manner along with the
applications running on them. Resources and applications can produce metrics
that Amazon Cloud Watch collates and tracks. Alarms can be configured to send
notifications as and when events occur.
Amazon Cloud Watch provides feedback; it also supports the DevOps concept of
automation. AWS services such as Auto Scaling rely on Cloud Watch for notifications
that trigger appropriate automated actions such as scaling up and scaling down
Amazon EC2 instances.