A client of ours was undergoing a significant platform upgrade. The client migrated their JVM based payment application to a modular containerized service based architecture built with Spring Boot and needed to adopt modern DevOps infrastructure principals to quickly scale and deploy services.
Scalability was critical because our client needed to be able to elastically scale its services without consuming precious engineering resources. Our client runs its entire cloud-based IT infrastructure on Amazon Web Services (AWS). As a startup, they we’re very meticulous about where we invested our time. We focused on automation through continuous delivery and leveraging open-source tools such as Jenkins, Chef, Packer and Docker. We didn’t want to reinvent solutions to already-solved foundational infrastructure problems so we built and maintained all environments through our custom AWS CloudFormation templates. This gave us the luxury of version-controlling their stack including but not limited to network, security groups, and IAM policies. This allowed for seamless, exact network duplication for on-demand development and staging environments. The creation of environment resources is completely automated, so developers could focus on software rather than managing servers.
Business Challenge Story
DevOps practices enabled development efficiency
Our DevOps practice philosophy is about continuous delivery: building, testing, and releasing far more frequently, and ensuring that our client can release reliably at any time. As a result of transforming their processes, everyone became an owner. Everyone was responsible for the end goal. Developers now have a commitment to higher quality code, and infrastructure and operations felt responsible for incidents and ensuring that they close the loop. There are no more silos of information and work, and teams readily share successes and failures with one another. Streamlining the DevOps process means teams are more autonomous. DevOps processes that are supported with Docker enable developers to produce self- contained applications that are delivered in a fast, repeatable way. Using Docker containers with Chef allows us to an infrastructure-as-code approach, making management and deployment transparent, seamless, and fast.
Using containers and a microservice architecture together with automation enhanced their cloud capabilities. Microservices are scalable and reusable, while containers supply efficient resource management. Both microservices and containers can work independently, but it has become clear that merging them has improved runtime frequency, deployments and overall application efficiency.