Menempatkan LocalStack di dalam SDLC: dari development dan unit testing hingga integration test, strategi migrasi ke AWS asli di staging dan CI, golden path untuk tim, serta fitur Pro seperti Cloud Pods, Web Application, dan AWS Replicator.

Di episode 20 kita memetakan rilis 2026: calendar versioning, image tunggal, dan fitur stabil 2026.07.0. Tapi memiliki emulator yang hebat belum berarti workflow tim menjadi hebat. Pertanyaan sebenarnya: di titik mana LocalStack masuk ke siklus hidup pengembangan (SDLC), dan bagaimana cara keluar darinya dengan mulus?
Episode ini membangun jembatan itu. Kalian akan melihat peran LocalStack di setiap fase SDLC, strategi migrasi bertahap ke AWS asli tanpa mengubah kode secara drastis, golden path yang bisa dipakai seluruh tim, serta fitur Pro dan Ultimate yang membuat kolaborasi antar developer jauh lebih praktis.
| Fase SDLC | Peran LocalStack | Alat Kunci |
|---|---|---|
| Development | Feedback loop cepat tanpa biaya AWS | localstack start, PERSISTENCE=1 |
| Unit test | Mocking murni untuk logika | framework test, moto |
| Integration test | Emulasi penuh antar service | Testcontainers, awslocal |
| Staging / CI | Verifikasi parity sebelum deploy | service container, health check |
| Produksi | Tidak dipakai; digantikan AWS asli | endpoint produksi |
Ini penggunaan paling dasar: server berjalan, kode berubah, testing cepat. Di fase ini kecepatan adalah segalanya — LocalStack memberikan feedback loop dalam hitungan detik, bukan menit, dan tanpa biaya AWS sama sekali.
localstack start
awslocal sts get-caller-identity
awslocal sqs create-queue --queue-name orders-devTip
Gunakan PERSISTENCE=1 di development agar state tidak hilang setiap kali image restart — bayangkan harus membuat ulang tabel DynamoDB setiap pagi karena container berganti.
Unit test menargetkan satu komponen, dan di sini mocking (misalnya moto) masih wajar karena kita menguji logika murni. Tetapi begitu sebuah test menyentuh interaksi antar service — S3 mentrigger Lambda yang menulis ke DynamoDB — mocking mulai berbohong. Di titik itulah LocalStack masuk.
Untuk integration test, pendekatan paling rapi adalah Testcontainers: container LocalStack dibangkitkan otomatis saat test dimulai dan dihancurkan saat selesai. Setiap test suite mendapat emulator bersih, tanpa port conflict antar test paralel. Ini menjaga isolasi yang menjadi tema episode 15.
Pola umumnya: image localstack/localstack:stable dibuat sekali per test run, health endpoint /_localstack/health ditunggu, lalu test berjalan. Satu-satunya yang berubah pada kode aplikasi adalah endpoint URL.
Desain LocalStack sejak awal: kode yang sama berjalan di lokal dan di AWS — hanya endpoint yang berbeda. Jika kalian konsisten memakai AWS_ENDPOINT_URL di SDK modern, atau menyimpan endpoint di satu titik konfigurasi, migrasi ke staging hanyalah masalah menghapus endpoint tersebut.
# Lokal: menunjuk ke emulator
export AWS_ENDPOINT_URL=http://localhost:4566
# Staging: hapus variabel, SDK memakai AWS asli
unset AWS_ENDPOINT_URLJangan pindahkan semuanya sekaligus. Urutan yang sehat:
Di CI, jalankan LocalStack sebagai service container dengan image dan versi yang sama persis seperti lokal:
jobs:
test:
services:
localstack:
image: localstack/localstack:stable
env:
SERVICES: s3,sqs,dynamodb
ports:
- 4566:4566Tunggu health endpoint siap sebelum test dimulai: curl http://localhost:4566/_localstack/health — pola yang sama dengan episode 19. Untuk memantau error, pakai localstack logs --follow | grep -i error.
"Works on my machine" lahir dari konfigurasi yang berbeda-beda. Golden path menghapus variasi itu dengan satu sumber kebenaran:
docker-compose.yml yang di-version yang dipakai semua developer, termasuk CI.SERVICES, PERSISTENCE, DEBUG.Hasilnya: setiap anggota tim — dan robot CI — menguji hal yang persis sama. Perbedaan perilaku yang muncul hanya karena perbedaan versi, bukan karena setup.
Cloud Pods adalah snapshot state LocalStack yang bisa dibagikan lintas mesin. Alih-alih mensimulasikan ulang bug yang rumit, seorang developer cukup menyimpan pod dan rekan lain memuatnya.
localstack cloudpod create bug-repro-orders
localstack cloudpod save bug-repro-orders
localstack cloudpod load bug-repro-ordersUse case paling berharga: bug reproduction lintas tim dan lintas CI. Pod menyimpan seluruh state — tabel, queue, object — sehingga "reproduce di environment ini" menjadi satu perintah.
Web Application (app.localstack.cloud) memberi tampilan grafis atas instance: melihat service yang aktif, resource yang dibuat, hingga mengelola Cloud Pods dari browser. Untuk observability cepat saat debugging, ini jauh lebih nyaman daripada menebak dari log.
AWS Replicator (episode 17) menarik resource dari akun AWS asli ke LocalStack — SNS, RDS, VPC, IAM, dan lainnya. Ini mengubah regression testing: alih-alih data sintetis, kalian menguji terhadap struktur resource yang nyata.
awslocal replicator all --sns --iam --region us-east-1Ekosistemnya meluas melampaui AWS: LocalStack for Snowflake dan LocalStack for Azure memakai pendekatan emulasi yang sama untuk ekosistem lain. Jika tim kalian multi-cloud, berarti satu pola pengembangan — emulasikan, test, migrasikan — berlaku di mana-mana.
Semua fitur di atas berjalan di balik lisensi Pro/Ultimate, dengan dukungan enterprise: SLA, deployment internal, dan akses langsung ke tim engineering. Untuk startup dan tim kecil, fitur Community sudah menutupi sebagian besar kebutuhan; pindah ke Pro ketika kolaborasi state dan parity lanjutan mulai menjadi kebutuhan.
Ringkasan episode ini:
LocalStack bukan pengganti AWS, melainkan jembatan menuju AWS. Di episode 22 — episode terakhir seri ini — kita membandingkan LocalStack dengan alternatif lain (moto, SAM Local, Testcontainers Cloud, akun sandbox), merekap seluruh perjalanan dari episode 0 sampai 22, dan menutupnya dengan checklist emulation production-grade serta arah masa depan emulasi cloud. Sampai jumpa di penutup!