JurnalJISAVol6No2Desember2023 DevOpsCICD CutFix

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/376834177

DevOps, Continuous Integration and Continuous Deployment Methods for


Software Deployment Automation

Article in JISA(Jurnal Informatika dan Sains) · December 2023


DOI: 10.31326/jisa.v6i2.1751

CITATIONS READS

0 267

2 authors, including:

Mochamad Hanif Rifa'i Istifarulah


Universitas Budi Luhur
2 PUBLICATIONS 0 CITATIONS

SEE PROFILE

All content following this page was uploaded by Mochamad Hanif Rifa'i Istifarulah on 03 January 2024.

The user has requested enhancement of the downloaded file.


JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

DevOps, Continuous Integration and


Continuous Deployment Methods for Software
Deployment Automation
Mochamad Hanif Rifa’i Istifarulah1*), Rizka Tiaharyadini2
1
Program Studi Magister Ilmu Komputer, Fakultas Teknologi Informasi, Universitas Budi Luhur
2
Jl. Raya Ciledug, Petukangan Utara, Kebayoran Lama, Jakarta Selatan 12260
Email: [email protected], [email protected]

Abstract - In the fast-paced landscape of software development, the need for efficient, reliable, and rapid deployment processes
has become paramount. Manual deployment processes often lead to inefficiencies, errors, and delays, impacting the overall
agility and reliability of software delivery. DevOps, as a cultural and collaborative approach, plays a central role in orchestrating
the synergy between development and operations teams, fostering a shared responsibility for the entire software delivery
lifecycle. Continuous Integration is a fundamental DevOps practice that involves regularly integrating code changes into a
shared repository, triggering automated builds and tests. Continuous Deployment complements Continuous Integration by
automating the release and deployment of validated code changes into production environments. The purpose of this research
is to create a software deployment automation system to make it easier and reliable for organizations to deploy software. In
conclusion, the results of this research show that by adopting DevOps, Continuous Integration, and Continuous Deployment,
organizations can achieve enhanced collaboration, shortened release cycles, increased deployment frequency, consistent
deployment, and improved overall software quality.

Keywords: DevOps, Continuous Integration, Continuous Deployment, Software Development, CI/CD

I. INTRODUCTION hampered and take longer. There are other problems


PT EOA Teknologi Internasional with the during deployment, namely inconsistent deployment
branding name EOA Tech is an entity of the EOA results between the development environment, staging
Group whose business is mostly as a gold producer environment and production environments, in the
with the gold brand issued being EOA Gold. EOA development environment all features work well and
itself is an abbreviation of Emas Optimasi Abadi. PT have been checked by Quality Assurance, but when
EOA Teknologi Internasional was founded in July deployed to the production environment the results of
2020 as a software development company engaged in testing in the development environment which show
software development or Independent Software all features are running well are often different when
Vendor (ISV). PT EOA Teknologi Internasional has deployed in the production environment, there are
been heavily involved in helping clients solve several features that do not work well in the production
problems with software creation solutions and environment, this causes inconsistencies in software
providing services for hosting these applications on deployment. Another problem that causes delays in
the company's servers. For cloud service providers, software release or deployment is that making changes
companies use services from Alibaba Cloud. to deployed software will often require both testing
With the increasingly rapid development of and planning, as well as coordination between the
software development and business demands that different involved departments [1], the deployment
require feature releases and software improvements to process carried out by the Operations division is
be carried out quickly accompanied by increasing required to be processed by the relevant team
frequency, consistent and automated methods for manually, it is indeed a time consuming task to
software integration and deployment are needed to develop, assure quality of and it is not desirable to add
minimize human error. To support this, at the even more costly overhead to this process [2]. Apart
organizational level, the Product Development and from that, there are cases where the software
Operation divisions at PT EOA Teknologi deployment process must be carried out at night so it
Internasional are required to work together and be able will not cause disturbance of applications that are
to coordinate and collaborate effectively. However, running and used by users during the day or during
work bottlenecks often occur, communication working hours. Because software deployment requires
problems and a lack of synergy between the Product intervention from the Operations division, the Product
Development and Operations divisions which cause Development division often had difficulties when
feature releases and software improvements to be

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

