Background: I work for a company that is widely recognized as one of the leading software engineering organizations. We design, build, and deploy software for clients internationally. Working for a fintech client, we recently were looking to create a robust CI/CD process and achieve zero downtime — but it also needed to have excellent security limits.
Goals: Migration for a cloud solution like Codeship+ virtualized instances to Jenkins and containers.
"Jenkins helps us to save money delivering the software faster and increasing fault tolerance."
Solution & Results: We did a lot of research about which automation tools would be best for us to use, and in the end, we selected Jenkins. Our choice depended on the high level of customization it offers and because we can have the Jenkins server inside our architecture. This allows us to achieve a higher level of networking security; it isn’t necessary to open services to the world or share credentials to start automating.
One of the biggest challenges when changing an existing solution to a newer one is that you need to achieve similar functionality to the older one before migrating and then growing from that point onward. During this process, we learn a lot about plugins, Jenkins agents, and security. When we achieved that similar functionality, the second challenge was to get the developer’s acceptance. This step was one of the longest because we needed to help the developers migrate their apps to containers. Still, before that, we start creating more sophisticated implementations and start thinking in zero downtime deployments.
When we achieved an entire automated development process, we also started a new automation phase. Then we were able to see how we can also automate things related with security, branching and also infrastructure cost savings.
Key capabilities used:
Jenkins Git webhook plugins
Blue Ocean for dashboard visualization improvement
Jenkins implementation using helm charts
Custom agents containers to apply our own build and test stack
Excellent results:
fast recovery process from errors
faster feature delivery
10 times faster build and test process
big automation possibilities
strong security at user and networking level