AWS CI-CD Overview
Continuous Integration
Continuous integration (CI) is a software development
practice where developers regularly merge their code changes into a central
repository, after which automated builds and tests are run. CI most often
refers to the build or integration stage of the software release process and
requires both an automation component (e.g., a CI or build service) and a
cultural component (e.g., learning to integrate frequently). The key goals of
CI are to find and address bugs more quickly, improve software quality, and reduce
the time it takes to validate and release new software updates.
Continuous integration focuses on smaller commits and
smaller code changes to integrate. A developer commits code at regular
intervals, at minimum once a day. The developer pulls code from the code
repository to ensure the code on the local host is merged before pushing to the
build server. At this stage the build server runs the various tests and either
accepts or rejects the code commit.
The basic challenges of implementing CI include more
frequent commits to the common codebase, maintaining a single source code
repository, automating builds, and automating testing. Additional challenges
include testing in similar environments to production, providing visibility of
the process to the team, and allowing developers to easily obtain any version
of the application.
Continuous Delivery and Deployment
Continuous delivery (CD) is a software development practice
where code changes are automatically built, tested, and prepared for production
release. It expands on continuous integration by deploying all code changes to
a testing environment, a production environment, or both after the build stage
has been completed. Continuous delivery can be fully automated with a workflow
process or partially automated with manual steps at critical points. When
continuous delivery is properly implemented, developers always have a
deployment-ready build artifact that has passed through a standardized test
process.
With continuous deployment, revisions are deployed to a
production environment automatically without explicit approval from a
developer, making the entire software release process automated. This, in turn,
allows for a continuous customer feedback loop early in the product lifecycle.
Continuous Delivery Is Not Continuous Deployment
One misconception about CD is that it means every change
committed is applied to production immediately after passing automated tests.
However, the point of continuous delivery is not to apply every change to
production immediately, but to ensure that every change is ready to go to
production.
Before deploying a change to production, you can implement a
decision process to ensure that the production deployment is authorized and
audited. This decision can be made by a person and then executed by the
tooling.
Key Take Away: Using continuous delivery, the decision to go
live becomes a business decision, not a technical one. The technical validation happens on every
commit.
Rolling out a change to production is not a disruptive
event. Deployment doesn’t require the technical team to stop working on the
next set of changes, and it doesn’t need a project plan, handover
documentation, or a maintenance window. Deployment becomes a repeatable process
that has been carried out and proven multiple times in testing environments.
Benefits of Continuous Delivery
CD provides numerous benefits for your software development
team including automating the process, improving developer productivity,
improving code quality, and delivering updates to your customers faster.
Automate the Software Release Process
CD provides a method for your team to check in code that is
automatically built, tested, and prepared for release to production so that
your software delivery is efficient, resilient, rapid, and secure.
Improve Developer Productivity
Key Take Away: CD practices help improve productivity by
freeing developers from manual tasks, untangling complex dependencies, and
returning focus to delivering new features in software. Instead of integrating
their code with other parts of the business and spending cycles on how to
deploy this code to a platform, developers can focus on coding logic and
quality.
Improve Code Quality
CD can help you discover and address errors early in the
delivery process before they grow into larger problems later. The team can
easily perform additional types of code tests because the entire process has
been automated. With the discipline of more testing more frequently, teams can
iterate faster with immediate feedback on the impact of changes. This enables
teams to drive quality code with a high assurance of stability and security.
Developers will know through immediate feedback whether the new code works and
whether any breaking changes or bugs were introduced. Mistakes caught early on
in the development process are the easiest to fix.
Deliver Updates Faster
When CI/CD is implemented, the velocity of the entire team,
including the release of features and bug fixes, is increased. Enterprises can
respond faster to market changes, security challenges, customer needs, and cost
pressures. For example, if a new security feature is required, your team can
implement CI/CD with automated testing to introduce the fix quickly and
reliably to production systems with high confidence. What used to take weeks
and months can now be done in days or even hours.
Implementing Continuous Integration and Continuous
Delivery
To help firms with their DevSecOps journey, AWS has a number
of certified DevSecOps Partners who can provide resources and tooling. There is
also a good AWS Whitepaper resource on the approach, maturity and
sustainability:AWS Cloud Transformation Maturity
whitepaper.[Source]-http://crmtrilogix.com/Cloud-Blog/AWS/AWS-CI-CD-Overview/319
AWS Training for Beginners Courses in Mumbai. 30 hours practical training program on
all avenues of Amazon Web Services. Learn under AWS Expert
Comments
Post a Comment