Mengenal GitLab

Jika kalian kenal dengan Git dan GitHub, pasti tahu juga dengan GitLab. GitLab bisa dibilang salah satu alternatif dari GitHub. Semenjak GitHub diakuisisi Microsoft, banyak developer yang memindahkan repositorinya ke GitLab. Banyak alasan, salah satunya karena kekhawatiran perombakan aturan ekosistem GitHub yang membatasi fitur-fitur untuk pengguna gratisnya. Apakah benar? Coba kalian rasakan kira-kira apa yang berubah dari GitHub sebelum dan sesudah diakuisisi Microsoft. Tahan jawaban kalian karena kita tidak akan membahas soal itu, tapi soal rivalnya yaitu GitLab.

Mengenal GitLab
Antarmuka website offisial GitLab

Definisi GitLab


Kita tahu GitLab itu sejenis GitHub, tapi apa sih sebenarnya definisi GitLab itu? Jawabannya ada di laman offisialnya sendiri. Pihak GitLab memberikan definisi seperti ini:

“GitLab is a single application for the entire software development lifecycle. From project planning and source code management to CI/CD, monitoring, and security.”
Menariknya, sebelumnya terdapat tulisan besar “A full DevOps toolchain”, dimana kata “chain” setelah “tool” dicoret lalu dibubuhi tanda bintang. Lalu di bawahnya ada tanda bintang dan terdapat tulisan “No assembly required”.

Oke, kita mendapatkan tiga kata:“DevOps”, “toolchain”, dan “CI/CD” untuk kita cari tahu artinya.

Apa itu DevOps? 


Banyak ragam pengertian DevOps di internet, salah satunya coba kita ambil dari Wikipedia yang sudah ditranslasikan ke dalam bahasa Indonesia.
“DevOps adalah seperangkat praktik pengembangan perangkat lunak yang menggabungkan pengembangan perangkat lunak (Dev) dan operasi teknologi informasi (Ops) untuk mempersingkat siklus hidup pengembangan sistem sambil memberikan fitur, perbaikan, dan pembaruan yang sering dilakukan secara selaras dengan tujuan bisnis”
Apakah kalian sudah memahami atau memiliki gambaran tentang DevOps?

Jika belum, kita coba lagi mencari pengertian yang lebih mudah. Dalam situs devops-indonesia.com, di akhir tulisan terdapat kesimpulan dari tulisan berjudul “Memahami Arti DevOps Secara Tepat dan Menyeluruh”. Kesimpulan yang ditulisnya:
“DevOps merupakan suatu pendekatan yang menggabungkan Dev dan Ops agar lebih mudah, cepat, dan terkontrol dalam memproduksi atau mengembangkan sistem dalam skala besar.”

  • Dev adalah singkatan dari Developer atau pengembang. Karena DevOps adalah sebuah konsep, maka Dev dalam pengertian konseptual bisa berarti “semua orang yang terlibat dalam pengembangan produk” yang mencakup produk, QA, dan jenis lain dari disiplin ilmu. Sementara arti 
  • Ops ditujukan kepada insinyur sistem, administrator sistem, staf operasi, insinyur rilis, DBA, network engineer, profesional keamanan, dan lain-lain.  

Pengertian Dev dan Ops di atas masih diambil pada halaman yang sama pada tulisan yang berjudul “Memahami Arti DevOps Secara Tepat dan Menyeluruh” di devops-indonesia.com. Pengertian yang diberikannya cukup mudah dipahami, bahwa DevOps itu adalah metode untuk mengembangkan dan memproduksi suatu sistem dalam skala besar secara cepat, efisien, dan terkontrol.

Apa itu Toolchain?


Toolchain jika dipisah, terdiri dari kata “tool” dan “chain” arti secara harfiah “rantai alat”. Apa sih maksudnya? 

Disadur dari laman Wikipedia, pengertian toolchain adalah seperangkat alat pemrograman yang dieksekusi satu per satu secara berurutan sehingga output dari proses tool pertama akan diinputkan ke tool kedua, dan demikian seterusnya sehingga membentuk sebuah rantai alat produksi. Namun, pengertian toolchain ini juga bisa berarti untuk seperangkat alat yang saling terkait satu sama lain tanpa perlu dieksekusi secara berurutan. Apakah kalian bisa memahami? Jika belum mungkin tambahan informasi di bawah ini bisa memberikan gambaran tentang toolchain. 

Toolchain pada pengembangan software yang sederhana terdiri dari:
  1. compiler dan linker (untuk mengkompile source code program menjadi executable program)
  2. library (menyediakan interface ke sistem operasi)
  3. Debugger (digunakan untuk menguji program sekaligus mencari debug atau kesalahan kode program)

Tentu pada pengembangan software yang lebih besar toolchain yang digunakan akan lebih kompleks lagi.

Apa itu CI/CD?


Ada tulisan yang cukup menarik soal CI/CD yang ditulis oleh David HS di Medium. Dia menulis CI atau Continuous Integration di GitLab dikenal sebagai Test dan Build. Artinya setiap kode sumber yang di push, maka akan terjadi proses Test dan Build baik dengan cara manual atau pun otomatis. Pengertian ini mungkin masih belum cukup memberikan gambaran luas tentang CI. Baiklah, kita akan cari pengertian lain lagi. 

CI adalah proses integrasi dari mulai testing, berlanjut ke building, hingga deploying. Ini adalah pengertian yang ditulis oleh Rizki Mufrizal yang telah disadur pada laman tulisan github-nya. Rasanya sudah cukup memberikan kita gambaran tentang Continuous Integration ini.

Selanjutnya, CD adalah bagian dari proses CI, dimana CD ada dua  jenis, yaitu (masih dalam laman tulisan dari Rizki Mufrizal):
  1. Continuous Delivery adalah proses deployment yang dijalankan secara otomatis mulai dari testing, building hingga deployment ke server production.
  2. Continuous Deployment adalah sama seperti Continous Delivery hanya saja saat masuk ke tahap deployment dilakukan secara manual. Biasanya yang melakukan deployment ke server production adalah seorang manajer IT yang tertinggi untuk memastikan aplikasi berjalan lancar.

Tiga istilah dalam definisi GitLab sudah dijelaskan di atas. Apakah kalian sudah mulai mengenal GitLab ?

Sederhananya, GitLab adalah rumah untuk repositori server aplikasi yang sedang kalian kembangkan secara DevOps hingga ke tahap produksi dengan menggunakan tool git untuk menambah, menghapus, dan merevisi kode sumbernya dari repositori lokal di komputer kalian. 

Demikian awal perkenalan kita dengan GitLab, semoga bermanfaat.