As a part of the DevOps coursework from CSC 519 at North Carolina State University, a Continuous Delivery pipeline was built. Continuous Delivery is essentially a strategy that enables organizations to deliver new features to users as fast and efficiently as possible via an automated software production line. This project covered building, testing, and deployment of a pre-developed projects into a cloud environment using configuration management tools, and build tools from an academic point of view. There are some limitations to what was achieved in this project, due to its academic nature, but nevertheless it is one of the most fascinating projects I've had the chance to work on.
Several tools and technologies were utilized for the project. Jenkins was used for building the applications in consideration - an enterprise Java system (iTrust) and a NodeJs web application (Checkbox.io). Ansible was primarily used for configuration management of virtual machine instances, both local and on the cloud, during the different milestones of the project. Prometheus is an open source software used for storing the time series data of monitoring and analysis events from the individual instances deployed on the cloud. While Prometheus was used for storage of the data, Grafana was used to visualize the data in an easy to understand format. Finally, Docker along with Kubernetes to deploy the Checkbox.io service on three nodes on AWS to make it resistant to node failures.
The project has been divided into the following three milestones
Poseidon the Greek God of Sea, is often viewed as bad tempered, and moody Olympian God. I never had a project name for this one, until I started working on Odyssey. But having already worked on Poseidon(this project) I knew what goals were achieved and how rocky the 'seas' were while achieving the goals. The milestones had several different challenges, moreover the pipeline created had several fluctuations generated, instability manually introduced for testing and creating a character that was moody in general with the fuzz testing introduced. So considering the overall character of the project, the name 'Poseidon' seems appropriate. Seeing that usually Poseidon is generally taken into consideration with a negative connotation, I wanted to not only give a positive connotation, but also highlight his presence in mythology.