116
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

deploying software at night due to the availability of


the Operations division.
DevOps combines a number of approaches that
bring together developers and operations staff to create
software and services rapidly, reliably, and of higher
quality [3]. Based on this background, the research
objective is to apply DevOps, Continuous Integration Fig 1 Differences in Design, Coding, Testing and Deploy Iteration
and Continuous Deployment methods to automate in Agile and DevOps
software deployment, make it easier for companies to
deploy software, avoid work bottlenecks between the 2.2. DevOps
Product Development and Operations divisions and DevOps (development and operations) is a
minimize human error. conceptual study of the development and delivery of
software to infrastructure by taking a collaborative and
II. RESEARCH METHODOLOGY integrative approach between developers (Dev) and
2.1. Software Development Life Cycle (SDLC) software operations (Ops) [8]. DevOps is an
The systems development life cycle (SDLC) is a organizational approach with the aim of creating
methodology for designing, building, developing and collaboration, interaction and empathy across
maintaining information and process systems [4] functions and divisions [9]. The adoption of DevOps
By applying existing SDLC rules, you can is one example of a step to strengthen collaboration
provide an understanding of how an Information between IT teams, which is very much needed in
System (IS) can support business needs, design and software development and maintenance [10]
build a system according to user needs [5]. The SDLC The DevOps method is proven to be able to
project is a directive project, namely organized and reduce several development stages that existed in the
planned. SDLC project standards require release old method [11]. DevOps is able to shorten the time
phases and in each phase there will be a build and between software development and operation without
deploy process. The deploy stage indicates that code reducing the quality of the software itself [12].
development is complete. Then the code will be built DevOps reduces the gap between the development
and deployed in the Testing environment. If a bug team, operations team and application users allowing
appears in the Testing environment, the code must be to detect problems early. DevOps adoption can
fixed and then rebuilt and used in the Pre-production implement continuous development and more frequent
or Production environment. application releases to users [13]. Not only that,
Agile methodologies are the standard practices DevOps also changes software engineering processes
for modern-day industries, Agile software and practices to be faster which also increases the
development has a big focus on collaboration and the reliability, stability, resilience and security of the
self-organizing team [6]. Topics that are the center of production environment [14].
attention of Agile include its ability to reduce costs,
increase speed and quality, and provide motivation to 2.3. Continuous Integration (CI)
empower employees to support the development and [15] Continuous Integration is a method in
success of a company. Scrum is the most popular of software development, where code from each
the Agile frameworks [7]. In the Scrum framework developer is combined and built periodically to detect
there are Sprints and teams that will work in them. errors as early as possible. In general, the stages in a
After the Sprint is complete, the Demo is complete and CI system are as follows (triggered by push or commit
the Definition of Done (DoD) is met according to the commands):
user story, then each team will integrate their code and 1. Integrated
build for use in a staging or test environment. This is the stage where each developer integrates
Configuration management tools will be used to the codes or results of their work.
integrate the code. This is where the real problem 2. Compiled
arises. Fixing this issue will take a lot of time and Code is compiled into packages or executables
cause the release time to be off schedule. Problems in 3. Tested
the build and deploy phases are very common and Test executables manually or automatically
occur frequently in Agile work environments. This 4. Archived
also happens in application development at PT EOA Archive executable files, test results, and logs
Teknologi Internasional. DevOps is expected to be a during the process.
solution to this. 5. Deployed
Install or share build results.

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

117
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

conflicts between teams using different software on


the same infrastructure.

2.6. Docker Swarm


