Skip to content

Building Project Neev

Vivek Juneja edited this page Jun 19, 2015 · 3 revisions

Welcome to the project-neev wiki!

We refer to the Project Neev as a "Platform" to remove any confusion or disambiguation with other notations

Milestone 0

This milestone of Project Neev aims to focus on building the foundation of the overall Platform. The key focus areas of Milestone 0 are as following -

  1. Have a Continuous Integration and Deploy Pipeline for common Projects
  2. Have a Workload Deployment manager that can schedule deployments across wide range of Infrastructure
  3. Use commonly available Infrastructure options as the underlying layer of the Platform
  4. Provide common Project templates that contain Boilerplate implementation of an application like grails create-app. This must provide some basic scaffolding and provide an easy way for developers to start the project
  5. Have a Bakery that can be used to generate standardized Base images for all deployments
  6. Allow Developers to be able to test their applications locally, and trigger CI and CD Pipeline.
  7. Target Monolithic applications that leverages N-tier architecture for this Milestone 0

The reason for selecting the above focus areas is to provide a ready to use first iteration of the Platform to Development teams. This will increase confidence, demonstrate the overall idea and also provide a basis to test the Platform with early Projects.

Approach

To be able to accomplish this, and build system that can provide such functionalities, we took the following approach -

  1. We setup a Docker Image Registry that will be privately used internally within the development teams.
  2. We also setup a Jenkins CI Server in Master and Slave form that will become the orchestration agent of the build and deployment process.
  3. We setup a Bakery Server that will be used to create standardized Docker Images for the Projects. For any project that uses this Platform, it needs to use these standardized Docker Images for deployment.
  4. The Bakery Server generates the standard Docker images that will form the basis of any project in the organization. For example:- A Simple Java web Application running behind Apache Tomcat that uses MySQL database, will require standardize base images for Tomcat Application server, and MySQL database.
  5. All generated Base images are pushed to the Private Docker Registry
  6. We also provisioned a private GIT Repository that will hold all the artifacts that power the Platform including Dockerfiles, Jenkins Configuration, Sample Projects etc.
  7. Each Project that uses the Platform uses Dockerfiles for capturing the steps required to create a running instance of each entity in the Project. For example: For a 3 tier app that has a Web Server, Database and Application Server - there will be three different Dockerfiles, one for each tier. A Docker Compose YAML captures the dependency for an application.
  8. A Jenkins CI and CD Pipeline is created and configured to perform Docker build and Docker push for the post-Build tasks
  9. We setup an Apache Mesos cluster that uses Master and Slave deployment model. Apache Marathon is deployed as the Init Process for the cluster. We will use the Docker as the Containerize for applications deployed on the Marathon-Mesos.
  10. The Jenkins CI and CD Pipeline is configured to perform deployment via Marathon APIs.
Clone this wiki locally