Friday, June 7, 2024

 CI/CD FRAMEWORK



This diagram effectively shows how code flows from development to deployment, highlighting the tools and environments involved in a modern software development process. It emphasizes the automated, seamless transitions between stages, facilitated by the CI/CD pipeline, which ensures that software is developed, tested, and released systematically and with reduced manual intervention.

The CI/CD Framework

In building pipeline, the first thing you need is a CI/CD tool. They are a lot of them but the most popular one is Jenkins. Jenkins is the tool popularized the devops movement and has become the defector standard.

So what is Jenkins? Imagine it as some sort of magical universe remote control that can talk to many different services and tools and orchestrate then. On it own, Ci/CD tool like Jenkins us useless, but it has become powerful as it plus into different tools and services.




The CI/CD tool can automate the tasks of checking in and checking out source code and collaborating across members. Not bad? But how can you make this into a working application so billions of people can use and appreciate it?

 

SOURCE CONTROL MANAGEMENT TOOL

The best (and probably the easiest) way to verify that your CI/CD tool can perform some magic is by integrating with a source control management(SCM) tool. Why do you need source control? Suppose you are developing an application. Whenever you build an application, you are programming- whether you are using Java, Python, C++, Go, Ruby, JavaScript, or any of the gazillion programming languages out there. The programming codes you write are called source codes. In the beginning, especially when you are working alone, it's probably OK to put everything in your local directory. But when the project gets bigger and you invite others to collaborate, you need a way to avoid merge conflicts while effectively sharing the code modifications. You also a need a way to recover previous sections and the process of making backup copying and pasting gets old. You (and your team mates) wants something better.






Excellent! You can check out the code and commit your changes to the source control, and you can invite your friends to collaborate on the source control development. But you haven't yet built an application. To make it web application, it has to be compiled and put into a deployable package format or run as an executable. No matter which build tool you decide to use, all build automation tools have a shared goal: to build the source code into some desired format and to automate the task of cleaning, compiling, testing and deploying to certain location. The build tool would differ depending on  your programming language.



Everything is good, right? But where can you deploy it?

Web application server

So far, you have a packaged file that might be executable or deployable. For any application to be truly useful, it must provide some kind of a service or an interface, but you need a vessel to host your application.

For a web application, a web application server is that vessel. An application server offers an environment where the programming logic inside the deployable package can be detected, render the interface, and offer the web services by opening sockets to the outside world. You need an HTTP server as well as some other environment (like a virtual machine) to install your application server. For now, let's assume you will learn about this along the way (although I will discuss containers below).






 CODE AVERAGE TESTING

Implementing code test pieces can be another cumbersome requirement, but developers need to catch any errors in an application early on and improve the code quality to ensure end users are satisfied. Luckily, there are many open source tools available to test your code and suggest ways to improve its quality. Even better, most CI/CD tools can plug into these tools and automate the process. There are two parts to code testing: code testing frameworks that help write and run the tests and code quality suggestion tools that help improve code quality.

There are two parts to testing, Code testing framework that helps and run tests and code quality suggestion tools that help improve code quality.




 

Code quality tool


CONTAINERS

You can host your application server on virtual machine or a server, but containers are popular solution. What are containers? The short explanation is that a VM needs the huge footprint of an operating system, which overwhelms the application size, while a container just needs a few libraries and configurations to run the application. There are clearly still important uses for a VM, but a container is a lightweight solution for hosting an application, including an application server. Although there are other options for containers, Docker and Kubernetes are the most popular.

Name

License

Docker

Apache 2.0

Kubernetes

Apache 2.0

Infrastructure as a Code Tools/Configuration tools

Our DevOps pipeline mostly focused on collaboratively building and deploying an application, but there are many other things you can do with DevOps tools. One of them is leveraging Infrastructure as Code (laC) tools, which are also known as middleware automation tools. These tools help automate the installation, management, and other tasks for middleware software. For example, an automation tool can pull applications, like a web application server, database, and monitoring tool, with the right configurations and deploy them to the application server.





 




 

No comments:

Post a Comment

  PROMETHEUS AND GRAFANA A robust performance monitoring and alerting stack is crucial to service reliability. Cloud Native Computing Foun...