Continuous Delivery ?
Dé!nition
« Stratégie de livraison de logiciels visant à passer vos besoins métier jusqu’en
production aussi rapidement et e"cacement que possible. »
Pipeline de livraison automatisé:
1. Code géré en con#guration
2. Compilation et packaging centralisés et automatisés
3. Tests automatisés et intégrés au processus
4. Applications déployées automatiquement de bout en bout
5. Environnements créés et détruits à la volée / en mode ‘Push Button’
6. Reporting clair, précis et continu
4
Continuous Delivery ?
Les composants
0. Agile projects
1. Continuous Integration
•
•
•
•
•
•
•
Automated testing
Automated packaging
Automated distribution
Software Library (DSL)
Clear reports
Fewer coding errors
Auditability
2. Application Release Automation
•
•
•
•
•
•
Automated end to end deploy < 10 min.
Roll back in < 10 mn
Clear reports
Cheaper deployments
Fewer deployment errors
Auditability
3. Provisioning
•
•
•
•
•
•
•
•
Build / teardown environments < 15 min.
Standardized environments
Reproducible environment configuration
Policy controlled creation and scaling
Fewer errors
Clear reports
Less environment errors
Auditability
Development
Test
Acceptance
Production
App A
V 2.0
App A
V 1.2
App A
V 1.1
App A
V 1.0
Development
Test
Acceptance
Production
App B
V 3.3
App B
V 3.2
App B
V 3.1
App B
V 3.0
5
Continuous Delivery ?
Automatisation en pratique
Agile projects
Continuous Integration
Application Release Automation
Provisioning
Development
Test
Acceptance
Production
App A
V 2.0
App A
V 1.2
App A
V 1.1
App A
V 1.0
Development
Test
Acceptance
Production
App B
V 3.3
App B
V 3.2
App B
V 3.1
App B
V 3.0
11
Deployit
Deployment Package
✓Un par version d’application
✓Complet, il contient l’ensemble des ressources nécessaires
• archives (WAR, EAR, JAR…)
• .exe, .dll, application pool
• contenu statique (html, javascript, images, video)
• scripts de bases de données et datasources
• !chiers de con!guration
✓Structure adaptable aux modes opératoires existants
✓Indépendant de l’environnement
13
Deployit
Environnement
✓Machine ou ensemble de machines sur lesquelles sont installés des middleware
• Serveurs d’application, Serveurs Web
• Base de données
• Portail, ESB,
• ....
✓Classiquement
• Développement (simple)
• Test
• Recette
• Production (complexe)
14
Deployit
Le déploiement
• Associer un package (version X de l’application Y) sur un environnement Z
• Chaque élément du package (deployable) est associé à un ou plusieurs
containers de l’environnementpour devenir un ‘deployed’
• Chaque ‘deployed’ est con#gurable.
15
Deployit
Les dictionnaires
•Permettent de centraliser et gérer les paramètres de con#guration en
fonction de l’environnement cible
•Valeur par défaut des propriétés (ex: #le.DeployedFile.targetDir)
•Valeur des placeholders (ex:{{DB_USERNAME}}, {{ULR_BACKEND}})
•Association
•Plusieurs par environnement
•Partageables entre plusieurs environnements
17
Deployit
Les fonctionnalités
• Implémente l’UDM
• Référentiels (Applications, Environnement, Infrastructure)
• Point central de con#guration
• Moteur de calcul automatique des plans de déploiements (AutoFlow)
• Automate de déploiement
18
Deployit
Pourquoi est-il di"érent ?
Plugins
Procédures de
déploiement out
of the box
Auto!ow
pas de
scripts à
maintenir
Deployit
Basé sur un
modèle
Architecture
sans agent
Mise en
oeuvre
accélérée
21
Deployit
Plugins et points d’extension
• Apportent le savoir-faire de déploiement
•Travaillent de concert
• Extensibles et paramétrables par con#guration (XML)
•‘Generic Plugin’ : pour modéliser un déploiement (package & container)
Licensed Plugin
IBM WAS 6, 7, 8 et 8.5
IBM WebSphere MQ
IBM WebSphere Process Server
Oracle Weblogic Server 9, 10, 11g,
Oracle Service Bus 10 et 11
12c
JBoss Application Server 4, 5, 6 ,7
Apache Tomcat Server
IIS / Biztalk
BigIP F5 Load Balancer
Bundled Plugins
Command Plugin
File Plugin
Web Server Plugin
Database Plugin
Notification Plugin
Release Authorization Plugin
Maven Plugin
Bamboo Plugin
Puppet Plugin
Jenkins Plugin
Community Plugins
Test Application Plugin
Lock Plugin
Change Management Plugin
Apache mod_jk
Scheduler / SLA Plugin
Generic Load Balancer Plugin
DataPower Plugin
RPM Plugin
Personal Credentials Plugin
22
REX
Mise en place du processus
de déploiement continu
sur le projet SPark
à la SGCIB
3
REX
SPark in a glance
SPark is an application, used worldwide, that
provides a uni!ed process for multi-asset structured
products creation.
SPark is a repository and a Work"ow.
Used by more than 700 users. Sales, Pricers,
Structurers, traders, middle o#ces, etc.
Developments started in October 2011.
SPark is in production since June 2012.
24
REX
Activity automation maturity
SPark
‘Worst’ case
Action Mode
Frequency
Action Mode
Frequency
#1 Build a package
Auto
All build
Manual
All release
#2 Deploy on development env.
Auto
All build
Manual
On demand
#3 Historize package
Auto
All build
Manual
All release
#4 Run unitary tests
Auto
All build
None
#5 Run integration tests
Auto
All build
Manual
All release
In progress /Auto
All build
Manual
All release
In study /Auto
All build
Manual
All release
#8 Run performance tests
No - To Do
All build
Manual
All release
#9 Run security tests
No - To Do
All build
Manual
All release
Auto
Auto
All deployment
All build
Manual
None
All release
Push Button
On demand
Manual
On demand
Manual
On demand
Manual
On demand
Push Button
On demand
Manual
On demand
Auto
All deployment
Manual
All prod release
#16 Deploy to prod env.
Push Button
On demand
Manual
On demand
#17 Setup environment
Manual
On demand
Manual
On demand
#18 Refresh database
Manual
On demand
Manual
On demand
Auto
Real time
Manual
All release
Activity
#6 Run functional non-reg. tests
#7 Run user interface non-reg. tests
#10 Run smoke tests
#11 Verify code quality
#12 Deploy to homologation env.
#13 Acceptance tests
#14 Deploy to pre-prod env.
#15 Prepare rollout & rollback planning
#19 Feedback on issues
28
REX
Satisfaction survey (April 2013)
Sent to 680
users
75%
68%
86%
Global
Performance
User
communication
68 answers
86%
87%
87%
Dev Availability
Enhancements
Help desk
29
REX
Bene!ts and pain points
Time to market
Risk decrease
Quality improvement
E#ciency
Non-event release
Enable CM/RM simpli!cation
Bene"ts
Environment provisionning
Proximity with Ops
New usages of IC tools
Pain points
30
REX
Next steps
Be able to deliver in
production
features
independently one
from each other
31