Use Case Of DevOps Tools In Real Time
Let say ,John has a brilliant concept for a business, and he plans to offer its services through online/Internet. He is now ready to turn this idea into a reality by developing the necessary code.
The initial step involves transforming the concept into a prototype by writing a piece of code in any programming language. After completing the coding phase, the next step is to access the application by entering localhost on the user’s machine. If it functions properly, the subsequent step is to share the developed product or application with the wider audience. He purchased a domain, linked it to an IP, and offered his business services on the internet.
The next stage involves setting up the application for sharing online. John’s aim is to allow users to access his application online by hosting it on either a physical server in a data center or a virtual server in the cloud. The key requirement is that the machine must be constantly running, as any shutdown would result in loss of access. Finally, John installed his application on the server.
· To host any application on server, it needs few requirements.
· Need to install application runtime environment and required libraries to support your application setup on servers. |
Execution of Devops Tools
John noticed his business was growing rapidly, prompting him to recruit additional developers for handling his application’s source code.
Using Git and GitHub, John and his team can efficiently make code changes and transfer code to the production environment through manual code building and Manual Testing. code build tools like (Maven, Graddle etc).
1. GIT
Git is the Version control / Source code management tool.
Functionality: Track the entire code changes
Points to be noted:
- This tool helps multiple developers to work together.
- It supports Non-linear development.
- Every developer has the entire code copy over their local machines.
- If any one of those developers can modify code or code changes it reflected can noticed by other developers as well by this, they have regular communication and good idea about changes they did.
2.GITHUB
It is a cloud-based platform which acts as a central repository for your source code /
Application code (For hosting the source code).
Functionality: It is used for storing, tracking, and collaborating on Projects.
John and his team found it challenging to constantly move their code for each modification, build, and test, so he decided to introduce CI-CD tools like Jenkins, Gitlab CI-CD, etc. John and his team automate the process of building, testing, and deploying source code to production/targeted environments with minimal human intervention using a pipeline. This allows for faster feature delivery compared to traditional methods.
3. CI – CD Tools = (Continuous Integration – Continuous Delivery)
Jenkins, Gitlab CI-CD , Code Ship, GitHub Actions etc
Functionality: CI/CD tools can help a team “automate their development, deployment, and testing”.
John discovered that his application was not functioning properly on different systems due to missing dependencies and library files. He realized that he needed to configure them the same way as in the previous deployment. John foresaw that adding new features would require additional files to be configured on all systems, making manual configuration complex. To streamline this process, he decided to automate dependency configuration using containers technology.
4. CONTAINERIZATION TOOLS
i ) DOCKER
Functionality: Docker is a technology that enables rapid building, testing, and deployment of applications by packaging them into containers containing
(similar to a virtual deployment) all necessary components like libraries, tools, code, and runtime.
Points to be noted:
- Containers are utilized to bundle the application and its dependencies into an image. This image allows the application to be executed on various systems without concerns about runtime dependencies.
- By creating a docker file, we can define the dependencies needed for an application. we can build a docker image during the build stage by Using the docker file. By utilizing the docker image, we can easily run the application on any machine by using the docker run command.
John and his team utilized Docker to automate application deployment within containers. Initially, everything ran smoothly but they later noticed the application becoming overloaded with high traffic. To address this issue, they decided to scale up the application during peak times to distribute the workload across multiple nodes. This scaling down process is automated as well. Kubernetes was used for managing this scaling process. (Scaling refers to containers are spin up when the users/traffic are getting increased, and the containers are destroyed when the users/traffic gets reduced.)
ii) KUBERNETES (k8S)
Functionality: Kubernetes is an open-source container orchestration engine (Container management system) for automating deployment, scaling, and management of containerized applications.
Points to noted:
If you are unfamiliar with “DevOps” or “IT Domain“, take a look at “Traditional deployment, Virtual deployment, Container deployment“. These deployments help you to have a better understanding of containerization and how it is deployed.
Difference between Docker and Kubernetes ?
Docker is for containerizing applications, while Kubernetes handles containers for multiple container runtimes.
One of his teammates attempts to expand the application within other regions but founds that configuring the underlying infrastructure remains a complicated task. Setting up the application in a new region requires replicating the same settings for the server, including the operating system, storage, docker, and Kubernetes packages. After a lot of research, they found a way that they can automate this whole infrastructure set up by using the infrastructure as code tools like (Terraform ).
5. TERRAFORM: Infrastructure as Code (Iac)
Functionality: It is an open-source tool, which is for “provisioning, managing, and deploying infrastructure resources”. (Infrastructure refers to both physical and virtual machines). Terraform helps to automate the provisioning the infrastructure resources.(Aws resources like Instances, vpc’s, subnets etc)
Points to noted:
Both the tools have interconnected/overlapped each other. Terraform handles IT infrastructure through code while Ansible automates tasks like provisioning and deployment, making it ideal for configuration. Use Terraform for setting up infrastructure and Ansible for configuring it.
Everything has been going smoothly up to this point. The team is interested in monitoring the application’s performance and how it is using infrastructure resources, such as RAM consumption and required storage. Therefore, they set up infrastructure metric tools (Grafana, Prometheus) to track this data and resource usage.
6. GRAFANA/ PROMETHEUS
Functionality: It is an open-source tool which is used for data visualization, monitoring, analysis. provides charts, graphs, and alerts for the web when connected to supported data sources.
Everything looks good. Setting up and managing, monitoring application on different environments with using different tools on each stage defines devops methodology.
Devops Methodology: Code -> Build -> Test -> Release -> Deploy -> Operate -> Monitor -> Feedback —> Cycle repeats from Code onwards.
The cycle starts from Code and continues. You can observe the devops logo that symbolizes an endless loop from the code phase to the feedback phase, constantly looping in that stage.
Thank you 🙂 !