Di Balik Arsitektur Lyrid: Membangun PaaS Skala Produksi
Membangun Platform-as-a-Service (PaaS) memerlukan fondasi sistem terdistribusi yang sangat kokoh untuk mengelola infrastruktur di 3 regions. Selama bertugas di platform inti Lyrid, saya memimpin transisi arsitektural yang memungkinkan platform untuk mengotomatisasi deployment aplikasi, manajemen cluster Kubernetes, serta kapabilitas routing berskala besar.
Studi kasus ini adalah tinjauan teknis menyeluruh yang membedah solusi di balik ekosistem decoupled microservices kami.
Daftar Isi
- 1. Topologi Ekosistem PaaS
- 2. Lyra dan Zeta: The Control Plane Experience
- 3. Deep Dive into Delta: Resolving Synchronous Bottlenecks
- 4. Theta dan Vega: Edge Cluster Management
- 5. Edge Router Solutions: Architecture of dns-vega and x-vega
- 6. App Deployment: Lifecycle Orchestration from Source Code to Pod
- 7. Kubernetes Cluster Provisioner: Automating Infrastructure on Demand
- Kesimpulan
1. Topologi Ekosistem PaaS
Platform kami beroperasi secara default di beberapa region spesifik seperti us-west, ap-southeast, dan eu-central. Demi menjaga kecepatan dan efisiensi keamanan, arsitektur dibagi menjadi beberapa sistem khusus yang terisolasi.
*Figure 1: Topologi tingkat tinggi platform Lyrid, megintegrasikan jaringan control plane dengan cluster Kubernetes di situs klien.*
2. Lyra dan Zeta: The Control Plane Experience
Komponen control plane menangani interaksi langsung pengguna dan mengorkestrasi state (status) sistem.
- Zeta-v2 (Next.js): Konsol antarmuka (front-facing console). Saya memimpin pengembangan dashboard orkestrasi aplikasi, mengimplementasikan Kubernetes resource explorer untuk audit Helm release values secara aman, manajemen deployment multi-region, serta monitoring kesehatan aplikasi real-time.
- Lyra (Go): Pusat REST API yang beroperasi sebagai orkestrator sistem. Di backend ini, saya membangun integrasi produk fundamental untuk otomatisasi pipeline CI/CD. Guna mengamankan kendali di sisi penyewa (tenant), saya membangun programmatic API hooks untuk rollback dan patching. Lyra juga menangani proses pemesanan ACME secara asinkron agar SSL certificate renewal berjalan secara seamless, serta menerjemahkan iterasi status ke work queue untuk backend worker.
3. Deep Dive into Delta: Resolving Synchronous Bottlenecks
REST API service (seperti Lyra) yang bersifat sinkron tidak cocok digunakan untuk menangani komputasi beban berat melalui network latency yang bervariasi. Di sinilah Delta Asynchronous Worker hadir sebagai solusi arsitektural kami. Delta merupakan kumpulan unit builder berskala horizontal yang berjalan secara independen dari siklus HTTP konvensional.
*Figure 2: Arsitektur Delta async worker untuk menangani heavy compute jobs dan resolve synchronous bottlenecks.*
Di dalam hierarki Delta, saya memimpin inisiatif deployment aplikasi inti. Saya merancang jalur otomatisasi "Docker v2 deployment", yang mengubah logika kompilasi multi-platform langsung dari perintah API internal.
Saya juga menemukan potensi deadlock pada distributed deployment saat melakukan migrasi node skala besar. Untuk mengatasinya, saya membangun custom handlers agar sistem dapat melewati instalasi berat seperti Knative atau CAPI pada servercore environments. Saya juga mengotomatisasi instalasi Calico CNI via Delta jobs untuk memastikan reliabilitas infrastruktur.
4. Theta dan Vega: Edge Cluster Management
Cluster Kubernetes tenant pada umumnya berada di ruang privat yang diamankan oleh firewall. Membuka akses masuk dari luar ke cluster ini membutuhkan mekanisme tunneling khusus yang tidak dapat diakomodasi oleh sistem HTTP/Webhook standar. Oleh karena itu, agent Vega dan server bridge Theta hadir untuk menyelesaikan interaksi asinkron ini secara aman.
*Figure 3: Arsitektur multiplexing Theta gRPC mendirikan komunikasi secara native pada beragam situs pelanggan.*
Saya melakukan refactoring pada algoritma agent Vega agar dapat mengeksekusi manifest objek Kubernetes tingkat lanjut secara native. Secara teknis, saya membangun "secret monitor loop" kustom, kerangka pengawasan ini bertugas menyinkronkan cluster credentials saat proses certificate rotation. Pada spektrum kapabilitas yang lain, penambahan fitur inspeksi Helm release layaknya memetakan sebuah direktori normal, beserta kemampuan meneruskan streaming log Pod langsung ke tampilan UI pengguna, merupakan kapabilitas inti dari platform Lyrid.
Dampak utama dari pekerjaan ini terasa saat saya memimpin migrasi menyeluruh infrastruktur menuju gRPC v2, sembari secara hati-hati menutup jalur REST API yang kurang reliabel di sisi interkoneksi Theta. Dengan menerapkan arsitektur koneksi multiplex persisten untuk seluruh ragam komponen Vega yang terkoneksi pada titik endpoint yang sama, kami berhasil mencatatkan penurunan latensi eksekusi menjadi hanya sekian milidetik, bahkan saat berada dalam beban trafik padat.
5. Edge Router Solutions: Architecture of dns-vega and x-vega
Setelah image berhasil di-build dan Pod mulai berjalan, tantangan krusial berikutnya adalah memastikan pengguna internet dapat mengakses app.user.com dan api.user.com secara terpisah walau berada pada satu server yang sama. Untuk menyelesaikannya, kami mengimplementasikan sistem dual-layer routing.
*Figure 4: Lapisan router eksternal. dns-vega melakukan resolve IP secara global, dan x-vega melakukan L7 multiplexing berbasis header Host untuk merutekan trafik ke pod yang tepat.*
Resolution Layer (dns-vega)
Inovasi kami pada dns-vega berfungsi sebagai entri global routing. Saat menerima request domain internet, dns-vega menerjemahkannya secara dinamis ke alamat IP cluster target yang valid, meminimalkan latensi propagasi DNS tradisional.
L7 Ingress (x-vega)
Setelah dns-vega mengarahkan klien ke IP node yang tepat, x-vega mengambil alih sebagai kapabilitas ingress. Berfungsi sebagai Layer 7 reverse proxy, ia menerapkan multiplexing dengan membaca secara reaktif target dari Host header jaringan.
Dengan pendekatan ini, x-vega mampu merutekan lalu lintas aplikasi secara akurat. Pengunjung UI (frontend) diteruskan langsung ke App Pod, sedangkan request REST API dilanjutkan ke API Pod, memastikan isolasi yang aman antar beban kerja aplikasi tenant yang berbeda tanpa risiko terjadinya traffic collision.
6. App Deployment: Lifecycle Orchestration from Source Code to Pod
Tujuan utama dari arsitektur PaaS ini adalah mengotomatisasi pipeline dari git push hingga menjadi aplikasi yang live di web endpoint secara global. Di Lyrid, proses ini merupakan orkestrasi multi-fase yang mencakup RBAC pada Zeta Console hingga alokasi resource via agent Vega yang berjalan di cluster Kubernetes target.
Deployment Pipeline
Setiap deployment dipicu saat pengguna mengirimkan perubahan konfigurasi melalui Zeta Console atau CLI. Platform ini mendukung dua mode deployment:
- Distributed Deployment: Mendistribusikan workload secara paralel ke beberapa kluster target kami seperti (
us-west,ap-southeast,eu-central). - Dedicated Cluster: Merutekan langsung app workload containers ke sebuah kluster Kubernetes yang spesifik dengan sistem isolasi tenant.
Sistem mengakomodasi bahasa parameter Dockerfile secara native, selain konfigurasi file .lyrid-definition.yml untuk optimisasi mendetail alur parameter build lanjutan.
*Gambar 5: E2E Lifecycle App Deployment. Lyra mendelegasikan tugas ke Delta, yang melakukan push artifacts ke registry sebelum memberi sinyal kepada Vega melalui gRPC bridge Theta untuk mem-provisioning resource Kubernetes.*
Begitu konfigurasi Container Registry diunggah, Lyra men-decode dan mendistribusikan build jobs ke Delta. Async worker Delta bertanggung jawab untuk kompilasi Docker image atau framework-specific build (seperti npm build), menyertakan image tag, dan melakukan push ke Private Container Registry.
Proses deployment berlanjut ke edge cluster via gRPC call melalui Theta bridge langsung ke Vega agent. Sebagai Kubernetes Operator, Vega melakukan apply pada manifest Deployment, Service, dan Ingress di cluster Kubernetes tujuan. Selain itu, sistem ini menyediakan real-time pods log streaming dan status event tracker agar dapat dimonitoring langsung melalui Zeta Console.
7. Kubernetes Cluster Provisioner: Automating Infrastructure on Demand
Mengelola beberapa kluster secara manual mungkin masih bisa dilakukan, tetapi PaaS yang sebenarnya harus mampu menangani lifecycle ratusan kluster di berbagai penyedia cloud dan regions yang berbeda. Saya merancang logika Kubernetes Cluster Provisioner untuk mengotomatisasi orkestrasi yang kompleks ini, mengubah permintaan komputasi mentah menjadi lingkungan operasional yang siap produksi dalam hitungan menit.
Cluster Lifecycle
Lifecycle kluster baru dimulai di Zeta Console. Setelah pengguna mendefinisikan spesifikasi kluster mereka (node, region, provider), platform memulai distributed handshake:
- Pengiriman Tugas (Job Dispatch): Lyra mengorkestrasi user instructions, membuat tugas provisioning prioritas tinggi untuk Delta Engine.
- Interaksi Infrastruktur: Delta terhubung ke instans Vega khusus yang berfungsi sebagai operator infrastruktur. Vega "bootstrap" ini terintegrasi dengan Cluster API (CAPI) dan driver khusus vendor (misalnya, AWS, GCP, atau Bare Metal).
- Core Provisioning: Delta memantau CAPI jobs yang berjalan lama, melacak kesehatan dan ketersediaan node hingga control plane Kubernetes dasar stabil.
- Injeksi Komponen: Setelah API server dapat dijangkau, Delta secara otomatis meng-install Lyrid core stack agar cluster siap menangani workload multi-tenant.
*Figure 6: Cluster Provisioning Lifecycle. Zeta mengirim request provisioning via Lyra ke Delta. Delta berinteraksi dengan Bootstrap Vega (yang memiliki CAPI dan vendor SDK) untuk membuat cluster baru. Setelah node healthy, Delta menginstruksikan Bootstrap Vega untuk men-deploy platform services ke cluster tersebut.*
Service Injection
Setelah Delta memastikan node baru berstatus healthy dan API server reachable, Delta menginstruksikan Bootstrap Vega untuk men-deploy seluruh platform services stack Lyrid ke cluster baru:
- Networking & Service Mesh: Delta menginstruksikan Vega untuk menginstal Flannel/Calico untuk jaringan CNI dan Istio sebagai service mesh.
- Penyimpanan & Framework: Kami men-deploy iscsi untuk volume persisten dan Knative untuk workload serverless.
- Lyrid Stack: Akhirnya, Vega dan X-Vega diinstal untuk menjembatani kluster kembali ke control plane global.
- Konektivitas: Kami menggunakan cert-manager untuk secara otomatis menyediakan dan menandatangani sertifikat SSL, menghasilkan subdomain
*.lyr.idkhusus untuk kluster yang baru dibuat, sehingga dapat langsung dijangkau dari internet global.
Kesimpulan
Membangun Platform-as-a-Service (PaaS) memerlukan pertimbangan technical design trade-offs yang matang. Arsitektur sistem harus mampu menyajikan responsive UI (Zeta) sekaligus menangani async processing untuk heavy tasks, seperti building cluster hingga container deployment berskala besar (Delta). Sistem ini juga harus mampu melakukan firewall traversal untuk mengelola network configuration pada tenant cluster secara aman (Theta/Vega). Infrastruktur ini telah terbukti sanggup menangani scaling challenges dan menjadi foundation yang robust untuk solusi engineering kelas enterprise.
Services Contributed
Untuk menjalankan inisiatif masif ini, saya merekayasa dan berkontribusi secara signifikan pada berbagai microservices berikut yang tersebar di seluruh ekosistem platform:
| Service | Deskripsi / Peran | Tech Stack Inti |
|---|---|---|
| Zeta | Antarmuka Web/UI platform inti tempat pengguna berinteraksi dengan services. | Next.js, React |
| Lyra | Control Plane REST API; mengorkestrasi user instructions dan antarmuka dengan backend. | Go, REST |
| Delta | Eksekutor Tugas; menangani proses asinkron yang berjalan lama (build, deployment, provisioning kluster) melalui Pub/Sub queue. | Go, Redis, GCP Pub/Sub |
| Theta | Jembatan Jaringan; mengelola komunikasi gRPC dua arah antara Lyra dan kluster Edge. | Go, gRPC |
| Vega | Pengontrol Kluster Edge; menyediakan kemampuan manajemen Kubernetes (CAPI, deployment) langsung ke control plane. | Go, Kubernetes CAPI |
| X-Vega | Edge API Gateway; bertindak sebagai reverse proxy yang mengarahkan trafik eksternal ke aplikasi yang disebarkan. | Go, Knative |
| dns-vega | Resolver DNS Global; merutekan trafik domain secara dinamis dari external DNS provider ke endpoint Lyrid. | Go |