Docker Swarm is an orchestration tool
developed by Docker itself. Docker Swarm clusters
allow one to add an unlimited number of nodes, and
Docker allows one to run unlimited containers on
nodes, this provides full-scale testing that is close to
real conditions [18].
Docker Swarm provides clustering and an
orchestration mechanism and thus can deploy several
containers across different host machines. Docker
Fig 2 Continuous Integration Architecture System Swarm also provides a fault tolerance mechanism not
only by detecting failed containers on a host machine,
2.4. Continuous Deployment (CD) but also redeploying the same container on another
[16] Continuous Deployment (CD) is a software host machine [19].
release process that uses automated testing to validate
whether changes to the code base are correct and stable 2.7. Gitlab
for immediate autonomous deployment to a Gitlab is a web-based Git, repository manager
production environment. with a wiki, issue tracker and CI/CD pipeline. Gitlab
The difference between continuous deployment uses an open source license developed by Gitlab Inc.
and continuous delivery can be confusing due to the In the release of Gitlab 10.0, Gitlab took a big step
nomenclature. Both are abbreviated as CD and have beyond just code management, but expanded into
very similar responsibilities. Delivery is the beginning deployment and monitoring. Gitlab organizes and
of deployment. In delivery, there is a final manual modifies people's permissions according to their roles
approval step before production release. and can provide issue tracking access without granting
In the delivery stage, developers will review and permissions to large pieces of code, which is great for
merge code changes which are then packaged into teams and large companies with role-based
artifacts. This package is then moved to the production contributions. Gitlab supports CI for free and is very
environment where it awaits approval to be opened for useful for teams, besides that Gitlab also supports
deployment. In the deployment phase, packages are CI/CD automatically without human intervention [20]
opened and reviewed with an automated inspection
system. If the check fails the package is rejected. III. RESULTS AND DISCUSSION
When the checks pass, the package is automatically The software deployment automation system for
deployed to production. the Product Development division and Operation
Continuous Deployment can be a powerful tool division of PT EOA Teknologi Internasional consists
for modern organizations. Deployment is the final step of Gitlab as version control for developers to store
in the entire continuous pipeline consisting of source code, Continuous Integration (CI) Server and
integration, delivery and deployment. The true Continuous Deployment (CD) Server using the
experience of continuous deployment is automation to infrastructure provided by Gitlab, then Container
the level where code is deployed to production, tested, Registry as a place to accommodate the Docker Image
and automatically reverted when there are errors, or output from the Continuous Integration (CI) Server
accepted if there are no errors. using services from Alibaba Cloud, and Elastic
Compute Service (ECS) is the destination server for
2.5. Docker Container Continuous Deployment (CD). The server carries out
[17] A Docker container image is a lightweight, software deployment after pulling the Docker Image
standalone, executable package of software that from the Container Registry. Continuous Integration
includes everything needed to run an application (CI) Server and Continuous Deployment (CD) Server
(code, runtime, system tools, system libraries and when carrying out the integration or deployment
settings). process will provide output in the form of a running
Containers separate software from its process log which can be seen on the account
surroundings, for example the difference between dashboard on the Gitlab site and provide notification
development and staging, and are also a solution to via email if the Continuous Integration process or
Continuous Deployment process has failed.

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

118
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

1. Software Deployment Automation System


Prototype File Structure
The following is the file structure of the software
deployment automation system used to deploy
software in the PHP programming language using the
Laravel framework.

Fig 3 Software Deployment Automation System Design

Before the software deployment automation


process can be carried out, the ECS for the software
deployment destination must have Docker Engine and
Docker Swarm installed, as well as the reverse proxy
which in this study uses Traefik, must be configured
and ready to use.
The entire Continuous Integration and
Continuous Deployment process refers to scripts that
have been prepared by the Operations division and
have been submitted to the repository on Gitlab or
version control. These scripts are in the form of .gitlab-
ci.yml to manage the Continuous Integration and
Fig 4 Software Deployment Automation System File Structure in
Continuous Deployment flow on the Gitlab CI/CD PHP Laravel
infrastructure. Dockerfile, stack.yml, and other
supporting scripts required by the programming
2. Submit Code using Git CLI (Command Line
language in each application or repository.
Interface)
The prototype of this software deployment
In the following submit code, there are several
automation system was built using the YAML (Yet
commands that are executed on the macOS terminal,
Another Markup Language) programming language
namely looking at what branches are available in the
which is usually used to write configuration files.
repository, then pushing it to the selected branch.
YAML is a popular programming language because it
is human-readable and easy to understand.
Meanwhile, the application used for software
deployment automation testing uses the PHP
programming language and the Laravel framework,
because PHP and Laravel are popular programming
languages and frameworks, that are widely used by
developers.
The display and snippet of the script from the Fig 5 Submit Code Using Git CLI
software deployment automation system are as
follows:

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

