Software Architecture and Environment

Luqman Iffan Windrawan
PDB+R
Published in
3 min readApr 4, 2019

Dalam kehidupan sehari-hari, kita tidak jarang mendengar kata ‘arsitektur’ dan ‘lingkungan’. Tahukah kamu kalau ada istilah yang mirip pada software architecture? Saya Luqman dari PDB+R, dan pada tulisan ini saya akan membahas mengenai Software Architecture serta Software Environment!

Software Architecture

Beberapa diagram Software Architecture

Architecture atau arsitektur berarti seni perencanaan dan perancangan lingkungan serta bangunan. Dalam konteks software, kita bisa mengganti kata ‘lingkungan serta bangunan’ menjadi produk software. Software architecture juga bersifat reuseable, yang berarti bisa dipakai berulang kali di produk yang berbeda

Dalam software architecture terdapat beberapa karakteristik, yang juga merupakan persyaratan bagi sebuah produk software. Karakteristik tersebut berbeda-beda berdasarkan proyek yang sedang dikerjakan. Sebagai contoh, jika klien meminta requirement dengan konstrain waktu, maka karakteristik yang perlu dimaksimalkan adalah performance, scalability, dan reliability.

Berikut adalah beberapa contoh software architecture pattern:

  • Layered Pattern, untuk struktur program yang dapat didekomposisikan ke dalam grup task
  • Client-Server Pattern, terdiri dari server dan clients (client request servis dan server menyediakan servis yang sesuai)
  • Peer-to-peer Pattern, terdiri dari banyak peer. Peer berfungsi sebagai client dan juga sebagai server

Selain itu, software architecture juga mempunyai manfaat! Beberapa manfaatnya adalah:

  1. Menyesuaikan efektivitas dengan requirement yang dibutuhkan
  2. Mempermudah pencarian alternatif saat terjadi perubahan requirement
  3. Mengurangi resiko saat membangun aplikasi

Implementasi Software Architecture dalam Kelompok

Dalam mengembangkan SISIDANG-NG, kami menggunakan beberapa software architecture, di antaranya adalah:

  1. Django (framework)
  2. Dbsqlite dan postgreSQL (database)
  3. HTML dan CSS (tampilan)

Software Environment

Environment mempunyai makna segala sesuatu yang ada di sekeliling kita, sehingga software environment bermakna semua yang men-support sebuah aplikasi software. Sebuah software environment dapat terdiri dari operating system, database system, dan development tools.

Implementasi Software Environment dalam kelompok

Dalam pengembangan SISIDANG-NG, kami menggunakan Django environment untuk deployment, dan juga menggunakan Gitlab CI/CD serta Docker.

Django adalah sebuah framework Python untuk web design. Kami memilih Django karena aplikasi yang kami kembangkan berbasis web.

Untuk memulai suatu projek pada Django, kita bisa menggunakan command simpel berikut ini:

django-admin startproject [app_name]

Untuk Gitlab Continuous Integration and Delivery, kami membangun test dan build pada sebuah file yang bernama gitlab-ci.yml. Gitlab runner akan secara otomatis meng-compile, test, dan build.

Docker adalah sebuah tool untuk men-deploy dan menjalankan aplikasi menggunakan container. Dengan container, aplikasi bisa dibungkus bersama dengan semua bagian yang dibutuhkan seperti library.

Saat proyek Django sudah siap, kami mengunggah proyek tersebut ke dalam container docker. Lalu yang kami butuhkan selanjutnya adalah sebuah dockerfile yang mendefinisikan docker environment bagi proyek kami. Berikut adalah contoh dockerfile kami untuk proyek sidang19:

FROM python:stretchENV PYTHONUNBUFFERED 1RUN mkdir /sidang19WORKDIR /sidang19COPY requirements.txt /sidang19/RUN pip install -r requirements.txtCOPY . /sidang19/RUN python3 manage.py collectstatic --noinputEXPOSE 8000RUN chmod +x start.shENTRYPOINT ["/sidang19/start.sh"]

konten start.sh:

#!/bin/sh
python manage.py makemigrations
python manage.py migrate
gunicorn sidang19.wsgi:application --bind 0.0.0.0:8000

Setelah itu, kami membuat docker-compose file untuk mendefinisiak container.

version: ‘2’services:db:image: postgresrestart: alwaysenvironment:- POSTGRES_USER = sidang19- POSTGRES_PASSWORD = sidang19- POSTGRES_DB = sidang19-productionports:- “24350:5432”web:image: registry.docker.ppl.cs.ui.ac.id/ppld3/sidang19-production:latestcommand: python manage.py runserver 0.0.0.0:8000ports:- “24301:8000”depends_on:- dbenvironment:- DATABASE_URL = postgresql://sidang19:sidang19@db:5432/sidang19-production

Akhirnya, kami bisa melakukan build dan push ke dalam container docker.

sudo docker build -t registry.docker.ppl.cs.ui.ac.id/ppld3/sidang19-production:latest .
sudo docker push registry.docker.ppl.cs.ui.ac.id/ppld3/sidang19-production:latest

Sekarang kami bisa melakukan log in ke dalam portainer untuk mengakses proyek kami yang baru kami push.

--

--