Optimisasi CI/CD Pada Aplikasi Next.js Menggunakan Docker

Althoframdhan
4 min readApr 10, 2022

--

source: https://dev.to/chrsgrrtt/dockerising-a-next-js-project-1ck5

Pada artikel ini saya mencoba untuk membagikan bagaimana kelompok kami memecahkan masalah pipeline CI/CD yang memakan waktu sangat lama ketika terdapat commit baru yang masuk. Beberapa waktu yang lalu kelompok kami menyadari bahwa waktu yang diperlukan untuk menyelesaikan satu pipeline yaitu sekitar 30 menit hingga lebih kemudian kami mencoba untuk melakukan caching yang merupakan fitur dari Docker untuk memangkas waktu pipeline menjadi 4 hingga 8 menit saja.

Mengapa harus Docker?

Sebelum menjeleaskan alasan tersebut, perlu kita ketahui terlebih dahulu apa itu Docker?

Dikutip dari laman ini, Docker adalah layanan yang menyediakan kemampuan untuk mengemas dan menjalankan sebuah aplikasi dalam sebuah lingkungan terisolasi yang disebut dengan container. secara sederhana, teknologi Docker ini diciptakan untuk memecahkan masalah seperti dependensi aplikasi yang hilang atau salah seperti library, interpreter, kode/binari.

Selain itu kita juga perlu memahami salah satu fitur Docker yang akan dibahas pada artikel ini yaitu Docker Compose. Docker compose adalah salah satu fitur yang berfungsi untuk menjalankan beberapa container atau biasa disebut multi-container hanya dengan satu command-line sehingga dapat menghemat banyak waktu.

Alasan kami menggunakan Docker adalah karena dengan Docker kita dapat memanfaatkan fitur Caching secara otomatis sehingga ini akan memangkas waktu kita menjalankan CI/CD.

1. Membuat file Docker Container

Langkah pertama agar kita dapat membuat container pada aplikasi kita yaitu dengan membuat file bernama Dockerfile. Letakkan file tersebut di folder root aplikasi kita. dan isi file tersebut seperti berikut.

kemudian untuk memudahkan Containerisasi pada aplikasi kita, perlu membuat file docker-compose.yml seperti berikut.

sekarang kita bisa menjalankan aplikasi di dalam docker container dengan menjalankan perintah berikut di terminal/command prompt.

docker-compose up -d --build

Sebelum menjalankan command diatas pastikan sudah terinstall aplikasi Docker dan Docker Compose pada device kita.

jika sudah maka akan muncul output seperti berikut.

2. Membuat file gitlab-ci.yml

karena kami menjalankan CI/CD menggunakan gitlab runner, maka kita harus mendefinisikan perintah-perintah CI/CD pada file gitlab-ci.yml. Buatlah file tersebut di folder root aplikasi dengan berisikan sebagai berikut.

contoh diatas adalah contoh jika mendeploy aplikasi ke netlify, dapat disesuikan jika mendeploy ke provider lain.

Agar pipeline dapat berjalan dengan lancar, sesuaikan file package.json seperti berikut.

Setelah itu bagaimana perbedaan dari sebelum menggunakan Docker?

sebelum menggunakan Docker kami membutuh kan waktu 38 menit untuk menyelesaikan satu pipeline bahkan hingga menyentuh waktu lebih dari satu jam.

setelah menggunakan Docker kita mampu memangkas waktu eksekusi satu pipeline menjadi 4 menit.

Mengapa itu bisa terjadi?

menurut pandangan saya adalah hal tersebut dapat terjadi karena.

  1. Caching — setiap container yang telah dibuat sebelumnya akan digunakan kembali untuk menjalankan pipeline selanjutnya dan tidak perlu menginstall kembali package-package yang dibutuhkan karena sudah terinstall pada container sebelumnya.
  2. Gitlab Runner memiliki resource yang terbatas — karena runner yang diberikan oleh Host gitlab hanya memberikan resource yang sangat terbatas sehingga membutuhkan waktu yang lebih lama untuk menyelesaikan proses tertentu pada CI/CD. Dengan adanya docker, seluruh proses Build-Test-Deploy dilakukan dalam container sehingga proses tersebut menggunakan resources dari container tersebut yang relatif lebih banyak.

Cukup sekian artikel kali ini, semoga bermanfaat.

Souces:

--

--

No responses yet