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).
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 |
Apache 2.0 |
|
Apache 2.0 |
Infrastructure as a Code Tools/Configuration tools
No comments:
Post a Comment