Daftar Isi ⇅
show
Continuous integration merupakan metode pengembangan perangkat lunak yang menawarkan kemampuan integrasi sistem, uji coba fungsionalitas, serta peranan penamaan aplikasi pada lingkungan produksi secara otomatis. Melalui metode ini, source code atau kode sumber dari beberapa programmer/pengembang yang tentunya berbeda-beda dapat diintegrasikan dengan mudah.
Setelah diintegrasikan, sistem akan melakukan pengujian fungsionalitas untuk memastikan kelayakan dari kode tersebut. Metode ini mendukung pengembangan aplikasi yang dapat dilakukan secara cepat dan memastikan aplikasi berjalan dengan baik tanpa harus menghadapi berbagai permasalahan dari konflik antarkode para pengembangnya dan risiko galat yang terjadi pada saat tahap deployment.
Jika Anda adalah seorang programmer atau setidaknya sudah turun langsung ke lingkungan industri pengembangan perangkat lunak, maka kemungkinan besar Anda sudah tahu ke mana arah metode pengembangan ini menuju. Ya, sistem repository, versioning, atau Version Control System seperti Git. Git memungkinkan kita untuk melakukan integrasi berkelanjutan tanpa harus melakukan compiling atau deployment ulang untuk memastikan kode baru terintegrasi dengan perangkat lunak yang sedang dikembangkan.
Melalui Git, programmer dapat mengajukan perubahan, menyamakan versi aplikasi dengan programmer lain, hingga memberikan komentar dan catatan mengenai pekerjaan yang mereka ajukan. Tidak harus dilakukan deployment yang harus menyatukan pekerjaan dari banyak programmer agar perubahan yang dilakukan oleh semua tim berjalan dengan baik. Belum lagi ada risiko kode tidak berjalan sebagaimana mestinya karena setiap Environment pengerjaan seluruh programmer berbeda-beda. Dapat dikatakan bahwa Continuous Integration adalah napas dari tools versioning control system seperti Git yang kini telah menjadi standar industri pengembangan perangkat lunak.
Pelaksanaan Continuous Integration
Secara praktik, pengembangan perangkat lunak dengan menggunakan metode continuous integration tentunya akan dilaksanakan dalam sebuah tim. Anggota dalam tim tersebut melakukan proses integrasi secara berkala terhadap bagian tugas yang telah diberikan. Hal ini mencegah terjadinya down time dari proses perakitan keseluruhan pekerjaan dari seluruh anggota tim yang memiliki versi serta environment pengembangan yang berbeda-beda pula.
Proses integrasi tersebut berlangsung pada suatu direktori pusat yang menyimpan aplikasi secara utuh dan nantinya akan menjadi hasil akhir dari proses pengembangan. Setiap anggota tim melakukan pengembangan modul yang sudah menjadi tugasnya pada direktori yang sudah ditentukan, sehingga anggota tim yang lain bisa mendapatkan perubahan yang terjadi pada perangkat lunak yang sedang dikembangkan. Setiap perubahan yang terjadi pada direktori pusat akan dilakuan uji coba fungsionalitas, sehingga dapat dipastikan bahwa direktori pusat menyimpan versi aplikasi yang benar.
Version Control System
Metode continuous integration harus didukung oleh tools yang mempermudah pengembangan proyek yang secara terus-menerus diubah dan disamakan ke dalam versi yang sama oleh seluruh tim. Tools yang tepat tersebut tentunya adalah version control system (VCS). VCS memungkinkan suatu repositori dapat dipantau perkembangannya, mulai dari perubahan yang terjadi, siapa yang melakukan perubahan, kapan perubahan terjadi, dsb. Beberapa VCS yang sering digunakan meliputi Git, SVN, CVS, Mercurial, Bazaar, LibreSource, dan Monotone.
Sebetulnya, hampir seluruh permasalahan mengenai visibilitas pengerjaan proyek, fungsi dari aplikasi, hingga evaluasi terhadap kode itu sendiri telah diselesaikan oleh tools version control system. Hal ini karena kode akan disimpan di repository, semua pengembang dapat mengkloning, menambahkan perubahan lalu menyamakan versinya dengan versi lain yang dimiliki oleh pengembang lain. Setiap perubahan kode yang mereka buat akan terlihat oleh seluruh tim yang terlibat. Pengembang juga dapat memberikan catatan pada setiap perubahan yang mereka ajukan pada Git.
Setiap perubahan yang mereka buat terhadap perangkat lunak juga dapat dirasakan dan dilihat langsung oleh tim quality assurances maupun pengguna atau klien tanpa harus ada proses redeploy/recompile. Pada kasus tertentu, perubahan seperti perbaikan terhadap suatu bug nyaris dapat langsung dilihat dan diuji oleh QA maupun klien kapan pun di mana pun, tanpa harus melakukan serangkaian meeting. Terutama jika proyek perangkat lunak yang dikerjakan berbasis online.
Mungkin hal ini juga yang membuat beberapa programmer kurang menyukai metode pengembangan semacam Scrum. Hal ini karena mereka menganggap bahwa seluruh kebutuhan evaluasi manajemen proyek pengembangan perangkat lunak juga telah mereka lakukan pada GIT yang telah menjadi standar pengembangan hari ini. Hampir tidak mungkin rasanya masih ada perusahaan yang tidak menggunakan Git atau VCS lain untuk mengembangkan perangkat lunak. Menghadiri daily meeting, atau mengisi dan memindahkan kartu scrum Board rasanya menjadi pekerjaan ekstra yang sia-sia.
Namun report di luar Git masih lazim dilakukan karena tidak semua anggota tim pengembangan aplikasi memahami teknis dan berbagai log yang mereka tulis. Tidak usah membicarakan kode atau bahasa pemrograman yang jelas lebih sulit lagi untuk dipahami oleh semua orang, penggunaan aplikasi VCS sendiri juga dapat menjadi cukup rumit bagi sebagian kalangan. Kesetaraan pemikiran dan pengetahuan adalah kunci besar dalam kesuksesan di seluruh kegiatan.
Kelebihan Continuous Integration
Kelebihan yang bisa didapatkan dengan menggunakan metode pengembangan continuous integration antara lain adalah sebagai berikut:
- Mengulangi proses manual yang berulang,
- Mengurangi risiko untuk mendeteksi dan memperbaiki masalah integrasi yang terjadi secara terus-menerus,
- Membuat status proyek menjadi lebih jelas,
- Menghasilkan perangkat lunak yang dapat di-deploy kapan saja dan di mana saja,
- Menghembat waktu dan biaya karena durasi proyek yang lebih efisien (Prabowo, 2020, hlm. 70).
Kekurangan Continuous Integration
Sementara itu, kekurangan dari metode continuous integration adalah sebagai berikut:
- Memerlukan pengaturan awal terlebih dahulu yang harus dilakukan dalam tahapan tertentu,
- Memerlukan test code untuk mencapai pengujian secara otomatis,
- Refactoring dalam skala besar dapat mengganggu karena dapat mengubah basis kode (Prabowo, 2020, hlm. 70).
Sebagai catatan, refactoring adalah istilah yang digunakan untuk melakukan perubahan pada kode program dari perangkat lunak dengan tujuan meningkatkan kualitas dari struktur program tersebut tanpa mengubah cara program tersebut bekerja.