𝗪𝗵𝘆 𝘁𝗵𝗲 𝗯𝗼𝗿𝗶𝗻𝗴 𝗱𝗲𝗰𝗶𝘀𝗶𝗼𝗻𝘀 𝘄𝗲𝗿𝗲 𝗺𝘆 𝗯𝗲𝘀𝘁 𝗱𝗲𝗰𝗶𝘀𝗶𝗼𝗻𝘀 -> 𝗠𝗲𝗻𝗴𝗮𝗽𝗮 𝗸𝗲𝗽𝘂𝘁𝘂𝘀𝗮𝗻-𝗸𝗲𝗽𝘂𝘁𝘂𝘀𝗮𝗻 𝗺𝗲𝗺𝗯𝗼𝘀𝗮𝗻𝗸𝗮𝗻 𝗮𝗱𝗮𝗹𝗮𝗵 𝗸𝗲𝗽𝘂𝘁𝘂𝘀𝗮𝗻 𝘁𝗲𝗿𝗯𝗮𝗶𝗸 𝘀𝗮𝘆𝗮
Dulu saya berpikir bahwa menjadi pengembang yang baik berarti menulis kode yang kompleks.
Saya salah.
Saat merancang MVP untuk klinik medis yang nantinya akan menjadi SaaS multi-tenant, saya belajar sebuah pelajaran berharga. Menulis kode adalah bagian yang mudah. Bagian yang sulit adalah memutuskan apa yang TIDAK perlu dibangun.
Ada godaan untuk menggunakan microservices, event, dan Kubernetes. Terlihat keren di CV. Namun, microservices memiliki biaya yang tinggi. Anda membayarnya dengan pipeline yang kompleks, masalah versioning, dan debugging yang sulit.
Dengan tim yang hanya terdiri dari tiga orang dan sedikit pengguna, microservices hanyalah pekerjaan tambahan. Anda menyelesaikan masalah yang bahkan belum Anda miliki.
Sebaliknya, saya memilih arsitektur berlapis (layered architecture) yang sederhana dengan .NET 8 dan PostgreSQL. Biayanya sekitar $30 per bulan.
Saya fokus pada keputusan cerdas dan murah yang akan mahal jika diubah nantinya:
• Menambahkan kolom TenantId ke setiap tabel sejak hari pertama. • Menggunakan Docker sejak commit pertama. • Membuat interface untuk penyedia WhatsApp.
Masing-masing hanya memakan waktu satu sore. Hal ini mengubah migrasi di masa depan menjadi perubahan konfigurasi yang sederhana.
Saya juga belajar untuk menyesuaikan pola (patterns) dengan kebutuhan bisnis.
Sebagai contoh, saya menggunakan Outbox pattern untuk notifikasi WhatsApp. Pemesanan janji temu harus cepat dan andal. Pengiriman pesan bisa dilakukan dua detik kemudian. Jika WhatsApp lambat, janji temu tetap berjalan.
Namun, saya menolak "eventual consistency" untuk rekam medis. Diagnosis medis harus akurat dan seketika. Dalam layanan kesehatan, persyaratan hukum sebenarnya adalah persyaratan arsitektural.
Saya juga melihat perhitungan matematis yang nyata.
Pengaturan Kubernetes (EKS) akan memakan biaya $545 hingga $615 per bulan. Pengaturan AWS Fargate memakan biaya $350 hingga $420 per bulan.
Itu adalah penghematan lebih dari $150 setiap bulannya. Saya memilih Fargate karena lebih sederhana dan lebih murah untuk skala kami saat ini.
Strategi saya sederhana:
- Gunakan layers terlebih dahulu.
- Gunakan event ketika dependensi eksternal (seperti WhatsApp) mulai memengaruhi sistem Anda.
- Beralih ke microservices hanya ketika volume dan ukuran tim memerlukannya.
Jangan merancang untuk dua puluh klien yang belum Anda miliki. Bangunlah untuk klien yang membayar Anda hari ini.