DevOps e nova cultura
Christophe Marchal | Software Architect
What is software development?
2 Different profiles
Deploy!
Simple App
Open a ticket
Simple App
Success Application
Application Grow
Deploy!
Application Grow
Too unstable!
Start Some XP Practices
Only commit in trunk
Use of SCM toolContinuous Integration
● unit tests #compilation● integration tests #runtime● acceptance tests #runtime
Continuous Integration
CompilationUnit Tests
Deploy em Staging
Integration Tests
Automatic AcceptanceTests
UserAcceptanceTests
Quality Improvement
Team and Application Grow
● Time spent merging
● Time spent compiling
● Time spent testing
● Time to put a feature in production
● Application Response time
● Hardware consumption
Move dependency from Compilation
to Runtime
New DeployService
Service
Success Application
Application Grow
I cannot deploy separately!
This is safe! Only 1 line of code changed
Service Service
Service Service
Service
ServiceService
Service
Service
Service dependencies
Service Service
Contract
Service
SOA
● Dependency only depends on service contract
● Service contract has versions● No branch
Service
ContractContract
Service
Contract
Contract
● unit tests #compilation● contract tests #compilation● integration tests #runtime● acceptance tests #runtime● performance tests #runtime
Update Services
I only deploy 1 service
This is safe! Only 1 line of code changed
ServiceContract
Release when you want
Build team around services
Client
Business
ServiceContract
ServiceContract
ServiceContract
Build team around services
Every Team as a Lean Startup
Number of ticket
Need to automatize
● unit tests #compilation● contract tests #compilation● integration tests #runtime● acceptance tests #runtime● performance tests #runtime● deploy automation tests #infra
Continuous Deployment
● Availability
● Rollback
● Data synchronization
● Scalability
● Cost/Benefit
Continuous Delivery
CompilationUnit Tests
Deploy Staging
Integration Tests
Automatic AcceptanceTests
UserAcceptanceTests
Stress Test
Deploy Production
Monitor everything
Build once, Deploy everywhere
Configuration Management
REST Service
Key Value databaseFilesystemEnvironment Variable
Green/Blue Deploy
Deploy the same way everywhere
Provisioning
Operation System
Virtual box images
Local Machine
Operational System
Operational System Application
Application
Operational System
Application
Still not there ...Production Local Machine
Container
Kernel Linux
Docker Repository
Example of Application
OS
Connecting to docker containers
Play! Packaged as a docker container
Running everything
Many, many, many services
● discoverability
● job scheduling
● bind containers to physical servers
New Ops Operational System
Failure everywhere ...
Is the server dead?
Prevention!
Circuit Breaker Pattern
Test On production
Thanks for your time!
Christophe Marchal | Software Architect