In this POC To learn DevOps, I will explain the right way to get hands-on experience on DevOps and Cloud when you don’t have a chance to work on real-time projects.
Learning tools and technologies definitely help you to take your skills to the next level. And with the vast amount of online learning resources and little hard work, you can learn any tool or technology.
My intention is to give you an overall idea of the entire application involved in a DevOps practice by creating CI/CD workflows and deploying an application on the AWS cloud.
In this series of guides, I will walk you through the entire CI/CD process
POC To learn DevOps [ Project Petclinic ]
Here is the scenario we are are going to assume.
A company named Scriptcamp wants to build a Pet Clinic application for its client.
The high level requirements for the project are
- The application should be built on the Java Spring MVC framework.
- The application should be hosted on Cloud with the following.
- High availability.
- Autoscaling for applications.
- Highly available database.
- The entire build and deploy process should be automated.
Application Architecture & Approval
Based on the client’s requirements, the application architect has designed the application architecture.
As per the client’s organizational standards, the architecture should be approved by its Enterprise architects and Enterprise security teams.
As per the process, the Application architect sets up a meeting with both Enterprise architects and Enterprise security teams to explain the architecture.
Finally, the architecture gets the signoff with few suggestions from the Enterprise teams.
And the next phase is to start the development.
Building CI/CD For Petclinic Application
Scriptcamp CTO wants the Petclinic team to follow all the DevOps principles for Pet Clinic application development and deployment.
So the project manager for the Petclinic application asks the team to come up with a list of high-level CI/CD tasks.
Following are the high level tasks that the team has come up with.
- Understanding application architecture & requirements.
- AWS cloud infrastructure design as per standard security practices.
- Setting up CI/CD infrastructure using Jenkins
- Setting up Artifact repository using Nexus
- Setting up Sonarqube for Static Code Analysis
- Setting up Hashicorp vault to store Secrets
- Setting up Prometheus for application monitoring.
- Branching strategy & Standard Practices for Development
- Creating Jenkins Pipeline for Continuous Integration
- Creating Pipeline for AMI creation using Packer & Ansible – The AMI contains the following
- AWS logging agent to push logs to cloudwatch
- Java code with Prometheus agent to capture application metrics.
- Develop Terraform Code to create Amazon RDS for the backend database.
- Develop Terraform code to Deploy autoscaling Group & Loadbalncer.
- Jenkins Pipeline for Code Deployment
- Documenting KPIs for Infrastructure and application monitoring.
- Monitoring and logging dashboards for applications and infrastructure.
- Setting up Alerting using Prometheus for application issues.
- Documentation of Design, workflows, and Code.