“Dah jadi nih.. deploy gih”

Muhammad At Thoriq
PPLSalemba
Published in
3 min readApr 15, 2019

Bagaimana men-deliver software yang telah dibuat kepada customer merupakan satu tugas tersendiri yang tidak mudah. Banyak constraint dalam proses deliver ini. Ketika melakukan proses develop suatu software, kita melakukannya dalam 1 environment/operating system sendiri. Namun, customer kita dapat berasal dari environment yang berbeda/OS yang berbeda. Perbedaan ini dapat menimbulkan konflik-konflik seperti incompatibility.

Isu tersebut memunculkan suatu ekosistem yang disebut containerization. Containerization ibarat melakukan bundling kode aplikasi yang kita tulis serta configuration file, libraries, dan dependencies yang selanjutnya akan dijalankan pada environment yang berbeda-beda (source). Platform paling populer containerization ialah Docker dan Kubernetes. Pada mata kuliah PPL, platform yang digunakan ialah Docker.

Docker key word

https://cdn-images-1.medium.com/max/800/0*rgvX6TzfW4HqNpiQ
Diagram from Docker Docs.

Docker Image

Docker Image dapat berupa kode, dependencies, library, atau bahkan operating system, dsb. yang terkait dengan fungsionalitas. Docker image dibuat dari dockerfile. Dockerfile berisi command-command yang membuat docker image.

Docker Container

Container muncul dan berjalan ketika docker image dijalankan menggunakan command docker run image_name. Container inilah sebenarnya aplikasi kita.

Docker Client & Daemon

Docker client merupakan tool/command yang membantu kita mengakses fitur docker. Docker client akan menggunakan Docker API dan perintahnya dikirim ke Docker Daemon. Docker daemon yang kemudian menerima request tersebut dan mengatur image, container dan registry.

Docker Registry

Docker registry merupakan lokasi yang menyimpan image beserta versinya. Seperti repositori.

Docker Volume

Berbeda dengan registry, docker volume diciptakan untuk menyimpan data yang dapat digunakan untuk container yang berbeda-beda.

Pada PPL Salemba, terdapat 2 container yaitu frontend dan backend. Kedua container ini perlu dijalankan secara bersamaan. Oleh karena itu dibutuhkan teknik Docker Compose dengan membuat file docker-compose.yml . Adanya Docker Compose CLI ini memudahkan Docker menjalankan multi-container app.

Continuos Integration

Continuous Integration atau CI ialah proses integrasi kode yang telah dibuat oleh developer di dalam repositori bersama dengan tujuan untuk memudahkan dalam pendeteksian error sehingga perbaikan dapat lebih cepat diatasi.

PPL Salemba melakukan 3 stage diantaranya testing backend, testing frontend dan deploy. Testing dilakukan beserta coverage nya untuk memberikan informasi berapa coverage test yang sudah dilakukan developer. Lalu, proses deploy hanya dilakukan pada branch staging. Script yang dijalankan ketika CI dilakukan pada branch staging yaitu build image, push image ke registry dan mengaktifkan container.

Deploy & Orchestration

Flow program PPL Salemba menggunakan docker dapat disingkat sebagai berikut:

  1. Kode akan dipush ke Gitlab
  2. gitlab-ci.yml akan menjalankan script testing dan deploy (apabila branch staging)
  3. Pada stage deploy, gitlab-ci.yml akan menjalankan script untuk build image docker
  4. Image docker yang dibuild tadi berisi script untuk mendeploy program ke AWS (untuk backend) dan Amazon S3 (untuk frontend)

Docker yang kami gunakan disini sebatas hanya tempat menjalankan instruksi. Namun, proses menjalankan program kami (backend & frontend) yang sebenarnya berada di AWS dan S3.

Proses koneksi antara backend dan frontend pada program kami yaitu dengan menggunakan API. Program backend menyediakan API yang dapat digunakan oleh program frontend untuk menjalankan beberapa fungsi seperti pengambilan data dan store data dari database.

--

--