Backend Kotlin didominasi oleh dua framework: Ktor (ringan, coroutine-native) dan Spring Boot (matang, ekosistem luas). Section ini membahas keduanya.
Kenali alasan Kotlin dipakai untuk backend: sintaks ringkas, null-safety, coroutines, dan ekosistem yang menopang layanan produksi.
Buka → # Memilih Backend FrameworkBandingkan Ktor dan Spring Boot berdasarkan ukuran tim, kebutuhan ekosistem, latensi target, dan kurva belajar untuk memilih framework backend Kotlin.
Buka → # Ktor FundamentalsPahami tiga konsep inti Ktor: Application class, pipeline phases, dan plugin — fondasi yang menopang seluruh permintaan HTTP di framework Ktor.
Buka → # Ktor Project StructureBedah struktur proyek Ktor: file build.gradle.kts, application.conf HOCON, layout source code, dan konvensi modul yang dipakai kode produksi.
Buka → # Ktor RoutingPelajari DSL routing Ktor: route statis, route parameter dinamis {id}, nested route, dan mekanisme pencocokan path yang dipakai framework Ktor.
Buka → # Ktor Request dan ResponsePelajari ApplicationCall di Ktor: membaca body request via call.receive, menghasilkan respons via call.respondText, mengatur status code dan header HTTP.
Buka → # Ktor Content NegotiationPasang plugin ContentNegotiation Ktor untuk mengonversi objek Kotlin ke JSON dan sebaliknya secara otomatis lewat serializer yang terdaftar.
Buka → # Ktor SerializationPelajari kotlinx.serialization: anotasi @Serializable, serializer yang dihasilkan kompilator, dan round-trip objek Kotlin ke JSON dengan aman.
Buka → # Ktor ValidationValidasi body request di Ktor: validator kustom per entitas, pengumpulan error multi-field, dan respons error mengikuti RFC 7807 Problem Details.
Buka → # Ktor Error HandlingPasang plugin StatusPages Ktor untuk memetakan exception ke respons HTTP, mendaftar handler per tipe exception, dan menyediakan fallback untuk kesalahan tak terduga.
Buka → # Ktor AuthenticationPasang plugin Authentication Ktor dengan Basic auth, JWT, dan Session — pahami kontrak Principal, AuthProvider, dan urutan provider dalam pipeline.
Buka → # Ktor AuthorizationTerapkan 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 IntegrationIntegrasikan Ktor dengan database via JDBC: HikariCP untuk connection pool, pola repository untuk akses data, dan SQLite in-memory untuk demonstrasi.
Buka → # Ktor TestingUji aplikasi Ktor dengan testApplication: hidupkan engine in-memory, jalankan request, dan periksa respons dengan assertion yang jelas.
Buka → # Spring Boot dengan KotlinMulai dengan Spring Boot dan Kotlin: anotasi @SpringBootApplication, container IoC, dan konstruktor injection untuk membangun aplikasi modular.
Buka → # Spring Dependency InjectionPahami Dependency Injection Spring: anotasi @Component, @Service, @Repository, @Autowired, dan container IoC yang mengelola lifecycle bean.
Buka → # Spring MVC dan REST APIBangun REST API dengan Spring MVC: anotasi @RestController, @GetMapping, @PostMapping, @PathVariable, dan @RequestBody untuk routing dan binding.
Buka → # Spring Data JPAPakai Spring Data JPA: JpaRepository<T, ID>, derived query methods seperti findByNama, dan @Query untuk query kustom yang terstruktur.
Buka → # Spring SecurityPahami Spring Security: filter chain, JWT auth filter, SecurityContext berbasis ThreadLocal, dan anotasi @PreAuthorize untuk otorisasi method-level.
Buka → # Database TransactionsPahami transaksi database: prinsip ACID, @Transactional Spring, isolation level, dan commit/rollback yang diuji lewat SQLite in-memory.
Buka → # API Pagination dan FilteringTerapkan pagination page/pageSize dan cursor-based pada REST API, lengkap dengan filter dinamis berdasarkan kategori dan range harga.
Buka → # API VersioningStrategi versioning REST API: URL versioning /v1/, header versioning X-API-Version, content negotiation via Accept header, dan header Deprecation.
Buka → # API DocumentationHasilkan dokumentasi API OpenAPI/Swagger secara otomatis dengan springdoc-openapi: tag, operation, parameter, response, dan tautan Swagger UI.
Buka → # Background JobsJadwalkan tugas latar belakang dengan @Scheduled Spring, Quartz scheduler, JobStore, dan cron expression untuk eksekusi teratur.
Buka → # Backend Production ReadinessSiapkan aplikasi backend untuk produksi: health check via HealthIndicator, metrics Micrometer, graceful shutdown, dan structured logging.
Buka →