Software Architecture pada Yuk — Recycle
Halo, perkenalkan nama saya Endrawan Andika Wicaksana, bisa dipanggil Endrawan atau Endra. Pada mata kuliah Proyek Perangkat Lunak (PPL) Fasilkom UI, saya berada pada proyek Yuk — Recycle dan berperan sebagai Hacker.
Pada blog kali ini saya akan menjelaskan software architecture pada proyek Yuk — Recycle.
Proyek Yuk — Recycle memiliki 3 jenis aplikasi yaitu backend, mitra app, dan customer app. Untuk mitra app dan customer app berbentuk apk sedangkan untuk backend menggunakan server yang disediakan oleh PPL Fasilkom UI.
Berikut software architecture pada proyek kami:
Mobile app (mitra app dan customer app) berkomunikasi dengan backend menggunakan REST. Untuk beberapa fitur pada mobile app kami menggunakan third party libraries seperti firebase cloud messaging (untuk push notification) dan berkomunikasi dengan services tersebut.
Pada backend kami menggunakan docker untuk deploy api. Kami memiliki 2 dockerized environment (container) yaitu go(lang) backend api yang didevelop dan postgresql untuk database. Kedua container tersebut berada satu docker network yang sama agar dapat berkomunikasi. Untuk beberapa fitur pada backend kami menggunakan third party libraries seperti firebase cloud messaging (untuk push notification) dan berkomunikasi dengan services tersebut.
Kami menggunakan portainer sebagai GUI untuk memanage docker.
Berikut Dockerfile yang kami gunakan
FROM golang:latestCOPY . /go/src/PPLA4/backendWORKDIR /go/src/PPLA4/backendRUN go get ./...ENTRYPOINT ["go", "run", "main.go"]
Dan berikut docker-compose.yml yang kami gunakan
version: '2'services: db: image: postgres:alpine environment: POSTGRES_NAME: postgres POSTGRES_PASSWORD: visiland POSTGRES_USER: postgres volumes: - db-data:/var/lib/postgresql/data ports: - 5433:5432 app: container_name: yuk-container build: . image: 'registry.docker.ppl.cs.ui.ac.id/ppla4/yuk-recycle-api' environment: db_name: postgres db_pass: visiland db_user: postgres db_type: postgres db_host: db db_port: 5432 token_password: qwertyuiopasdfghjklzxcvbnm ports: - 8000:8000 depends_on: - db links: - db:5432volumes: db-data: driver: local
Sekian blog dari saya. Terima kasih sudah membaca.