Backend Kotlin didominasi oleh dua framework: Ktor (ringan, coroutine-native) dan Spring Boot (matang, ekosistem luas). Section ini membahas keduanya.

# Backend Kotlin Overview

Kenali alasan Kotlin dipakai untuk backend: sintaks ringkas, null-safety, coroutines, dan ekosistem yang menopang layanan produksi.

Buka →
# Memilih Backend Framework

Bandingkan Ktor dan Spring Boot berdasarkan ukuran tim, kebutuhan ekosistem, latensi target, dan kurva belajar untuk memilih framework backend Kotlin.

Buka →
# Ktor Fundamentals

Pahami tiga konsep inti Ktor: Application class, pipeline phases, dan plugin — fondasi yang menopang seluruh permintaan HTTP di framework Ktor.

Buka →
# Ktor Project Structure

Bedah struktur proyek Ktor: file build.gradle.kts, application.conf HOCON, layout source code, dan konvensi modul yang dipakai kode produksi.

Buka →
# Ktor Routing

Pelajari DSL routing Ktor: route statis, route parameter dinamis {id}, nested route, dan mekanisme pencocokan path yang dipakai framework Ktor.

Buka →
# Ktor Request dan Response

Pelajari ApplicationCall di Ktor: membaca body request via call.receive, menghasilkan respons via call.respondText, mengatur status code dan header HTTP.

Buka →
# Ktor Content Negotiation

Pasang plugin ContentNegotiation Ktor untuk mengonversi objek Kotlin ke JSON dan sebaliknya secara otomatis lewat serializer yang terdaftar.

Buka →
# Ktor Serialization

Pelajari kotlinx.serialization: anotasi @Serializable, serializer yang dihasilkan kompilator, dan round-trip objek Kotlin ke JSON dengan aman.

Buka →
# Ktor Validation

Validasi body request di Ktor: validator kustom per entitas, pengumpulan error multi-field, dan respons error mengikuti RFC 7807 Problem Details.

Buka →
# Ktor Error Handling

Pasang plugin StatusPages Ktor untuk memetakan exception ke respons HTTP, mendaftar handler per tipe exception, dan menyediakan fallback untuk kesalahan tak terduga.

Buka →
# Ktor Authentication

Pasang plugin Authentication Ktor dengan Basic auth, JWT, dan Session — pahami kontrak Principal, AuthProvider, dan urutan provider dalam pipeline.

Buka →
# Ktor Authorization

Terapkan role-based access control di Ktor: principal dengan set peran, route-level guard, dan kebijakan akses yang mengembalikan 403 Forbidden bila tidak diizinkan.

Buka →
# Ktor Database Integration

Integrasikan Ktor dengan database via JDBC: HikariCP untuk connection pool, pola repository untuk akses data, dan SQLite in-memory untuk demonstrasi.

Buka →
# Ktor Testing

Uji aplikasi Ktor dengan testApplication: hidupkan engine in-memory, jalankan request, dan periksa respons dengan assertion yang jelas.

Buka →
# Spring Boot dengan Kotlin

Mulai dengan Spring Boot dan Kotlin: anotasi @SpringBootApplication, container IoC, dan konstruktor injection untuk membangun aplikasi modular.

Buka →
# Spring Dependency Injection

Pahami Dependency Injection Spring: anotasi @Component, @Service, @Repository, @Autowired, dan container IoC yang mengelola lifecycle bean.

Buka →
# Spring MVC dan REST API

Bangun REST API dengan Spring MVC: anotasi @RestController, @GetMapping, @PostMapping, @PathVariable, dan @RequestBody untuk routing dan binding.

Buka →
# Spring Data JPA

Pakai Spring Data JPA: JpaRepository<T, ID>, derived query methods seperti findByNama, dan @Query untuk query kustom yang terstruktur.

Buka →
# Spring Security

Pahami Spring Security: filter chain, JWT auth filter, SecurityContext berbasis ThreadLocal, dan anotasi @PreAuthorize untuk otorisasi method-level.

Buka →
# Database Transactions

Pahami transaksi database: prinsip ACID, @Transactional Spring, isolation level, dan commit/rollback yang diuji lewat SQLite in-memory.

Buka →
# API Pagination dan Filtering

Terapkan pagination page/pageSize dan cursor-based pada REST API, lengkap dengan filter dinamis berdasarkan kategori dan range harga.

Buka →
# API Versioning

Strategi versioning REST API: URL versioning /v1/, header versioning X-API-Version, content negotiation via Accept header, dan header Deprecation.

Buka →
# API Documentation

Hasilkan dokumentasi API OpenAPI/Swagger secara otomatis dengan springdoc-openapi: tag, operation, parameter, response, dan tautan Swagger UI.

Buka →
# Background Jobs

Jadwalkan tugas latar belakang dengan @Scheduled Spring, Quartz scheduler, JobStore, dan cron expression untuk eksekusi teratur.

Buka →
# Backend Production Readiness

Siapkan aplikasi backend untuk produksi: health check via HealthIndicator, metrics Micrometer, graceful shutdown, dan structured logging.

Buka →