Palestra feita na trilha de DevOps no TDC2014 em São Paulo.
Como estruturar uma estratégia de Continuous Delivery suportada por ALM, promovendo visibilidade, colaboração e controle
2. Have you seen this before?
Where is the latest version of the service?
This deploy is not working, where is the older version?
Here, you can install it on production, it's tested
It worked on my machine
Who authorized this deployment?
What is the version of the application that is in production?
How much time we need to develop this service?
3. What is important
Centralized Code Repository
The code should compile and build everytime
Build Pipeline
Everyone can see the results of the latest build
It should be easy to get the latest deliverables
Deployment Pipeline
Release Management
4. Employa DevOps deployment strategy
SIT
120X
DEV
300X
QA
60X
UAT
3X
PT
15X
PROD
1X
Continuous Delivery Deployments Highly Orchestrated
Deployments
Pull testing and validation as far left as possible
Push continuous delivery as far right as possible
Employ processes and tooling that can handle the spectrum
5
7. Software Configuration Management
Control the workflow of the software development
Continuous integration configuration
Kick off the builds
Allow visibility of the builds results
Keep track of the changes
Improve collaboration
Defect Tracking
Visibility
*Bluemix
DevOps
Services
8. Build Engine
Retrieve the application source code from the SCM
Build Automation
Compile, test and pack the code
Publish the resulting asset on the Asset Repository
Can Retrieve the published asset to Deploy Automation
*Bluemix
9. Software Repository
Software Definitive Library
Keep the asset on a centralized repository
Asset metadata and relationships
Organize the assets in communities
Maintain and control life-cycle and version
Keep track of asset usage
10. Deployment Automation
Maintain the configuration of the environment
Compare the configuration of different environments
Deployment Pipeline
Provision resources for the application on the Runtime
Deploy the application on the Runtime
UCD
*Bluemix
11. Environment
Expose the application for usage
Application execution environment
Infrastructure and services for the application
Database
*Bluemix
15. Prepare the build
Retrieve the source code
Compile
Unit Test
Quality Analysis
Package
“Every commit should be ready to be build. Also, the build should run fast and fail fast.”
17. Prepare the deploy environment
Get the service binary
Deploy it on the Service Runtime
Register on the Service Registry and Repository
Test the Service
UCD
21. By the way, we can add Continuous
Delivery right now
Retrieve the source code
Compile
Unit Test
Quality Analysis
Package
Publish
“Continuous delivery is about putting the release schedule in the hands of the business, not in the hands of
IT.” - Jez Humble
22. Management create new work items for
the development team
Create a V2 of our Service
26. … and start with a Continuous Deployment
Retrieve the latest binary from Asset Repository
Pass it on to the Deploy Automation
Deploy it in Development
UCD
Can be run at any time (including just after the delivery phase as part of the build pipeline) for a published asset
“The primary goal of continuous deployment is not to deploy continuously. It is to be able to deploy continuously..” - Paul
Klipp
27. After some validation of the service by the
development
Requesting deploy of V2 to Staging
28. The manager receives the work item and
send it to staging
UCD
Approve the V2 on Asset Repository to Staging
Kickoff the deployment of V2
30. If everything goes well on the staging ...
Verify if the target environment meet all pre-conditions
Verify if application has all quality and security metrics OK
Validate if it was deployed on dev and staging environments
Schedule for the next available release date
Plannig to deploy V2 to Production
31. … someone who has the authority send it
to production
UCD
Scheduled release date arrived
Approve the V2 on Asset Repository to Production
Kickoff the deployment of V2
37. How it looks like for Release Management
V1 is a WS-SOAP
It has never been
published on any
environment
V3 is a REST
It is on
Development
V2 is a WS-SOAP
It is on Staging
It is on Production