Membangun infrastruktur cloud tidak hanya tentang menyiapkan server, memasang web server, dan menjalankan aplikasi. Di balik layanan yang dapat diakses melalui internet, terdapat berbagai komponen yang perlu bekerja bersama, mulai dari jaringan, pengelolaan container, database, penyimpanan data, hingga sistem keamanan dan monitoring.
Di Masdika.ID, pengembangan infrastruktur berfokus pada efisiensi sumber daya, keamanan berlapis, dan pengelolaan layanan yang terstruktur. Berbagai teknologi seperti Kubernetes K3s, Traefik, PostgreSQL, Redis, dan Linux dapat digunakan untuk membangun fondasi layanan yang lebih mudah dikelola dan dikembangkan.
Artikel ini membahas bagaimana komponen-komponen tersebut berperan dalam arsitektur infrastruktur Masdika.ID, bagaimana aliran request diproses, serta apa saja yang perlu diperhatikan ketika membangun platform cloud yang andal.
1. Gambaran Arsitektur Infrastruktur Masdika.ID
Arsitektur infrastruktur cloud terdiri dari beberapa lapisan yang memiliki tanggung jawab berbeda. Pemisahan ini membantu pengelolaan sistem, mempermudah proses pemecahan masalah, dan mengurangi ketergantungan pada satu komponen.
Secara konseptual, alur request pada sebuah platform web dapat digambarkan sebagai berikut:
Setiap komponen memiliki fungsi tersendiri. Cloudflare menjadi lapisan perlindungan di sisi publik, Traefik mengatur routing request menuju aplikasi, sedangkan database dan object storage menangani penyimpanan data.
Sementara itu, monitoring dan logging membantu administrator memahami kondisi sistem, mendeteksi masalah, serta mengevaluasi performa layanan.
Perlu dipahami bahwa diagram tersebut merupakan gambaran logis arsitektur. Detail implementasi, topologi jaringan, dan konfigurasi setiap layanan dapat berbeda sesuai kebutuhan serta kondisi infrastruktur yang benar-benar dijalankan.
2. Enam Lapisan Utama Infrastruktur Cloud
Untuk memahami arsitektur ini dengan lebih mudah, infrastruktur dapat dibagi menjadi enam lapisan utama.
2.1. Edge Network dan Proteksi Cloudflare
Lapisan pertama adalah edge network, yaitu bagian yang berhadapan langsung dengan pengunjung dari internet.
Salah satu teknologi yang dapat digunakan pada lapisan ini adalah Cloudflare. Layanan tersebut menyediakan sejumlah fitur, seperti Content Delivery Network (CDN), Web Application Firewall (WAF), dan perlindungan terhadap serangan Distributed Denial of Service (DDoS).
Selain meningkatkan perlindungan, penggunaan CDN dapat membantu mempercepat pengiriman konten statis melalui jaringan edge yang tersebar di berbagai lokasi.
Namun, penggunaan Cloudflare saja tidak otomatis membuat server asal atau origin server aman. Jika alamat IP origin dapat diakses secara langsung, penyerang berpotensi melewati sebagian perlindungan yang tersedia di edge.
Karena itu, beberapa langkah pengamanan yang dapat diterapkan meliputi:
- Membatasi akses ke port publik menggunakan firewall.
- Mengizinkan koneksi HTTPS ke origin hanya dari sumber yang diperlukan.
- Menggunakan Cloudflare Authenticated Origin Pulls dengan verifikasi sertifikat klien apabila sesuai dengan konfigurasi yang digunakan.
- Memantau log akses untuk mendeteksi pola request yang tidak wajar.
Dengan pendekatan ini, keamanan tidak hanya bergantung pada satu layanan, tetapi dibangun melalui beberapa lapisan perlindungan.
2.2. Kubernetes K3s dan Traefik
Kubernetes merupakan platform untuk mengelola aplikasi berbasis container. Teknologi ini membantu proses deployment, pengaturan service, pemulihan container, serta pengelolaan konfigurasi aplikasi.
Untuk lingkungan yang membutuhkan distribusi Kubernetes dengan kebutuhan sumber daya relatif ringan, K3s dapat menjadi pilihan.
K3s menyederhanakan sejumlah komponen Kubernetes sehingga lebih praktis digunakan pada server dengan kapasitas terbatas, homelab, edge computing, maupun lingkungan pengembangan.
Beberapa fungsi yang dapat dimanfaatkan antara lain:
- Mengelola deployment dan replica aplikasi.
- Menyediakan service discovery di dalam cluster.
- Mengatur konfigurasi aplikasi melalui manifest deklaratif.
- Menjalankan pembaruan aplikasi secara bertahap.
- Mengintegrasikan aplikasi dengan sistem monitoring dan keamanan.
Untuk menangani request HTTP dan HTTPS, Kubernetes dapat dipadukan dengan Traefik sebagai ingress controller.
Traefik bertugas meneruskan request ke service yang sesuai berdasarkan aturan routing. Middleware juga dapat digunakan untuk menerapkan pembatasan request, penambahan security headers, dan pengaturan akses tertentu.
Sebagai contoh, rate limiting dapat membantu membatasi jumlah request yang diterima suatu endpoint dalam periode tertentu. Nilai batasnya perlu disesuaikan dengan karakteristik aplikasi, pola trafik, serta kapasitas server.
Perlu dicatat bahwa Kubernetes K3s tidak secara otomatis menyediakan high availability untuk seluruh infrastruktur. Keandalan juga bergantung pada jumlah node, konfigurasi penyimpanan, replikasi database, jaringan, dan rancangan pemulihan ketika terjadi kegagalan.
2.3. Application Layer: Next.js dan API
Lapisan aplikasi merupakan tempat logika bisnis dijalankan. Pada platform web modern, salah satu pilihan framework yang dapat digunakan adalah Next.js.
Next.js mendukung rendering di sisi server, pembuatan halaman web, serta pengembangan endpoint API sesuai kebutuhan aplikasi.
Aplikasi dapat dikemas menggunakan container agar dependensi dan konfigurasi runtime lebih konsisten antara lingkungan pengembangan dan produksi.
Dalam lingkungan Kubernetes, aplikasi dapat dikelola melalui Deployment dan Service. Jika resource cluster serta konfigurasi aplikasi mendukungnya, jumlah replica dapat disesuaikan berdasarkan kebutuhan.
Beberapa konsep penting pada lapisan ini meliputi:
Containerization
Aplikasi dan dependensinya dikemas dalam image container. Pendekatan ini mempermudah deployment dan membantu menjaga konsistensi lingkungan eksekusi.
Horizontal scaling
Jumlah replica aplikasi dapat ditambah ketika kebutuhan meningkat. Namun, proses autoscaling memerlukan konfigurasi yang tepat, metrik yang tersedia, serta kapasitas komputasi yang mencukupi.
Health checks
Liveness probe membantu mendeteksi container yang tidak lagi berfungsi dengan baik, sedangkan readiness probe menentukan apakah aplikasi siap menerima trafik.
Graceful shutdown
Aplikasi perlu diberi kesempatan untuk menyelesaikan request yang sedang berjalan sebelum proses dihentikan. Hal ini membantu mengurangi gangguan ketika deployment diperbarui.
Untuk aplikasi yang bergantung pada database atau layanan eksternal, penanganan timeout, retry, dan circuit breaker juga dapat membantu mencegah kegagalan satu komponen merambat ke seluruh aplikasi.
2.4. Database, Cache, dan Object Storage
Penyimpanan data merupakan bagian penting dalam infrastruktur cloud. Pemilihan teknologi harus disesuaikan dengan jenis data, pola akses, kebutuhan konsistensi, dan kapasitas sistem.
PostgreSQL untuk data relasional
PostgreSQL merupakan database relasional yang dapat digunakan untuk menyimpan data pengguna, transaksi, konfigurasi layanan, dan informasi aplikasi lainnya.
Untuk aplikasi dengan banyak koneksi, PgBouncer dapat digunakan sebagai connection pooler. Komponen ini membantu mengelola koneksi aplikasi ke PostgreSQL agar penggunaan koneksi database lebih efisien.
Mode transaction pooling dapat mengurangi kebutuhan koneksi backend dalam pola penggunaan yang sesuai. Namun, aplikasi perlu memperhatikan batasan fitur yang membutuhkan state sesi tertentu.
Konfigurasi pool tidak sebaiknya ditentukan hanya berdasarkan rasio jumlah klien terhadap koneksi database. Kapasitas server, kompleksitas query, dan kebutuhan transaksi tetap perlu diperhitungkan.
Redis untuk caching
Redis dapat digunakan sebagai penyimpanan data di memori untuk mempercepat akses terhadap data yang sering dibaca.
Contoh penggunaannya meliputi:
- Cache hasil query tertentu.
- Penyimpanan data sementara.
- Pengelolaan sesi aplikasi sesuai rancangan sistem.
- Penghitung request untuk kebutuhan rate limiting.
Penggunaan cache dapat mengurangi beban database, tetapi membutuhkan strategi invalidasi dan pengaturan masa berlaku data agar informasi yang disajikan tetap relevan.
Object storage untuk file
File seperti gambar, dokumen, dan arsip backup dapat disimpan pada object storage yang mendukung protokol S3.
RustFS merupakan salah satu teknologi object storage berbasis Rust yang dapat dipertimbangkan untuk kebutuhan tersebut.
Dengan memisahkan file dari database relasional, pengelolaan kapasitas penyimpanan dapat dilakukan secara lebih fleksibel. Namun, performa dan keandalannya tetap perlu dievaluasi melalui pengujian pada lingkungan yang digunakan.
2.5. Keamanan Container dan DevSecOps
Keamanan infrastruktur tidak berhenti pada firewall atau proteksi di sisi jaringan. Aplikasi dan container yang berjalan di dalam server juga membutuhkan pembatasan akses serta pemantauan.
Pendekatan DevSecOps mengintegrasikan pemeriksaan keamanan ke dalam proses pengembangan, pengujian, dan deployment aplikasi.
Beberapa teknologi yang dapat mendukung pendekatan ini antara lain:
Kyverno
Kyverno merupakan policy engine untuk Kubernetes yang dapat memvalidasi atau memodifikasi konfigurasi resource berdasarkan kebijakan yang ditetapkan.
Contohnya adalah kebijakan yang membatasi penggunaan container privileged atau mewajibkan konfigurasi keamanan tertentu.
Falco
Falco membantu mendeteksi aktivitas runtime yang mencurigakan melalui event sistem dan aturan deteksi. Aturan yang sesuai dapat digunakan untuk mengidentifikasi perilaku tidak biasa dari container atau proses di host.
Trivy
Trivy dapat digunakan untuk memindai image container dan menemukan kerentanan pada komponen perangkat lunak. Pemindaian juga dapat membantu mengidentifikasi masalah konfigurasi dan secret yang terdeteksi oleh alat tersebut.
Sealed Secrets
Sealed Secrets memungkinkan secret Kubernetes dienkripsi sebelum disimpan dalam repositori Git. Pengelolaan kunci dan akses terhadap secret tetap perlu diamankan dengan benar.
GitLeaks
GitLeaks membantu mendeteksi kemungkinan kebocoran kredensial, token, atau secret di repositori. Pemeriksaan dapat diintegrasikan ke dalam pre-commit hook maupun pipeline CI/CD.
Kombinasi berbagai alat tersebut dapat membentuk pertahanan berlapis. Meski demikian, keberadaan alat keamanan tidak otomatis menjamin seluruh ancaman dapat dicegah. Efektivitasnya bergantung pada kebijakan, konfigurasi, pembaruan, dan proses tindak lanjut terhadap temuan.
2.6. Monitoring, Logging, dan Site Reliability Engineering
Infrastruktur yang baik tidak hanya perlu berjalan, tetapi juga harus dapat dipantau dan dievaluasi.
Monitoring membantu administrator melihat penggunaan CPU, memori, kapasitas penyimpanan, kondisi jaringan, serta kesehatan aplikasi. Logging menyediakan catatan peristiwa yang berguna untuk menelusuri masalah.
Beberapa teknologi yang dapat digunakan pada lapisan observabilitas meliputi:
- Vector: mengumpulkan dan memproses log sebelum meneruskannya ke sistem tujuan.
- Elasticsearch: menyimpan dan melakukan pencarian terhadap data log.
- Grafana Loki: mengelola dan mencari log berdasarkan label serta kebutuhan observabilitas.
- Grafana: menyajikan metrik dan informasi operasional dalam bentuk dashboard.
- Elastic APM: membantu menelusuri performa aplikasi dan transaksi yang didukung integrasinya.
Pemilihan komponen perlu mempertimbangkan kebutuhan operasional dan konsumsi sumber daya. Menjalankan seluruh sistem observabilitas sekaligus dapat menambah beban CPU, memori, dan penyimpanan, terutama pada server dengan kapasitas terbatas.
Karena itu, metrik yang benar-benar berguna sebaiknya diprioritaskan terlebih dahulu.
3. Bagaimana Request Diproses di Infrastruktur Masdika.ID?
Untuk memahami hubungan antarkomponen, bayangkan seorang pengunjung membuka halaman website.
- Pengunjung mengirim request melalui browser.
- Jika domain menggunakan Cloudflare sebagai proxy, request akan melewati lapisan edge sebelum diteruskan ke origin.
- Traefik menerima request yang diteruskan ke lingkungan aplikasi dan memilih tujuan berdasarkan aturan routing.
- Aplikasi memproses request dan menjalankan logika bisnis yang diperlukan.
- Jika dibutuhkan, aplikasi membaca atau menulis data ke PostgreSQL, memanfaatkan Redis untuk cache, atau mengambil file dari object storage.
- Hasil pemrosesan dikirim kembali kepada pengunjung.
- Metrik dan log yang relevan dapat dikumpulkan untuk membantu memantau kondisi layanan.
Tidak semua request harus melewati seluruh komponen tersebut. Sebagai contoh, halaman yang datanya tersedia di cache dapat diproses tanpa query database tambahan.
Efisiensi alur ini bergantung pada desain aplikasi, strategi caching, konfigurasi jaringan, dan kemampuan setiap komponen menangani beban kerja.
4. Backup dan Disaster Recovery
Backup merupakan bagian penting dari pengelolaan infrastruktur karena kegagalan perangkat keras, kesalahan konfigurasi, penghapusan data, maupun insiden keamanan dapat menyebabkan kehilangan informasi.
Strategi backup yang baik tidak cukup hanya dengan membuat salinan data. Backup perlu disimpan secara aman, dipantau, dan diuji agar dapat digunakan ketika dibutuhkan.
Beberapa praktik yang dapat diterapkan meliputi:
- Menentukan jadwal backup berdasarkan tingkat kepentingan data.
- Membuat backup database menggunakan metode yang konsisten dengan kebutuhan pemulihan.
- Mengenkripsi arsip backup jika berisi data sensitif.
- Menyimpan salinan pada lokasi atau sistem yang terpisah dari lingkungan utama.
- Menerapkan kebijakan retensi sesuai kebutuhan bisnis dan kapasitas penyimpanan.
- Menguji proses pemulihan secara berkala.
Dua metrik yang berguna dalam perencanaan pemulihan adalah Recovery Point Objective (RPO) dan Recovery Time Objective (RTO).
RPO menentukan seberapa banyak kehilangan data yang masih dapat ditoleransi, sedangkan RTO menentukan target waktu pemulihan layanan.
Sebagai contoh, backup harian tidak selalu cukup untuk aplikasi yang hanya dapat menoleransi kehilangan data selama beberapa menit. Frekuensi backup dan mekanisme replikasi harus disesuaikan dengan target pemulihan yang ditetapkan.
Backup juga tidak sebaiknya disimpan hanya pada lokasi yang sama dengan data utama. Jika seluruh sistem mengalami gangguan atau kompromi, salinan yang terpisah dapat membantu proses pemulihan.
5. Mengukur Keandalan dengan SLI dan SLO
Keandalan layanan perlu dievaluasi menggunakan metrik yang jelas, bukan hanya berdasarkan apakah website dapat dibuka ketika diperiksa.
Dalam Site Reliability Engineering (SRE), terdapat tiga konsep yang penting untuk dipahami.
Service Level Indicator (SLI) adalah metrik yang digunakan untuk mengukur kualitas layanan, misalnya proporsi request berhasil atau ketersediaan endpoint.
Service Level Objective (SLO) adalah target kualitas layanan yang ingin dicapai dalam periode tertentu.
Error budget adalah toleransi kegagalan yang berasal dari target SLO dan digunakan untuk membantu menentukan prioritas antara pengembangan fitur dan peningkatan stabilitas.
Sebagai contoh, apabila sebuah layanan menetapkan target ketersediaan 99,9% dalam periode 30 hari, perkiraan toleransi ketidaktersediaannya adalah sekitar 43,2 menit dalam periode tersebut.
Angka ini merupakan ilustrasi matematis, bukan bukti bahwa layanan tertentu telah mencapai tingkat ketersediaan tersebut.
Pengukuran aktual perlu menggunakan definisi SLI yang konsisten, sumber metrik yang dapat dipercaya, serta periode evaluasi yang ditentukan dengan jelas.
Pendekatan ini membantu tim menentukan kapan perlu memprioritaskan perbaikan bug, optimasi performa, atau pengembangan fitur baru.
6. Ringkasan Teknologi Infrastruktur
Berikut ringkasan sejumlah teknologi yang relevan dalam arsitektur infrastruktur cloud seperti yang dibahas pada artikel ini.
| Kategori | Teknologi | Fungsi |
|---|---|---|
| Edge network | Cloudflare | CDN, WAF, dan proteksi DDoS |
| Ingress | Traefik | Routing request dan middleware |
| Container orchestration | Kubernetes K3s | Pengelolaan aplikasi berbasis container |
| Virtualisasi | Proxmox VE, KVM, QEMU | Menjalankan dan mengelola mesin virtual |
| Framework aplikasi | Next.js | Pengembangan website dan aplikasi web |
| Database | PostgreSQL | Penyimpanan data relasional |
| Connection pooling | PgBouncer | Pengelolaan koneksi database |
| Cache | Redis | Penyimpanan data sementara di memori |
| Object storage | RustFS | Penyimpanan objek dan file |
| Policy engine | Kyverno | Validasi kebijakan resource Kubernetes |
| Runtime security | Falco | Deteksi aktivitas runtime yang mencurigakan |
| Security scanning | Trivy, GitLeaks | Pemeriksaan kerentanan dan potensi kebocoran secret |
| Log processing | Vector | Pengumpulan dan pemrosesan log |
| Observabilitas | Grafana, Loki, Elastic APM | Monitoring, penelusuran log, dan performa aplikasi |
Teknologi yang digunakan pada implementasi aktual dapat berbeda sesuai kebutuhan, kapasitas server, dan tahap pengembangan platform.
7. Kesimpulan
Membangun infrastruktur cloud yang andal membutuhkan lebih dari sekadar memilih teknologi populer. Setiap komponen perlu memiliki fungsi yang jelas, konfigurasi yang sesuai, serta mekanisme pemantauan dan pemulihan yang dapat diandalkan.
Kubernetes K3s dapat membantu mengelola aplikasi berbasis container. Traefik menangani routing request, PostgreSQL menyediakan penyimpanan relasional, Redis membantu mempercepat akses data tertentu, sedangkan object storage mendukung pengelolaan file.
Di sisi keamanan, pendekatan DevSecOps, pembatasan hak akses, pemindaian kerentanan, dan pemantauan runtime dapat membantu mengurangi risiko. Sementara itu, backup dan observabilitas menyediakan fondasi untuk mendeteksi masalah serta memulihkan layanan ketika terjadi gangguan.
Bagi Masdika.ID, pengembangan infrastruktur dapat diarahkan pada tiga prioritas utama: efisiensi penggunaan sumber daya, keamanan berlapis, dan keandalan yang dapat diukur.
Pada akhirnya, infrastruktur yang baik bukanlah infrastruktur yang menggunakan teknologi paling banyak, melainkan sistem yang sesuai kebutuhan, mudah dipelihara, dan memiliki mekanisme yang jelas untuk menghadapi kegagalan.
Ingin mengenal layanan yang dikembangkan oleh Masdika.ID? Kunjungi Masdika.ID atau jelajahi halaman Cloud VPS untuk mengetahui layanan yang tersedia.



Comments 0
Leave a Comment