This document discusses implementing continuous delivery practices at a bank. It outlines some of the challenges with legacy banking systems including old code, lack of agile processes, and heavy regulation. It then proposes adopting agile, software craftsmanship, and DevOps practices to automate releases, improve quality, and speed up delivery. Key aspects of the proposed continuous delivery program include adopting Scrum, test-driven development, infrastructure as code, automated deployments, and a cloud platform. The results were transforming over 400 applications to reduce time to market from months to weeks and deployment time from months to minutes.
4. Banking overview
Old code
There is lots of legacy code.
Generally, the code base is > 5
years old.
No agile process
Mostly waterfall process, ITIL
compliant.
Regulation
Banks can’t do what they want.
There is a lot of regulation and
audits.
Monolithic softwares
As softwares were designed
years ago, there is little
microservices, and no 12factor
principles.
Releases are manual
Generally, release is a manual
process with service
interruption.
Obsolete infrastructures
There are still mainframe
computers or specialized
appliances like Sparc
machines.
13. Agile pillar
◉ What is Agile ?
◉ “Our highest priority is to satisfy the customer
through early and continuous delivery of
valuable software”
◉ Why ?
◉ Increase quality of delivery and reduce time to
market
14. Agile pillar
◉ Scrum/Kanban product backlog management
◉ Backlog grooming
◉ Story mapping
◉ Business analysts involved
◉ Iterative development
◉ Minimum viable product
◉ …
16. Software craftsmanship pillar
◉ What is software craftsmanship ?
◉ “Any fool can write code that a computer can
understand.
Good programmers write code that human can
understand”
M.Fowler
◉ Why ?
◉ To add value and respond to change
17. Software craftsmanship pillar
◉ Test Driven Development
◉ Behavior Driven Development
◉ Clean code / architecture
◉ « Three amigos »
◉ Continuous integration / testing
◉ Testing and refactoring legacy code
◉ …
18. Software craftsmanship pillar
◉ Collaboration culture
◉ Coding dojos
◉ Hackathon / Coding games
◉ Meetup / Fair / Conference
◉ Blog
◉ Community projects
◉ …
20. DevOps pillar
◉ What is DevOps ?
◉ DevOps is a culture, movement or practice that emphasizes
the collaboration and communication of both software developers
and other information-technology (IT) professionals while
automating the process of software delivery and infrastructure
changes.
◉ Why ?
◉ To increase effectiveness, reduce TTM and implements
continuous improvement
21. DevOps pillar
◉ Dev / Ops collaboration
◉ Infrastructure as Code
◉ Automated deployment
◉ Metrology
◉ Release pipeline
◉ Desired state
◉ …
22. One team, everything automated
Continuous improvement, faster time-to-market,
faster resolution of problems, more stable
environment
The current platform is based on :
Jira for backlog grooming
Github for source code management
Jenkins / Teamcity (depends on technologies used) for continuous integration
Sonarqube for static and dynamic analysis of code
Nexus for libraries repository
XLDeploy for deployment automation
ELK for metrology
Puppet for infrastructure as code
Laurent
So, to take down all this
We are using tools from Hashicorp to achieve this challenges like Vault or Consul
Consul is used to take care of infrastructure hybridation, service discovery and networks over datacenter
Vault is used to take care of secret management.
Laurent
Consul is used in our Docker swarm cluster to discovers new customers as they spawn up and to feeds a registry so at any moment we know how much containers are running on the cluster
Laurent
Docker swarm join
Laurent
It’s also used to make service discovery easy when the service is scale up. Consul
Laurent
It’s also used to make service discovery easy when the service is scale up. Consul
Laurent
We use infrastructure as code to provision a high availibility consul cluster for each application. This consul cluster per application is used to store variables like environment variable for docker container, or all the properties used in an application.
Laurent
We have two more usecases with consul.
Our Docker platform is backed by a consul cluster to add overlay network capabilities
Laurent
And a last consul cluster is used to get rid of the limitation of cross data center. We have a usecase where an application don’t have to know on which cloud it’s running, whether it’s on private or public cloud. Consul help us achieve this usecase
Christophe
So what about Vault
Vault is used to take care of secret management.
Christophe
Can generate credentials when we scale
Christophe
Christophe
We have to secure communications between containers