119
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

5. Runner View in Continuous Deployment


Process
The following is a runner display when the
continuous deployment process is running. Gitlab
provides real time logs regarding the running process,
and if a failure occurs, the relevant developer will
automatically receive a notification email.

Fig 6 Result of Git Push


3. CI/CD Variable in Gitlab
In the following Gitlab CI/CD variable, these are
variables that will be used in the software deployment
automation process. The contents of these variables Fig 9 Continuous Deployment Runner
cannot be seen by developers or can only be seen by
developers who have maintainer access or highest 6. Application Display After Successful
access to the repository. With this, system Deployment Process
confidentiality is maintained even though many The following is the appearance of the
developers leave the repository due to resigning or application in a web browser, which is used for testing
moving to other projects. the software deployment automation system after
successful software deployment. This application can
be accessed by users using a web browser.

Fig 10 Application Display After the CI/CD Process is Successful

7. Snippet of .gitlab-ci.yml Script


The following is a snippet from the .gitlab-ci.yml
script, to set up Continuous Integration and
Fig 7 CI/CD Variable in Gitlab Continuous Deployment flows on Gitlab CI/CD
4. Runner View of the Continuous Integration infrastructure.
Process
The following is the runner display when the
continuous integration process is running, Gitlab
provides real time logs regarding the running process,
and if a failure occurs, the relevant developer will
automatically receive a notification email.

Fig 11 Snippet of .gitlab-ci.yml Script

Fig 8 Continuous Integration Runner

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

120
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

8. Snippet of Dockerfile Script


The following is a snippet from the Dockerfile
script, as a basic for building the output in the form of
a Docker Image.

Fig 12 Snippet of Dockerfile Script

9. Snippet of stack.yml Script


The following is a snippet from the stack.yml
script, as a basic for configuring a reverse proxy so that
applications that have been deployed can be accessed
by users. This script also arranges for copying
environment files which contain secrets related to
database access or other secrets for the application
which is deployed. This script also regulates which
Docker Image must be pulled for use in the software
deployment process.

Fig 13 Snippet of stack.yml Script

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

121
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

IV. CONCLUSION https://api.semanticscholar.org/CorpusID:1962


Software deployment that has been carried out
01845
using a software deployment automation system
makes the results of software deployment in the [3] Battina, D. S. (2021). The Challenges and
development environment, staging environment and
Mitigation Strategies of Using DevOps during
production environment consistent.
Because the software deployment process has Software Development. International Journal of
been automated, there is no longer a work bottleneck
Creative Research Thoughts (IJCRT), 9(1),
in the Operations division because the software
deployment process no longer requires human 4760–4765.
intervention after the software deployment automation
[4] Alhamidi. (2017). Membangun Sistem Aplikasi
system is configured at the start of creating the
repository/project. untuk Seleksi Calon Mahasiswa Undangan pada
By building a software deployment automation
Tingkat Sekolah Menengah Atas. Jurnal J-
system, human errors caused by the software
deployment process being carried out manually can be Click; Vol 3 No 2 (2016): J-Click.
minimized.
http://ejurnal.jayanusa.ac.id/index.php/J-
With the software deployment automation
system, the software deployment process can be Click/article/view/26
carried out at any time by the Product Development
[5] Syamsiyah, N., & Sesunan, M. F. (2018).
division, without having to ask the Operations division
to stand by and intervene. This leads to shortened Penerapan Metode System Life Cycle
release cycle, increased deployment frequency thus
Development Dan Project Management Body of
improve software quality.
Suggestions from the author for the development Knowledge Pada Pengembangan Sistem.
of this system in the future:
Ikraith-Informatika, 2(2).
1. In the future, this software deployment
automation system can be developed using [6] Trivedi, D. (2021). Agile Methodologies.
Kubernetes container orchestration with auto International Journal of Computer Science &
scaling.
2. Implement system monitoring using Grafana, Communication, 12(2), 91–100.
Prometheus and other supporting applications. [7] Naik, N., & Jenkins, P. (2019). Relax, it’s a
3. This software deployment automation system
game: Utilising gamification in learning agile
can be developed to create a High Availability
System. scrum software development. IEEE Conference
4. There needs to be good cooperation between the on Computatonal Intelligence and Games, CIG,
Product Development division and the
Operations division regarding the use of 2019-Augus.
DevOps, Continuous Integration and Continuous https://doi.org/10.1109/CIG.2019.8848104
Deployment methods.
[8] Jha, P., & Khan, R. (2018). A Review Paper on
REFERENCES DevOps: Beginning and More To Know.
[1] Bibi, S., Katsaros, D., & Bozanis, P. (2012). International Journal of Computer
Business Application Acquisition: On-Premise Applications, 180(48), 16–20.
or SaaS-Based Solutions? IEEE Software, 29, https://doi.org/10.5120/ijca2018917253
86–93. https://doi.org/10.1109/MS.2011.119 [9] Dyck, A., Penners, R., & Lichter, H. (2015).
[2] Touma, Y. (2019). An investigation of Towards Definitions for Release Engineering
Automating Software Deployment Using and DevOps.
Continuous Delivery Tools : A cost-benefit study https://doi.org/10.1109/RELENG.2015.10
in the case of multiple system instances.

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

