Belajar Kotlin + Spring Boot dari fundamental bahasa (null safety, OOP, coroutines) sampai membangun sistem microservice sungguhan - REST API, PostgreSQL, testing berlapis (unit, integration, Testcontainers), sampai dua service nyata (Order Service & Inventory Service) yang saling terhubung lewat API Gateway. 29 episode, 5 fase, 100% gratis - lengkap dengan tiga project Kotlin + Spring Boot yang bisa di-clone dan dijalankan sendiri, semua test-nya hijau.
Pembuka seri Kotlin Backend untuk Microservice — kenapa Kotlin, apa yang akan dipelajari di 29 bab (Fase 0-4), dan gambaran roadmap lengkap dari fundamental sampai microservice production-ready.
Bab pertama Fase 0 - memahami val/var, tipe non-null vs nullable, safe call, dan elvis operator lewat test asli NullSafetyBasicsTest.kt di project Order Service.
Bab kedua Fase 0 - membedah data class, sealed class untuk exhaustive when, dan object sebagai singleton lewat test asli OopBasicsTest.kt di Order Service.
Bab ketiga Fase 0 - memahami extension function dan higher-order function lewat test asli FunctionalBasicsTest.kt, fondasi gaya penulisan kode Kotlin yang ringkas.
Bab keempat Fase 0 - praktik filter, map, reduce, dan groupBy pada studi kasus keranjang belanja lewat test asli CollectionsBasicsTest.kt di Order Service.
Bab kelima Fase 0 - mengenal suspend fun, async/awaitAll, dan runTest lewat test asli CoroutinesBasicsTest.kt, fondasi komunikasi antar service tanpa blocking.
Bab penutup Fase 0 - membandingkan kotlin.Result dan sealed class untuk error handling lewat test asli ErrorHandlingBasicsTest.kt, sebelum masuk ke Fase 1 membangun Order Service.
Bab pembuka Fase 1 - mengenal Spring Boot sebagai standar backend Kotlin, lalu membedah build.gradle.kts dan entry point Order Service hasil scaffold Spring Initializr.
Memahami IoC container dan constructor injection ala Kotlin lewat AppInfoProperties dan PingController - dua kelas kecil yang merangkum pola dependency injection di Spring Boot.
Membedah OrderController - createOrder, getOrder, dan searchOrders - untuk memahami RestController, path/query parameter, dan kenapa ResponseEntity penting untuk kontrol status HTTP.
Membedah CreateOrderRequest, OrderResponse, dan extension function toResponse() - kenapa API contract dipisah dari domain model, dan bagaimana Jackson 3 menyerialisasinya otomatis.
Membahas Jakarta Bean Validation di CreateOrderRequest, peran @Valid di controller, dan kenapa Kotlin butuh use-site target @field agar anotasi validasi benar-benar berfungsi.
Menutup Fase 1 dengan GlobalExceptionHandler - satu class @RestControllerAdvice yang menyeragamkan response error di seluruh Order Service, dari 404 sampai kegagalan validasi.
Menyambungkan Order Service ke PostgreSQL lokal lewat Docker Compose dan Spring Data JPA, lalu memahami kenapa ddl-auto diset validate, bukan update atau create.
Mengubah data class Kotlin jadi JPA entity dengan anotasi @Entity, memahami EnumType.STRING, dan memakai JpaRepository untuk CRUD tanpa implementasi manual.
Membuat tabel orders lewat migration Flyway yang eksplisit dan reviewable, memahami penamaan V1__..., serta alasan NUMERIC dipakai untuk kolom harga uang.
Membedah tiga gaya query di OrderRepository — derived query method, JPQL manual dengan @Query, dan constructor expression yang memproyeksikan langsung ke DTO.
Memahami @Transactional lewat createOrdersBulk dan membuktikan rollback-nya benar-benar terjadi lewat integration test PostgreSQL asli, bukan mock atau simulasi.
Membandingkan application-dev.yml, application-test.yml, dan application-prod.yml Order Service untuk memahami cara Spring Boot melayer konfigurasi per environment.
Membangun fondasi Fase 3 dengan unit test murni memakai JUnit5 dan MockK untuk menguji logic OrderService tanpa Spring context maupun database sungguhan.
Memperdalam unit test OrderService dengan JUnit5 parameterized test dan CsvSource untuk menguji titik batas business rule REVIEW_THRESHOLD tanpa duplikasi kode.