Software Architecture Pada Proyek Masif

Azhar Rais
3 min readApr 27, 2020

--

Pada kesempatan kali ini saya akan membahas mengenai Software Architecture yang digunakan pada proyek PPL 2020, lebih spesifik kepada penggunaan dockernya.

Sebelum mulai membahas software architecture pada kelompok saya, mungkin sebaiknya saya menjelaskan sedikit mengenai Software Architecture. Sebetulnya tidak ada definisi pasti dari istilah software architecture. Beberapa ahli saling memberikan pendapat mengenai definisi dari term software architecture. Ralph Johnson bahkan memberikan sebuah kesimpulan “Architecture is about the important stuff. Whatever that is”.

Software Architecture dapat diibaratkan sebagai blueprint untuk sistem dan aplikasi yang kami buat. Blueprint tersebut dapat berisikan apa saja yang mengkontruksi aplikasi dan bagaimana sistem yang bekerja dibalik aplikasi. Kelompok saya menggunakan Django sebagai framework utama, PostgreSQL sebagai database, dan Docker sebagai containerization.

Apa itu Docker?

Mungkin anda sering mendengar istilah Docker namun belum begitu mengerti konsep dan cara penggunaan dari docker itu sendiri.

Secara isngkat, Docker adalah sebuah software yang memudahkan dalam proses pembuatan, menjalankan, dan distribusi aplikasi. Hal tersebut dilakukan dengan cara memvirtualisasi sistem operasi komputer yang menjalankan docker tersebut. Penggunaan virtualisasi yang dimaksud adalah dengan cara containerized, bukan virtualisasi dalam virtual machine (VM).

Terdapat perbedaan mendasar antara VM dengan container. Berikut adalah diagram yang menunjukkan konsep container dan perbedaannya dengan VM.

Container vs VM

Pada docker, docker menjadi jembatan antara sistem operasi host dengan aplikasi yang dijalankan. Hal tersebut sangatlah berbeda dengan VM yang menjalankan sistem operasi sendiri diatas sistem operasi host. Tentunya hal tersebut membuat VM sangat membutuhkan resource yang banyak, padahal aplikasi yang dijalankan tidak terlalu besar. Dalam hal ini docker menjadi lebih efisien dalam memisahkan aplikasi-aplikasi dalam sebuah kontainer tanpa mengkompromisasi resource yang ada.

Kenapa perlu menggunakan Docker?

Pada pengembangan suatu aplikasi, anda pasti pernah mengalami aplikasi berjalan di komputer anda namun terdapat kesulitan dalam menjalankannya di komputer lain. Baik itu dependensi yang berbeda untuk operating sistem yang lain, cara untuk setup aplikasi yang dibuat, dsb. Hal tersebut tentunya cukup memakan waktu dan menurunkan produktifitas untuk hal-hal yang simpel.

Docker membantu dalam mengisolasi aplikasi agar dapat berjalan di sistem operasi manapun yang men-support pengoprasian docker. Sesuai dengan penjelasan diatas, docker dapat melakukan hal tersebut dengan resource yang lebih sedikit dibandingkan dengan VM. Docker dapat membantu mengautomasi pembuatan environment untuk aplikasi mulai dari taham development hingga tahap deployment.

Bagaimana cara menggunakan Docker?

Berikut merupakan cara kelompok saya menggunakan docker untuk mengembangkan aplikasi Masif.

Docker image secara esensial adalah build dari instruksi-instruksi yang diberikan untuk menjalankan aplikasi. Image dapat dijalankan menjadi satu atau beberapa instance dari image tersebut yang disebut dengan container. Docker image dibuat berdasarkan rangkaian instruksi pada Dockerfile.

Dockerfile yang digunakan oleh Masif:

Dockerfile Masif

Setelah membuat Dockerfile tersebut, kita dapat mem-build menjadi image.

docker build -t <image-name>:<tag> .

Dengan menjalankan command diatas, anda dapat melihat apakah image tersebut sudah dibuat dengan command.

docker images

Selanjutnya kita dapat menjalankan kontainer dari image yang telah kita buat.

docker run -p <port-host>:<port-container> <image-name>:<tag>

Menjalankan Docker Compose

Command diatas digunakan untuk menjalankan satu container. Karena masif menggunakan beberapa container (Django + PostgreSQL), kita membutuhkan cara lain untuk menjalankan container tersebut. Docker compose merupakan solusi untuk menjalankan aplikasi dengan multi-container.

Untuk menggunakan docker compose kita membutuhkan configurasi awal untuk mendefinisikan kebutuhan. Hal tersebut dapat dituliskan pada filedocker-compose.yml . Berikut contoh file docker compose kelompok saya:

docker-compose.yml

Dari konfigurasi diatas dapat dilihat bahwa aplikasi masif menggunakan 2 service, satu service postgres untuk menjalankan PostgreSQL dan service web untuk menjalankan Django.

Untuk menjalankan konfigurasi diatas menjadi beberapa container dapat dilakukan dengan menggunakan command:

docker-compose up

Aplikasi Masif dapat ditemukan pada localhost:8000.

Kesimpulan

Dari penjelasan saya diatas (terutama dibagian implementasi) dapat dilihat bahwa penggunaan docker sangat memudahkan proses setup dan menjalankan aplikasi.

--

--

No responses yet