Projects

Infrastructure for hosting web applications

For any application in order to run successfully, it needs a resilient infrastructure in cloud or on-premises.

Provision of infrastructure in any cloud environment is done by using several IAC tools like Terraform, AWS CloudFormation (for AWS), Azure Resource Manager (ARM) templates (for Azure) ... etc.

Of all the available tools Terraform is cloud agnostic tool which means it can deploy resources to any cloud unlike CloudFormation and ARM templates which can only use to provision resources in their respective environment.

Advantages of IAC:

  • Versioning of Infrastructure is possible.

  • Reusability of templates.

  • Reduce manual & configuration errors.

In this Project, using the terraform templates which were written in Hashi Corp Configuration Language (HCL), deployed the resources in AWS cloud to host the web application and maintained the version of infrastructure.

The deployed resources are as follows:

  • VPC

  • EKS Cluster

To deploy these two above resources, the following templates are utilized:

  • provider.tf

  • eks.tf

  • vpc.tf

Click the below button to view the template code.

Engineered the pipeline for developing the Java web application.

The Tools used are as follows:

  • Jenkins - CICD implementation.

  • SonarQube - Source code Analysis.

  • Maven - Artifact creation and unit testing.

  • Amazon S3 - Artifact storage.

  • Nexus - Artifact storage.

This pipeline includes the following tasks:

  • fetching the source code from GitHub repository.

  • Building the artifact using Maven.

  • Unit testing after creation of artifact.

  • Check style analysis was utilized.

  • Source code Analysis using SonarQube Server / Sonar Cloud and Quality gates are also utilized.

  • Uploading the generated artifact into S3 or Nexus.

Click the below link for the pipeline script of this project.

Continuous Delivery of Java web application.

CICD for containers

Continuous Integration and Continuous Delivery of Containers.

Why Docker images?

Docker is a tool which is used to isolate the service/application and is widely used in microservice architecture.

Docker containers provide complete isolation of the web application which is an advantage over normal process. So, packaging the web application of type Nodejs or Java or any other type in Docker images is necessary in today's world.

Docker allows us to update on 1 microservice while the rest of them working/running as usual (without stopping them). This is Loosely coupled architecture.

Instead of storing the generated artifact in S3 or Nexus. The same artifact is utilized to create the Docker image.

This project is all about Continuously building docker images and deploying the newly generated image from Docker Hub / Amazon ECR to Kubernetes cluster.

There are several tools are available in the market for Container Orchestration like Docker Swarm, Kubernetes, AWS EKS & ECS, Mesosphere Marathon, Azure container service, Google container engine, OpenShift, Nomad...

In this project, below tools are utilized:

  • Docker - For creating Docker images.

  • Docker Hub or Amazon ECR - For storing the Docker image.

  • Kops in AWS - Kubernetes Cluster.

  • Helm charts - For deploying the container / pod in K8 cluster.

Click the below link for the pipeline script used for this project: