DevOps On The Cloud
DevOps On The Cloud
I want
I want stability
change
Building Supporting
Software Software
Waterfall Methodology 4
Source: https://www.360logica.com/blog/how-does-devops-benefits-to-the-information-system-development/devops-loop-illustrations/
Why is DevOps important? 8
Source: https://riskspan.com/news-insight-blog/what-is-devops/devops-venn/
Shorter Development Cycles, Faster Innovation 9
u When Development and Operations
teams are in separate silos, it’s usually
difficult to tell if an application is ready
for operations
u When Development teams simply turn
over an application, the operations’
cycle times are extended needlessly
u With a combined Development and
Operations team, applications are
ready for use much more quickly
Source: https://puppet.com/sites/default/files/inline-images/2016%20State%20of%20DevOps%20infographic.jpg
Reduced Deployment Failures, Rollbacks, and 10
Time to Recover
u Part of the reason teams experience deployment
failures is due to programming defects
u The shorter development cycles with DevOps
promote more frequent code releases
u This makes it easier to spot code defects and
teams can reduce the number of deployment
failures
u Time to recover is an important issue, because
some failure must be expected but it is much
faster when the development and operations
teams have been working together, exchanging
ideas and accounting for both teams’ challenges
during development
Source: https://puppet.com/sites/default/files/inline-images/2016%20State%20of%20DevOps%20infographic.jpg
Improved Communication and Collaboration 11
u DevOps improves the software development culture
u When the teams trust each other, they can experiment and
innovate more effectively
u The teams can focus on getting the product to market or into
production
u It’s no longer a matter of “turning over” the application to
operations and waiting to see what happens
u The process becomes
increasingly seamless as all
individuals work toward a
common goal
Increased Efficiencies through Automation 12
u Increased efficiency helps to speed the development process and make it
less prone to error. This includes:
u Test Automation - Test the code and the underlying infrastructure in an automated way
instead of doing it manually
u Centralized Configuration Management - If there are multiple running servers and you need
to make configuration changes in one file then it is better to automate this process rather
than do it manually
u Continuous Integration – Development practice
that requires developers to integrate code into a
shared repository several times a day. Each
check-in is then verified by an automated build,
allowing teams to detect problems early.
u Continuous Delivery – A software development
practice where code changes are automatically
prepared for a release to production
Continuous Integration/Continuous Deployment 13
- aka “CI/CD Pipeline”
u Costs
u You need a strong foundation in continuous integration and your test suite needs to cover
enough of your codebase
u Deployments need to be automated. The trigger is still manual but once a deployment is
started there shouldn't be a need for human intervention
u Your team will most likely need to embrace feature flags so that incomplete features do not
affect customers in production
u Gains
u The complexity of deploying software has been taken away
and your team doesn't have to spend days preparing for a
release anymore
u You can release more often, thus accelerating the feedback
loop with your customers
u There is much less pressure on decisions for small changes,
hence encouraging iterating faster
Source: https://www.cloudbees.com/use-case/continuous-delivery
Costs/Gains - Continuous Deployment 16
u Costs
u Your testing culture needs to be at its best and the quality of your test suite will determine
the quality of your releases
u Your documentation process will need to keep up with the pace of deployments
u Feature flags become an inherent part of the process of releasing significant changes to
make sure you can coordinate with other departments (Support, Marketing, PR...).
u Gains
u You can develop faster as there's no need to pause
development for releases. Deployments pipelines are
triggered automatically for every change.
u Releases are less risky and easier to fix in case of problem as
you deploy small batches of changes
u Customers see a continuous stream of improvements, and
quality increases every day, instead of every month, quarter
or year
Source: https://medium.com/sleekrco/the-journey-build-continuous-deployment-sleekr-69f07adb7efe
Pipeline - Continuous Integration 17
Test/Validation Benefit
JUnit Code that tests our code and looks for known regression issues
Jacoco Measures the amount of app code actually exercised by our unit tests. Requires at least 70% coverage
JFrog Xray Proactively identify vulnerabilities on open source and license compliance violations, before they manifest in
production releases
Checkstyle (Linting) Validates code matches best practices for formatting to ease maintenance
Veracode Scans our source code looking for known security and quality issues
SonarQube Additional code scanning for known security and quality issues
Pipeline - Continuous Integration Tools 20
AWS CodeBuild is a
fully managed build
service that
compiles source
code, runs tests, and
produces software
packages that are
ready to deploy
Pipeline - Continuous Deployment/Delivery 21
u Executes after Continuous Integration steps have successfully completed
u Application is built and deployed to a pre-prod environment
u Additional automated testing and/or Acceptance Testing is conducted
u If successful, the application is then deployed automatically or pending a
manual approval to production
Pipeline - Deploy 22
u Deployment Examples:
u Deploy on-premise
u Build code and deploy to existing infrastructure
u Deploy to cloud
u Create the infrastructure using IaC
u Build code and package (e.g. containers)
u Deploy to new infrastructure (e.g. container orchestration)
Pipeline – Deploy to Cloud example 23
This could be
Docker Hub
Source: https://aws.amazon.com/blogs/compute/continuous-deployment-to-amazon-ecs-using-aws-codepipeline-aws-codebuild-amazon-ecr-and-aws-cloudformation/
DevOps in the Cloud – CI/CD Pipeline 24
u AWS CodePipeline
u A Continuous Delivery/Deployment service for fast and reliable application
updates
u It builds, tests, and deploys your code every time there is a code change, based
on the release process models you define
Deployment Tools 25
u Configuration template -
contains your default
configuration (e.g. size of
virtual machine)
u Environment - where AWS
Elastic Beanstalk executes
your application. It consists
of a version and the
configuration.
Source: Wittig, M. and Wittig, A. (n.d.). Amazon Web Services in action.
Recap of Deployment Models 29
u There many more 3rd party tools you can choose from
CI/CD - Challenges 33
u Organizational Culture Changes
u Some businesses prefer traditional methodologies and might have a hard time implementing
continuous integration
u Managers may be resistant because continuous integration doesn’t help them meet their
immediate company objectives
u Difficult to Maintain
u Building an automated code repository is not a simple task and there are many tools to
integrate
u Teams must build the proper testing suite and spend time writing test cases versus developing
code
u Numerous Error Messages
u For larger development teams, they may see CI error messages daily and ignore them
because they have other tasks and concerns
u They may start to see a broken build as a normal thing and defects could start accumulating
on top of each other
u Bottom-line – Migration might be slow, but benefits easily outweigh the costs
Build a Simple Pipeline 34