Alur Kerja Pembuatan Aplikasi

Proses pembuatan aplikasi yang baik harus memiliki alur yang jelas.

Business Requirement Document

 * Business Requirement Document (BRD) adalah sebuah dokumen yang dibuat oleh orang bisnis dan/atau marketing dan/atau product yang berisi:


 * Hasil riset tim produk/bisnis/operation (non-tech)
 * Aplikasi apa yang mau dibuat? fiturnya apa aja?
 * Breakdown timelinenya (per bulan delivernya apa aja?)
 * Bagaimana flowchart bisnisnya? (bukan flowchart aplikasi)

UI/UX

 * Proses pembuatan UI secara lengkap beserta flownya. Lebih bagus jika sudah dalam bentuk prototype, ada interaksinya. Dalam pembuatan UI, harus dicantumkan data apa saja yang akan ditampilkan dalam sebuah screen.

Technical Design

 * Proses mendesign kebutuhan aplikasi secara teknis. Misalnya dengan menentukan butuh bikin aplikasi apa saja, butuh datanya darimana, interaksi antar aplikasinya seperti apa, apa menggunakan Rest API atau graphQL, dll. Setelah itu, tim membuat deployment diagram, ERD, dll.


 * Deployment Diagram merupakan jenis diagram UML (unified modeling language) yang digunakan untuk menggambarkan, memvisualisasikan, menspesifikasikan serta mendokumentasikan suatu proses yang terjadi dalam sebuah sistem berbasis OOP (object orientied programming) yang akan dibangun.


 * ERD (entity relationship diagram) merupakan model data berupa notasi grafis dalam pemodelan data konseptual yang menggambarkan hubungan antara penyimpan.

Architecture Review

 * Proses mereview hasil dari technical design oleh technical architect yang ada di perusahaan. Biasanya ada beberapa architect, seperti


 * infrastructure architect, melihat berapa spesifikasi server yang diperlukan, berapa jumlah target request, datanya darimana, apakah server bisa menghandle semua request, dll
 * security architect, melihat potensi celah keamanan yang bisa mengakibatkan data breach,
 * performance architect, melihat bagaimana performa aplikasi lain, bagaimana kira2 kecepatan aplikasi dalam menjalankan sebuah request, dll

API Specs

 * Proses membuat API yang akan dibuat oleh Backend Team dan yang akan digunakan oleh Frontend Team. Dalam proses ini, harus melibatkan BE team, FE team, dan QA Team. Pastikan semua anggota tim menyetujui API Specs yang sudah didiskusikan. Tujuannya adalah agar pada proses development, semua tim dapat berjalan secara paralel dan dapat menghemat waktu.
 * Dalam prosesnya biasanya menyesuaikan dengan UI/UX yang telah dibuat sebelumnya, misal pada screen 1 membutuhkan data profil, carousel, pada screen 2 membutuhkan data saldo dan riwayat transaksi.
 * Hasil dari API Specs adalah endpointnya apa, data request yang diperlukan, dan data response yang akan berikan apa saja.

Contoh: https://github.com/programmerzamannow/kotlin-restful-api

Development

 * Dalam proses development, Backend Team, Frontend Team, dan QA team melakukan coding. Karena API Specs sudah disepakati, maka setiap tim bisa mengerjakan kodingnya secara paralel.


 * Tim BE bikin aplikasi Backend + Databasenya base on API Specification
 * Tim FE bikin Frontend, consume API base on API Specification
 * Tim QA bikin QA Automation base on API Specification

Non Prod Deployment

 * Adalah proses men-deploy aplikasi ke berbagai environment dan memastikan bahwa aplikasi berjalan sesuai dengan yang diharapkan. Aplikasi bisa dideploy ke QA, Sandbok, dll.


 * Seteleh developer selesai, akan release versi app, misal bikin Tag di Git
 * Selanjutnya CI/CD akan baca Tag baru dari Repo (Git), lalu deployment

Testing
Tidak termasuk unit test (karena sudah dibikin pas waktu development)
 * End-to-end test adalah test dengan menjalankan QA Automation
 * Performance test adalah test menjalankan stress test ke server dan mengimprove API yang dirasa lambat
 * Security test adalah test untuk memastikan tidak ada celah (XSS, SQL Injection, dll)

Production Deployment
Biasa tergantung strategi company. Ada beberapa perusahaan yang langsung merilis semua fitur baru, dan ada yang merilis sebagian fitur terlebih dahulu.

A/B Testing adalah sebuah strategi dengan merilis beberapa fitur untuk sebagian pengguna (misal berdasarkan kriteria tertentu). Tujuannya adalah untuk memastikan bahwa fitur benar2 berjalan dengan lancar.

Maintenance
Monitoring total data, total traffic, response time. Jika respon menjadi lambat, harus dicari penyebabnya, dan melakukan optimasi, misal optimasi pada business logic, atau optimasi pada SQL. Dalam memperbaiki/ mengimprove, tidak perlu membuat dan merencanakan dari awal, dari membuat BRD, cukup langsung mengimprove (karana sangat bersifat teknikal.

Resources

 * https://www.youtube.com/watch?v=3PMLwe_C-F0
 * https://www.pinhome.id/blog/contoh-deployment-diagram/
 * https://id.wikipedia.org/wiki/Diagram_hubungan_entitas