Azhary Arliansyah

Articles / Di Balik Arsitektur Lyrid: Membangun PaaS Skala Produksi

Di Balik Arsitektur Lyrid: Membangun PaaS Skala Produksi

Go Kubernetes Microservices System Architecture gRPC
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

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.

Zeta (Web UI) Next.js Console Lyra (REST API) Golang API Delta Engine Build / Async Tasks Theta (gRPC) Bridge Server dns-vega (Global) Primary Kubernetes Cluster Other Clusters x-vega (Proxy) Ingress Controller Vega Agent Cluster Operator App Pod API Pod

*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.

Lyra (API) Async Dispatcher Publish Job Google / Redis Pub/Sub Queue Consume Delta Engine Docker v2 Builder Multi-platform Docker Build Servercore Provisioning Target Kubernetes Cluster

*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.

Lyra Gateway HTTP Endpoint Internal API Theta Server gRPC v2 Bridge gRPC gRPC gRPC Vega (Cluster A) Reads K8s Helm state Vega (Cluster B) Patching Deployment Vega (Cluster C) Streams Pod Logs

*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.

GET app.lyrid.io POST api.lyrid.io dns-vega (Global) Resolves Domain Target Kubernetes Cluster App resolves IP x-vega (Ingress) L7 Reverse Proxy ? Frontend Service Target: app Backend API (Go) Target: api Host Match (app) Host Match (api)

*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.

Zeta / CLI Source Code Lyra API Parser / Dispatch Delta Engine Builder Worker Jobs Registry Docker Images Push Image Theta gRPC Nexus Managed K8s Cluster Vega Agent Kubernetes Op Create Deployment App Pod App Pod Status & Log Streaming

*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:

  1. Pengiriman Tugas (Job Dispatch): Lyra mengorkestrasi user instructions, membuat tugas provisioning prioritas tinggi untuk Delta Engine.
  2. 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).
  3. Core Provisioning: Delta memantau CAPI jobs yang berjalan lama, melacak kesehatan dan ketersediaan node hingga control plane Kubernetes dasar stabil.
  4. Injeksi Komponen: Setelah API server dapat dijangkau, Delta secara otomatis meng-install Lyrid core stack agar cluster siap menangani workload multi-tenant.
Zeta Lyra API Delta Task Queue Bootstrap Vega (Existing Cluster Assets) CAPI Vendor SDK Provision Newly Created Cluster Calico ISCSi Istio Redis Knative Vega X-Vega cert-manager xxx.yyy.lyr.id Monitor node status & trigger service injection

*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.id khusus 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