Faisal Journals
๐ŸŸก SEVIMA

Arsitektur & Tech Stack

Cloud infrastructure AWS, polyglot tech stack, migration path dari PHP monolith ke Go/Node.js microservices, dan diagram arsitektur Strangler Fig.

๐Ÿ—๏ธ Arsitektur & Tech Stack (Deep Intel)

Cloud Infrastructure โ€” AWS

AWS ServiceFungsi di SEVIMARelevansi untuk Kita
Amazon RDSBackbone transaksional ACID โ€” nilai akademik, payment gatewayPengalaman Kafka + PostgreSQL di BTPN
Amazon S3Repositori objek petabyte-scale โ€” materi kuliah, tesis, multimediaStandard, familiar
Amazon EKSKubernetes container orchestration untuk microservicesโœ… DIRECT MATCH โ€” ini yang mereka hire!
AWS LambdaEvent-driven serverless (masa depan) โ€” trigger dari S3/API GatewayBisa jadi proposed scope
Graviton2/ARM64Eksplorasi efisiensi compute DB workloadsNice-to-know

Key Architecture Insight

SEVIMA mencapai zero-downtime saat COVID surge 10x traffic (700+ PT simultan). Ini membuktikan EKS + RDS mereka sudah battle-tested. Tantangan sekarang: dekomposisi further dari monolith PHP โ†’ microservices Go/Node.js. Itulah kenapa mereka hiring.


Tech Stack โ€” Polyglot Architecture

LEGACY LAYER (masih aktif, perlu modernisasi):
โ”œโ”€โ”€ PHP (Laravel / Symfony) โ€” MVC core business logic
โ”œโ”€โ”€ Monolithic architecture โ€” masih ada coupling
โ””โ”€โ”€ Problem: setiap perubahan modul bisa cascade ke modul lain
MODERN LAYER (sedang dibangun โ€” INI POSISI KITA):
โ”œโ”€โ”€ Go (Golang) โ€” konkurensi tinggi, hemat memori
โ”‚   โ†’ goroutines untuk KRS race condition (ribuan write-requests simultan)
โ”‚   โ†’ Sync services, queue management
โ”œโ”€โ”€ Node.js โ€” async I/O intensive
โ”‚   โ†’ Real-time chat, push notifications, dashboard live updates
โ”œโ”€โ”€ Python โ€” analytics & complex logic
โ”œโ”€โ”€ Java / Rust / C++ โ€” system-level services
โ””โ”€โ”€ gRPC + REST โ€” inter-service communication
FRONTEND:
โ”œโ”€โ”€ ReactJS โ€” Single Page Application (SPA)
โ”œโ”€โ”€ Progressive Web Apps (PWA) โ€” inklusivitas low-end devices
โ””โ”€โ”€ Native Mobile + iOS SDK
INFRASTRUCTURE:
โ”œโ”€โ”€ Docker โ€” containerization (WAJIB di job desc)
โ”œโ”€โ”€ Kubernetes (EKS) โ€” orchestration
โ”œโ”€โ”€ AWS (RDS, S3, EKS, Lambda)
โ””โ”€โ”€ CI/CD pipeline
ENGINEERING CULTURE:
โ”œโ”€โ”€ Test-Driven Development (TDD) โ€” wajib
โ”œโ”€โ”€ Unit Testing โ€” massive coverage
โ”œโ”€โ”€ QA Automation โ€” menggantikan manual QC
โ”œโ”€โ”€ Code Reviews โ€” harian oleh Engineering Manager / Senior
โ””โ”€โ”€ Mentorship โ€” structured knowledge transfer

Migration Path (Inilah Yang Mereka Butuhkan)

CURRENT STATE:            TARGET STATE:
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   PHP Monolith  โ”‚      โ”‚ Auth Service โ”‚  โ”‚ Payment Svc  โ”‚
โ”‚   (Laravel)     โ”‚  โ†’   โ”‚   (Go/gRPC)  โ”‚  โ”‚  (Go/gRPC)   โ”‚
โ”‚                 โ”‚      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚  SIAKAD + LMS   โ”‚      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  + Payment      โ”‚  โ†’   โ”‚ Academic Svc โ”‚  โ”‚ LMS Service  โ”‚
โ”‚  + PMB          โ”‚      โ”‚   (Go/gRPC)  โ”‚  โ”‚ (Node.js)    โ”‚
โ”‚  + Everything   โ”‚      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                         โ”‚  PMB Service โ”‚  โ”‚ Notification โ”‚
                    โ†’    โ”‚   (Go/REST)  โ”‚  โ”‚ (Node.js/WS) โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ†• gRPC / Kafka โ†•
                         โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                         โ”‚    API Gateway        โ”‚
                         โ”‚  (Auth, Rate Limit)   โ”‚
                         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ—๏ธ Architecture Diagram โ€” Strangler Fig Migration Path

Current State โ†’ Target State

Strangler Fig Migration Sequence


Migration Pattern Detail โ€” Step by Step

Step 1: Facade / API Gateway

Deploy API Gateway di depan monolith. Semua traffic route through gateway. Monolith masih handle semua request.

Client โ”€โ”€โ†’ [API Gateway] โ”€โ”€โ†’ [PHP Monolith]

Step 2: Extract + Route

Extract Auth Service ke Go microservice. Gateway route /auth/* ke service baru, sisanya ke monolith.

Client โ”€โ”€โ†’ [API Gateway] โ”€โ”€โ”ฌโ†’ [Auth Service] โœ…
                           โ””โ†’ [PHP Monolith]

Step 3: Repeat per Domain

Extract Payment, KRS, Notification satu per satu. Setiap service punya DB sendiri (bounded context). Kafka event bus untuk cross-service communication.

Client โ”€โ”€โ†’ [API Gateway] โ”€โ”€โ”ฌโ†’ [Auth Service] โœ…
                           โ”œโ†’ [Payment Svc] โœ…
                           โ”œโ†’ [KRS Service] โœ…
                           โ”œโ†’ [Notif Svc] โœ…
                           โ””โ†’ [PHP Monolith] ๐Ÿ”ป
                               (shrinking)

Step 4: Decommission Monolith

Monolith hanya serve legacy endpoints. Eventually fully replaced. Zero-downtime throughout whole process!

Edit on GitHub

Last updated on