CI/CD atau panjangnya Continous Intergation dan Continous Delivery adalah budaya yang biasa diterapkan dalam pengembangan perangkat lunak. Tapi sejatinya masih banyak programmer atau developer yang belum familiar dengan CI/CD. Padahal CI/CD adalah salah satu praktik yang memungkinkan pengembang untuk fokus pada pemenuhan sayarat bisnis, kualitas kode, dan keamanan. Dan pipeline dari CI/CD ini sangat membantu perusahaan yang sering melakukan perubahaan pada aplikasi dengan proses perngiriman yang andal. Hmm.. ternyata banyak benefitnya ya.
Jadi bagaimana ya kira-kira mengimplementasikan CI/CD dengan baik? Hal ini akan kita bahas bersama 2 orang pembicara yang expert dibidangnya, yaitu Rendra Toro (CTO Perintis Teknologi Nusantara) dan Steven Lewi (Principal Engineer Home Credit Indonesia) pada Tech Talk 2021 Live dengan tema "Peningkatan Performa Software Delivery dengan CI/CD."
2. Group CTO - PT. Perintis
Teknologi Nusantara
● Jatuh cinta pada dunia programming
sejak 1989
● Pengalaman di dunia e-commerce
sejak 2009 (Berniaga.com,
tokobagus.com, olx.co.id dan wowbid.live)
● Intel Innovators untuk AI dan Machine
learning sejak tahun 2016
● GDG Bogor manager dari tahun 2012
3. Apa sih yang dimaksud
dengan kultur organisasi ?
● Menurut Cambridge Dictionary : “the types of attitudes and
agreed ways of working shared by the employees of a
company or organization”
● Menurut Business Dictionary : “the values and behaviors that
contribute to the unique social and psychological environment
of an organization.”
4. Nilai nilai kultur yang berbeda dengan
kenyataan nya :)
● Konon Work and life Balance
● Konon ada Kultur untuk terus berkembang
● Konon katanya harus team work
● Konon ada kebebasan berinovasi
● Konon kualitas adalah segalanya
5. DevOps sang Duta Kultur
"DevOps is those sets of cultural norms and technology practices that
enable the fast flow of planned work from development, through tests,
into operations, while preserving world-class reliability, operation, and
security."
6.
7. DevOps
● Dev dan Ops
Sebelumnya Developer dan team Ops (Operations) punya goal yang berbeda, Dev lebih
mementingkan kecepatan untuk deliver feature atau code nya, sedangkan team Ops fokus
pada stability platform nya.
● DevOps
Dengan bersatunya team Developer dan team Operations, kedua team
share goal yang sama yaitu bagaimana mencapai kecepatan delivery
code atau software yang bagus serta tetap menjaga stabilitas code di
area production.
8. Proyek Aristoteles di Google
Apa yang membuat team menjadi efektif ?
“Who is on the team matters less than how the team members
interact, structure of their work, and view their contributions.”
Dinamika team dan bagaimana kultur organisasi
berpengaruh pada dinamika di dalam team
● Psychological safety
● Budaya berkolaborasi dan berinovasi dengan peluang
bereksperimen
13. ● Dalam team saya informasi berjalan dengan aktif dan terbuka
● Dalam team saya kesalahan adalah kesempatan untuk belajar, dan tidak ada yang
dikambing hitamkan dalam kesalahan tersebut
● Dalam team saya semua memiliki tanggung jawab yang sama
● Dalam team saya berkolaborasi dan bekerja sama dengan team lain atau dari divisi
lain sangat dihargai dan disarankan untuk melakukannya
● Dalam team saya sangat terbuka dengan ide - ide baru
Sangat
setuju
Setuju Netral
Sedikit tidak
setuju
Tidak setuju
Sedikit
setuju
Sangat
tidak setuju
Cara validasi organisasi dengan Westrum
Organizational Culture
14. ● High Cooperation
● Messenger trained
● Risk are shared
● Bridging is encouraged
● Failure lead to inquiry
● Novelty implemented
Cara membentuk Generative Culture
15. ● Build trust and make psychological safety a Priority
● Support culture of Learning and Sharing
● Experiment often
● Make Monitoring and Recovery a Priority
● Brake down Silos
5 Cara membentuk Kultur DevOps dengan
performa tinggi
26. Code in “long isolated” branch
Multiple integration branch each environment
No verifications
Image by Freepik.com
Merge conflicts, big testing
scenario
Hard to maintain multiple branch, often
cause confusions
Potential issue, code is hard to read and
maintain
The Day Before CI/CD
Development phase
27. The Day Before CI/CD
Testing phase
Manual testing Testing at last-minutes
Image by Freepik.com
Multiple effort when code changed
frequently
Less time for fixing if issue found at
testing
28. The Day Before CI/CD
Deployment phase
Image by Freepik.com
Manual deployment
More effort, often leads to
down-time
Deploy at late night
Team already
exhausted
29. The Journey of Home Credit Indonesia
CI/CD implementation and challenges
31. CICD Pipeline Design
Merge / Pull Request Pipeline
setup unit test
integration test
sonar analysis
lint
…
junit report
Triggered
on
Merge
Request
Merge to
Main
branch
Code
Review
32. CICD Pipeline Design
Integration & Deployment Pipeline
setup
build
artifact
Triggered on
merged /
push
to Main
publish and version
tag
deploy dev deploy staging
deploy
production
automated
regress testing
post release
Need manual action
(eg: click)
full code
analysis
33. CI/CD Pipeline Implementation
Large number of services / repository
What are the challenges ?
Different kind of application tech stack
> 100 service Java
React (Javascript / Typescript)
Flutter
Android
iOS
34. CI/CD Pipeline with GitLab CI
Centralized pipeline repository
Backend service (Java)
Backend service (Java)
Backend service (Java)
Backend service (Java)
Frontend (Javascript/React)
Frontend (Javascript/React)
Project Repository
Mobile apps
Library, etc
include:
- project: ‘devops/cicd-template’
file: ‘java-project.yml’
include:
- project: ‘devops/cicd-template’
file: ‘javascript-project.yml’
include:
- project: ‘devops/cicd-template’
file: ‘android-project.yml’
.gitlab-ci.yml
.gitlab-ci.yml
.gitlab-ci.yml
GitLab CI
Pipeline Repository
include
37. The Day After CI/CD
What have we improved on?
Automated testing with Katalon
Small and frequent deployment
Reducing the amount of regress
testing time and effort
for each code changes
~20 deployment each day
(including dev)
Deploy earlier (evening) or
sometimes business hour
Development team are more
happy and less exhausted
High quality code
Average 90% coverage, Sonar
gate with A grade
38. The Benefits of CI/CD
Before CI/CD After CI/CD
Long feature branch Short-lived feature branch
Multiple integration branch Trunk (master) as main integration branch
No verification before integration Multiple verification before integration
Manual testing Automated testing
Last minutes testing Shift-left testing a soon as possible for faster
feedback
Manual deployment Automated deployment
Big and less frequent deployment Small and frequent deployment
Summary