MULTISHOP is a big conglomerate and has various locations in both warehouses and stores world wide. They currently have a legacy web Application written in Java and hosted by their private server.
It usually takes 5hrs to update their application and updates are manual, which incurs a lot of downtime and is affecting their business because clients get locked out which gives their competitors upper hand.
Your Task is to migrate this Application into the cloud and implement Devops Practices to their entire Software Development Life Cycle
You should show concepts that implement Plan --Code--Build--Test--Deploy--Monitor
TASK A: Version Control The MultiShop Project
Plan & Code
Your Project Supervisor will provide you the link to access the private repository where the code currently lives. and You can clone this repo and make it yours with the same repository name.
(You can only use GitHub)-
1) Set up 2 repos, a Build Repo to store all the code base and a Deployment Repo to store all your deployment scripts and name them accordingly as you see below(in green):
- Build repo : MultiShop_Build
- Deployment repo: MultiShop_Deploy
2)Git branching Strategy for MultiShop_Build
- main
- release: eg release/release-v1
- feature: eg feature/feature-v1
- develop
3)Git branching Strategy for MultiShop_Deploy
- master
- feature eg feature/feature-v1
- develop
TASK B Acceptance Criteria:
You need to host the code on a static website (s3 bucket) so as to avoid interruption of the main server. then go ahead and fulfil Task C and the rest
TASK C: Set up your Infrastructure
1. Set up your Environment: DEV, QA and PROD
Provision 3 Apache Tomcat Servers (You can only Use Terraform with preinstalled script)You can host this use any cloud provider - Aws, Google Cloud, Azure but AWS is preferred
i. DEV - t2micro -8gb
ii. QA(Quality Assurance) - T2Large-20gb
iii. PROD - T2Xlarge-30gb
Linux Distribution for Apache Tomcat Servers: Ubuntu 18
2. Set up your Devops tools servers:
(These can be provisioned IAC Tool, and hosted on only ubuntu 22, I also expected this to be done with a preinstalled script)
1 Jenkins(CI/CD) t2 xlarge 20gb
1 SonarQube(codeAnalysis) t2medium 10gb
1 Artifactory Server T2xl - 10gb
TASK D: Set Up Automated Build for Developers
The Developers make use of Maven to Compile the code
a. Set up a C/I Pipeline in Jenkins using Jenkinsfile
b. Enable Webhooks in github to trigger Automated build to the Pipeline Job
c. Help the developers to version their artifacts, so that each build has a unique artifact version
Pipeline job Name: MultiShop_Build
Pipeline should be able to checkout the code from SCM and build using Maven build tool, Provide code analysis ,codecoverage with sonarqube and upload artifacts to artifactory, Send slacks to the team and provide versioning of artifacts
Pipeline should have slack channel notification to notify build status
i. Acceptance Criteria:
Automated build after code is pushed to the repository
1. Sonar Analysis on the sonarqube server
2. Artifact uploaded to artifactory
3. Slack Channel Notification
4. Each artifact has a unique version number
5. Code coverage displayed
TASK E: Deploy & Operate (Continous Deployment)
a. Set up a C/D pipeline in Jenkins using Jenkinsfile
create 1 CD pipeline jobs for each env (Dev, QA, Prod)
Pipeline job Name:eg MultiShop_Dev_Deploy, MultiShop_QA_Deploy, MultiShop_Prod_Deploy
i. Pipeline should be able to deploy any of your LLE (Dev, Qa) or HLE (Prod )
You can use DeploytoContainer plugin in jenkins and deploy to either Dev, Qa or Prod
ii. Pipeline should have slack channel notification to notify deployment status
iii. Deployment Gate
1. Acceptance criteria:
i. Deployment is seen and verified in either Dev, Qa or Prod
ii. Notification is seen in slack channel
TASK F: Monitoring
a. Set up Continuous monitoring with Datadog by installing Datadog Agent on all your servers
Acceptance criteria:
i All your infrastructure Sever metrics seen on Datadog Server
ii Tag all your servers on the Datadog dashboard
TASK G: Dockerize Application
a. Automate the deployment of the Application into a docker image and write a deployment file and service file for it to be be deployed into K8s Cluster:
Acceptance Criteria:
i. Deploy new artifact from dockerhub to Kubernetes
ii. App should be viewable in Grafana Dashboard
- Each Team/Person is to work independently with their supervisors to complete this project.
- Every Task is expected to be completed within 1 week
- We are adopting Agile style so each Team/Person is expected to have 15mins Daily Stand up meetings with your supervisors or in some cases the Lead Architect where you will discuss your progress(what you did yesterday, what you will do today, How far you are in achieving your goals and give general updates)
- This will be a 1 week Sprint After which you will have a Demo to Present all your accomplishments.
- Please Note: DOE(Devops Engineers) and Architects from other establishments have been invited to your Demo so be prepared