Slide 1

Slide 1 text

Software factory scalable with Jenkins on Docker Or how to transform a support team to an innovative team

Slide 2

Slide 2 text

I am Laurent Grangeau I love to automate things and run apps at scale. You can find me at @laurentgrangeau Hello!

Slide 3

Slide 3 text

Overview of softwares in bank industries

Slide 4

Slide 4 text

Banking overview Old code There is lots of legacy code. Generally, the code base is > 5 years old. Monolithic softwares As softwares were designed Years ago, there is little microservices, and no 12factor principles. No agile process Mostly waterfall process, ITIL compliant. Regulation Banks can’t do what they want. There is a lot of regulation and audits. 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.

Slide 5

Slide 5 text

Fintechs are taking market shares… It’s time to react ! BANKS FINTECHS

Slide 6

Slide 6 text

Continuous Delivery program

Slide 7

Slide 7 text

Be like the GAFA Be faster, bring more business value, reduce maintenance costs

Slide 8

Slide 8 text

Why ? ◉ Faster time to market => Competitive advantage ◉ Better quality of product => Higher customer satisfaction ◉ Processes optimized => Reduced total cost of ownership

Slide 9

Slide 9 text

One team, everything automated Continuous improvement, faster time-to-market, faster resolution of problems, more stable environment

Slide 10

Slide 10 text

Platform Backlog grooming Development interface Source code management Continuous integration Testing Libraries repository Deployment automation Metrology Infrastructure as code

Slide 11

Slide 11 text

New Jenkins instance Tickets

Slide 12

Slide 12 text

 400+ applications transformed  Reduce TTM from months to 2 weeks  Reduce deploy time from months to minutes

Slide 13

Slide 13 text

But wait !... Problems have arised

Slide 14

Slide 14 text

Problems ◉ How to install plugins ? ◉ How to upgrade instances ? ◉ What to do when SF is down ? ◉ How to manage every configuration ? ◉ How to manage slaves ?

Slide 15

Slide 15 text

Slaves management rhel6.5 + JDK6 + maven 2 rhel6.5 + JDK7 + maven 3 rhel7.2 + JDK7 + maven 2 rhel7.2 + JDK7 + maven 3 jobs I need rhel7.2 + JDK8 + maven 3

Slide 16

Slide 16 text

Problems Tickets

Slide 17

Slide 17 text

Problems

Slide 18

Slide 18 text

PaaS program

Slide 19

Slide 19 text

Docker to the rescue Leverage on Docker platform

Slide 20

Slide 20 text

Platform Metrology Backlog grooming Development interface Source code management Continuous integration Testing Libraries repository Deployment automation

Slide 21

Slide 21 text

What we wanted ? ◉ Empower developers ◉ Relieve build team ◉ Move fast ◉ Teams had to own their stack

Slide 22

Slide 22 text

Jenkins

Slide 23

Slide 23 text

Jenkins ◉ Creation of Jenkins images ◉ One Jenkins update center ◉ One Jenkins master – Connection to JUC – Only the necessary plugins ◉ All teams can create their own master ◉ Leverage on plugins

Slide 24

Slide 24 text

Jenkins ◉ Docker Workflow – provides first-class support for Jenkins Pipeline to build real world CD pipelines for containerized applications using Jenkins and Docker ◉ Build and Publish – builds projects from a Dockerfile and pushes a tested and proven gold image to Docker Hub ◉ Docker Hub Notification – triggers downstream jobs when a tagged container is pushed to Docker Hub ◉ Docker Traceability – identifies which build pushed a particular container that is running in production and displays that on the Jenkins builds page ◉ Docker Slaves – uses Docker containers as standardized build environments shared between Jenkins masters to improve isolation and elasticity ◉ Docker Custom Build Environment – specifies customized build environments as Docker containers

Slide 25

Slide 25 text

Docker slaves ◉ Two main images – One master – One builder ◉ No more « matrix from hell », « slaves management »

Slide 26

Slide 26 text

Groovy !

Slide 27

Slide 27 text

New pipeline

Slide 28

Slide 28 text

Builder image

Slide 29

Slide 29 text

Builder image FROM openjdk:8-jdk ARG MAVEN_VERSION=3.3.9 ARG USER_HOME_DIR="/root" RUN mkdir -p /usr/share/maven /usr/share/maven/ref \ && curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz \ | tar -xzC /usr/share/maven --strip-components=1 \ && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn ENV MAVEN_HOME /usr/share/maven ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2" COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh COPY settings-docker.xml /usr/share/maven/ref/ VOLUME "$USER_HOME_DIR/.m2" ENTRYPOINT ["/usr/local/bin/mvn-entrypoint.sh"] CMD ["mvn"]

Slide 30

Slide 30 text

Conclusion

Slide 31

Slide 31 text

 Developers are empowered  Jenkins can be updated with minimal impact  Build team can innovate again  No more slaves management or matrix from hell  Enable 1000+ jobs

Slide 32

Slide 32 text

Any questions ? You can find me at • @laurentgrangeau • [email protected] Thanks!

Slide 33

Slide 33 text

No content