122
JISA (Jurnal Informatika dan Sains) e-ISSN: 2614-8404
Vol. 06, No. 02, December 2023 p-ISSN:2776-3234

[10] CaTechnology. (2013). TechInsights Report : [18] Shichkina, Y. A., Kupriyanov, M. S., &
What Smart Businesses Know About DevOps. Moldachev, S. O. (2018). Application of Docker
September, 300. Swarm cluster for testing programs, developed
[11] Taryana, A., Fadli, A., & Nurshiami, S. R. for system of devices within paradigm of
(2020). Merancang Perangkat Lunak Sistem Internet of things. Journal of Physics:
Penjaminan Mutu Internal (SPMI) Perguruan Conference Series, 1015, 32129.
Tinggi yang Memiliki Daya Adaptasi Terhadap https://doi.org/10.1088/1742-
Perubahan Kebutuhan Pengguna secara Cepat 6596/1015/3/032129
dan Sering. Jurnal Al-Azhar Indonesia Seri [19] Ismail, B. I., Goortani, E. M., Karim, M. B. A.,
Sains Dan Teknologi, 5(3), 121. Tat, W. M., Setapa, S., Luke, J. Y., & Hoe, O.
https://doi.org/10.36722/sst.v5i3.372 H. (2015). Evaluation of Docker as Edge
[12] Erich, F., Amrit, C., & Daneva, M. (2017). A computing platform. 2015 IEEE Conference on
Qualitative Study of DevOps Usage in Practice. Open Systems (ICOS), 130–135.
Journal of Software: Evolution and Process, 00. https://doi.org/10.1109/ICOS.2015.7377291
https://doi.org/10.1002/smr.1885 [20] Peham, T. (2017). GitLab vs GitHub: What are
[13] Erich, F., Amrit, C., & Daneva, M. (2014). the key differences? The Ultimate Guide.
Report: DevOps Literature Review. https://usersnap.com/blog/gitlab-github/
Https://Www.Researchgate.Net/Publication/26
7330992_Report_DevOps_Literature_Review,
October, 1–27.
https://doi.org/10.13140/2.1.5125.1201
[14] Mohamed, S. I. (2015). DevOps Shifting
Software Engineering Strategy Value Based
Perspective. IOSR Journal of Computer
Engineering Ver. IV, 17(2), 2278–2661.
https://doi.org/10.9790/0661-17245157
[15] Priera, J. M., & Ganefi, R. T. (2017). Automatic
Deployment System Dengan Menggunakan
Metode Continuous Integration Di Kakatu.
Jurnal Ilmiah Komputer Dan Informatika.
[16] Pittet, S. (2021). Continuous Deployment.
Atlassian.
https://www.atlassian.com/continuous-
delivery/continuous-deployment
[17] Docker. (2018). What is a Container?
https://www.docker.com/resources/what-
container

JISA (Jurnal Informatika dan Sains) (e-ISSN: 2614-8404) is published by Program Studi Teknik Informatika, Universitas Trilogi
under Creative Commons Attribution-ShareAlike 4.0 International License.

123

View publication stats

You might also like