🟦 Kotlin — Guide PRO — JVM • Android • Multiplatform
Bible Kotlin “production-ready” — coroutines, Flow, Ktor, Spring, Android Compose, KMP, tests, CI/CD, perf & sécurité.
Setup & Toolchain
JDK/Gradle/Maven, IntelliJ, BOM
JDKGradleSyntaxe & Idiomes
null-safety, data/sealed, inline/value
NullFPOOP + FP/DSL
Immutabilité, builders, contracts
DSLValueCoroutines
Scopes, Dispatchers, structured concurrency
suspendIOFlow & Channels
StateFlow/SharedFlow, back-pressure
FlowChannelKtor REST
Routing, middlewares, JSON, tests
KtorRESTSpring Boot
WebFlux, JPA/R2DBC, Validation, Test
SpringWebFluxAndroid Compose
MVVM, StateFlow, Room, Navigation
ComposeRoomKMP
Common code, expect/actual, targets
KMPNativePersistence
Exposed, JPA, jOOQ — choix
DBSQLDI
Koin/Hilt modules & scopes
DIKoinBuild & CI
Gradle Kotlin DSL, ktlint/detekt, matrix
CIGradleSérialisation
kotlinx, Moshi, Jackson-Kotlin
JSONKSPTests
JUnit5, Kotest, MockK, runTest
TestMockKPerf & Concurrency
KPIs, sizing, JFR/async-profiler
PerfJFRDSL avancés
Builders type-safe, inline helpers
DSLConfigStyle & Rules
explicitApi, rulesets, conventions
StyleLintSécurité
JWT, OWASP, secrets, HTTPS, CSRF
AuthJWTErreurs & Exceptions
Either/Result, retry, circuit breaker
RetryErrorsLogging & Obs
Structured logging, MDC, OpenTelemetry
LogsOTelCI/CD & Packaging
GHActions, container, Jib, GraalVM
CICDGradle Catalogs
version catalogs, platforms, buildSrc
GradleLibsInterop & JNI
Appels Java/C, native interop
JNINativeServerless
Cloud Functions, AWS Lambda with Kotlin
LambdaGCPCloud & Infra
Docker, K8s, Helm, KEDA autoscaling
K8sDockerObservabilité
metrics, tracing, dashboards
MetricsTracingBench & Profiling
JMH, JFR, async‑profiler
JMHJFRMémoire & GC
G1/ZGC, allocations, escape analysis
GCMemoryCollections & Algo
Sequences, persistent collections
AlgoSeqDate/Time
java.time, kotlinx-datetime
TimeClockI/O & Files
NIO2, kotlinx-io, buffering
IOFilesNetworking
HTTP clients, websockets
HTTPWSGraphQL
Ktor/Spring GraphQL, schema-first/code-first
GraphQLgRPC
Kotlin + gRPC + protobuf
gRPCProtoWebSockets
Ktor WS/Channels, back-pressure
WSRealtime- Objectifs : prise en main Setup/Toolchain, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
Gradle Kotlin DSL (JVM)
plugins { kotlin("jvm") version "2.0.0"; application }
java { toolchain { languageVersion.set(JavaLanguageVersion.of(21)) } }
repositories { mavenCentral() }
dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom")); testImplementation(kotlin("test")) }
application { mainClass.set("AppKt") }Best practices
- Utiliser JDK 17/21 LTS, Gradle 8.x, Kotlin 2.x (K2).
- Activer cache Gradle + configuration cache en CI.
- Version catalogs (libs.versions.toml) pour lock des versions.
Anti‑patterns
- Mélanger Groovy DSL et Kotlin DSL dans le même projet.
- Désactiver les tests en CI pour « gagner du temps ».
- Hardcoder des secrets/API keys dans le repo.
KPIs
| KPI | Cible | Action |
|---|---|---|
| Temps build (CI) | < 2–4 min | Cache Gradle, parallel, remote cache |
| Flakiness tests | 0% | Tests hermétiques, containers (Testcontainers) |
| Sécurité dépendances | A jour | Dependabot/Renovate + SBOM |
Checklist
- Configurer toolchain Java 21 + Kotlin 2.x.
- Activer ktlint/detekt et Checkstyle (optionnel).
- CI GitHub Actions matrix (JDK 17/21).
Tests
class BuildTest {
@Test fun ok(){ assertEquals(4, 2 + 2) }
}Snippets utiles
kotlinc Main.kt -include-runtime -d app.jar java -jar app.jar
gradle -Dorg.gradle.caching=true -Dorg.gradle.parallel=true build
- Objectifs : prise en main Coroutines, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
| Dispatcher | Usage | Note |
|---|---|---|
| Dispatcher.Default | CPU‑bound | Parallelisme = #cores |
| Dispatcher.IO | I/O DB/HTTP/files | Limiter latence p95 |
| Main | UI thread | Eviter blocages |
Structured concurrency
fun main() = runBlocking {
coroutineScope {
val a = async { computeA() }
val b = async { computeB() }
println(a.await() + b.await())
}
}Best practices
- Toujours scoped (CoroutineScope fourni par DI / framework).
- Séparer IO vs CPU (Dispatchers.IO / Default).
- Supervision: SupervisorJob pour isoler les échecs.
Anti‑patterns
- GlobalScope en prod (fuites).
- runBlocking dans le code serveur.
- Ignorer la cancellation (leaks, jobs zombies).
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Limiter contention, back‑pressure |
| Timeouts | 0 | timeouts + retry + circuit breaker |
| Fuites jobs | 0 | Scopes fermés, cancellation |
Checklist
- Créer un scope par composant long‑lived.
- Gérer cancellation dans I/O.
- Propager le contexte MDC (logging).
Tests
@OptIn(ExperimentalCoroutinesApi::class)
class CoroutinesTest {
@Test fun ok() = runTest {
val r = withContext(Dispatchers.Default){ 40 + 2 }
assertEquals(42, r)
}
}Snippets utiles
val scope = CoroutineScope(SupervisorJob()+Dispatchers.IO)
scope.launch { /* work */ }scope.cancel()
- Objectifs : prise en main Flow/StateFlow/SharedFlow, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
Flow + operators
val f = flow {
emit(1); delay(50); emit(2); emit(3)
}.map{ it * 2 }.filter{ it > 2 }
f.onEach{ println(it) }.launchIn(scope)Best practices
- StateFlow pour l'état UI, SharedFlow pour events.
- Limiter buffer/bufferSize pour back‑pressure.
- Utiliser retry/backoff en réseau.
Anti‑patterns
- collect {} bloquant dans UI.
- replay trop grand (mémoire).
- Channels non fermés.
KPIs
| KPI | Cible | Action |
|---|---|---|
| Recompositions UI | Min | StateFlow + equals() correct |
| Mémoire replay | Bas | SharedFlow replay=1 ou 0 |
| Latence flux | Stable | Schedulers appropriés |
Checklist
- Définir flux froid vs chaud.
- Limiter replay/buffer.
- Tests de flux (Turbine/Kotest).
Tests
@Test fun flow_ok() = runTest {
val s = MutableStateFlow(0); s.value = 1
assertEquals(1, s.value)
}Snippets utiles
val state = MutableStateFlow(State())
val shared = MutableSharedFlow(replay=1)
- Objectifs : prise en main Ktor REST API, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
| Feature | Role | Notes |
|---|---|---|
| ContentNegotiation | JSON, proto, CBOR | kotlinx.serialization |
| StatusPages | Erreurs custom | mappage exceptions |
| CallLogging | MDC/trace-id | corrélation |
Serveur Netty + JSON
fun Application.module(){
install(CallLogging)
install(StatusPages){ exception{ call, _ -> call.respond(HttpStatusCode.InternalServerError) } }
install(ContentNegotiation){ json() }
routing {
get("/health"){ call.respond(mapOf("ok" to true)) }
post("/echo"){ val p = call.receive Best practices
- Séparer module() et main(), tests via testApplication.
- Middlewares: logging, error handling, auth (JWT).
- Contracts DTO + validation.
Anti‑patterns
- Logic métier dans routing directement.
- Absence de tests intégration.
- Pas de timeout HTTP client/serveur.
KPIs
| KPI | Cible | Action |
|---|---|---|
| p95 /health | < 5 ms | Limiter overhead |
| Couverture tests | > 80% | TU + intégration |
| Erreurs 5xx | ≈ 0 | gestion erreurs + retry côté client |
Checklist
- DTO + validation.
- StatusPages pour exceptions.
- Tests e2e via testApplication.
Tests
@Test fun health() = testApplication {
application { module() }
client.get("/health").apply{ assertEquals(HttpStatusCode.OK, status) }
}Snippets utiles
install(ContentNegotiation){ json() }install(StatusPages){ exception{ call,_ -> call.respond(HttpStatusCode.InternalServerError) } } - Objectifs : prise en main SYNTAX, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
SYNTAX — exemple
// SYNTAX example code
fun demo() { println("SYNTAX") }Best practices
- Règle 1 SYNTAX
- Règle 2 SYNTAX
- Règle 3 SYNTAX
Anti‑patterns
- Mauvaise pratique A SYNTAX
- Mauvaise pratique B SYNTAX
- Mauvaise pratique C SYNTAX
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist SYNTAX — #1
- Checklist SYNTAX — #2
- Checklist SYNTAX — #3
Tests
@Test fun SYNTAX_ok() { assertTrue(true) }Snippets utiles
// SYNTAX snippet 1
// SYNTAX snippet 2
// SYNTAX snippet 3
- Objectifs : prise en main OOPFP, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
OOPFP — exemple
// OOPFP example code
fun demo() { println("OOPFP") }Best practices
- Règle 1 OOPFP
- Règle 2 OOPFP
- Règle 3 OOPFP
Anti‑patterns
- Mauvaise pratique A OOPFP
- Mauvaise pratique B OOPFP
- Mauvaise pratique C OOPFP
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist OOPFP — #1
- Checklist OOPFP — #2
- Checklist OOPFP — #3
Tests
@Test fun OOPFP_ok() { assertTrue(true) }Snippets utiles
// OOPFP snippet 1
// OOPFP snippet 2
// OOPFP snippet 3
- Objectifs : prise en main SPRING, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
SPRING — exemple
// SPRING example code
fun demo() { println("SPRING") }Best practices
- Règle 1 SPRING
- Règle 2 SPRING
- Règle 3 SPRING
Anti‑patterns
- Mauvaise pratique A SPRING
- Mauvaise pratique B SPRING
- Mauvaise pratique C SPRING
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist SPRING — #1
- Checklist SPRING — #2
- Checklist SPRING — #3
Tests
@Test fun SPRING_ok() { assertTrue(true) }Snippets utiles
// SPRING snippet 1
// SPRING snippet 2
// SPRING snippet 3
- Objectifs : prise en main ANDROID, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
ANDROID — exemple
// ANDROID example code
fun demo() { println("ANDROID") }Best practices
- Règle 1 ANDROID
- Règle 2 ANDROID
- Règle 3 ANDROID
Anti‑patterns
- Mauvaise pratique A ANDROID
- Mauvaise pratique B ANDROID
- Mauvaise pratique C ANDROID
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist ANDROID — #1
- Checklist ANDROID — #2
- Checklist ANDROID — #3
Tests
@Test fun ANDROID_ok() { assertTrue(true) }Snippets utiles
// ANDROID snippet 1
// ANDROID snippet 2
// ANDROID snippet 3
- Objectifs : prise en main KMP, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
KMP — exemple
// KMP example code
fun demo() { println("KMP") }Best practices
- Règle 1 KMP
- Règle 2 KMP
- Règle 3 KMP
Anti‑patterns
- Mauvaise pratique A KMP
- Mauvaise pratique B KMP
- Mauvaise pratique C KMP
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist KMP — #1
- Checklist KMP — #2
- Checklist KMP — #3
Tests
@Test fun KMP_ok() { assertTrue(true) }Snippets utiles
// KMP snippet 1
// KMP snippet 2
// KMP snippet 3
- Objectifs : prise en main PERSISTENCE, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
PERSISTENCE — exemple
// PERSISTENCE example code
fun demo() { println("PERSISTENCE") }Best practices
- Règle 1 PERSISTENCE
- Règle 2 PERSISTENCE
- Règle 3 PERSISTENCE
Anti‑patterns
- Mauvaise pratique A PERSISTENCE
- Mauvaise pratique B PERSISTENCE
- Mauvaise pratique C PERSISTENCE
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist PERSISTENCE — #1
- Checklist PERSISTENCE — #2
- Checklist PERSISTENCE — #3
Tests
@Test fun PERSISTENCE_ok() { assertTrue(true) }Snippets utiles
// PERSISTENCE snippet 1
// PERSISTENCE snippet 2
// PERSISTENCE snippet 3
- Objectifs : prise en main DI, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
DI — exemple
// DI example code
fun demo() { println("DI") }Best practices
- Règle 1 DI
- Règle 2 DI
- Règle 3 DI
Anti‑patterns
- Mauvaise pratique A DI
- Mauvaise pratique B DI
- Mauvaise pratique C DI
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist DI — #1
- Checklist DI — #2
- Checklist DI — #3
Tests
@Test fun DI_ok() { assertTrue(true) }Snippets utiles
// DI snippet 1
// DI snippet 2
// DI snippet 3
- Objectifs : prise en main BUILD, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
BUILD — exemple
// BUILD example code
fun demo() { println("BUILD") }Best practices
- Règle 1 BUILD
- Règle 2 BUILD
- Règle 3 BUILD
Anti‑patterns
- Mauvaise pratique A BUILD
- Mauvaise pratique B BUILD
- Mauvaise pratique C BUILD
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist BUILD — #1
- Checklist BUILD — #2
- Checklist BUILD — #3
Tests
@Test fun BUILD_ok() { assertTrue(true) }Snippets utiles
// BUILD snippet 1
// BUILD snippet 2
// BUILD snippet 3
- Objectifs : prise en main SERIALIZATION, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
SERIALIZATION — exemple
// SERIALIZATION example code
fun demo() { println("SERIALIZATION") }Best practices
- Règle 1 SERIALIZATION
- Règle 2 SERIALIZATION
- Règle 3 SERIALIZATION
Anti‑patterns
- Mauvaise pratique A SERIALIZATION
- Mauvaise pratique B SERIALIZATION
- Mauvaise pratique C SERIALIZATION
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist SERIALIZATION — #1
- Checklist SERIALIZATION — #2
- Checklist SERIALIZATION — #3
Tests
@Test fun SERIALIZATION_ok() { assertTrue(true) }Snippets utiles
// SERIALIZATION snippet 1
// SERIALIZATION snippet 2
// SERIALIZATION snippet 3
- Objectifs : prise en main TEST, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
TEST — exemple
// TEST example code
fun demo() { println("TEST") }Best practices
- Règle 1 TEST
- Règle 2 TEST
- Règle 3 TEST
Anti‑patterns
- Mauvaise pratique A TEST
- Mauvaise pratique B TEST
- Mauvaise pratique C TEST
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist TEST — #1
- Checklist TEST — #2
- Checklist TEST — #3
Tests
@Test fun TEST_ok() { assertTrue(true) }Snippets utiles
// TEST snippet 1
// TEST snippet 2
// TEST snippet 3
- Objectifs : prise en main PERF, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
PERF — exemple
// PERF example code
fun demo() { println("PERF") }Best practices
- Règle 1 PERF
- Règle 2 PERF
- Règle 3 PERF
Anti‑patterns
- Mauvaise pratique A PERF
- Mauvaise pratique B PERF
- Mauvaise pratique C PERF
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist PERF — #1
- Checklist PERF — #2
- Checklist PERF — #3
Tests
@Test fun PERF_ok() { assertTrue(true) }Snippets utiles
// PERF snippet 1
// PERF snippet 2
// PERF snippet 3
- Objectifs : prise en main DSL, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
DSL — exemple
// DSL example code
fun demo() { println("DSL") }Best practices
- Règle 1 DSL
- Règle 2 DSL
- Règle 3 DSL
Anti‑patterns
- Mauvaise pratique A DSL
- Mauvaise pratique B DSL
- Mauvaise pratique C DSL
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist DSL — #1
- Checklist DSL — #2
- Checklist DSL — #3
Tests
@Test fun DSL_ok() { assertTrue(true) }Snippets utiles
// DSL snippet 1
// DSL snippet 2
// DSL snippet 3
- Objectifs : prise en main STYLE, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
STYLE — exemple
// STYLE example code
fun demo() { println("STYLE") }Best practices
- Règle 1 STYLE
- Règle 2 STYLE
- Règle 3 STYLE
Anti‑patterns
- Mauvaise pratique A STYLE
- Mauvaise pratique B STYLE
- Mauvaise pratique C STYLE
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist STYLE — #1
- Checklist STYLE — #2
- Checklist STYLE — #3
Tests
@Test fun STYLE_ok() { assertTrue(true) }Snippets utiles
// STYLE snippet 1
// STYLE snippet 2
// STYLE snippet 3
- Objectifs : prise en main SECURITY, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
SECURITY — exemple
// SECURITY example code
fun demo() { println("SECURITY") }Best practices
- Règle 1 SECURITY
- Règle 2 SECURITY
- Règle 3 SECURITY
Anti‑patterns
- Mauvaise pratique A SECURITY
- Mauvaise pratique B SECURITY
- Mauvaise pratique C SECURITY
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist SECURITY — #1
- Checklist SECURITY — #2
- Checklist SECURITY — #3
Tests
@Test fun SECURITY_ok() { assertTrue(true) }Snippets utiles
// SECURITY snippet 1
// SECURITY snippet 2
// SECURITY snippet 3
- Objectifs : prise en main ERRORS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
ERRORS — exemple
// ERRORS example code
fun demo() { println("ERRORS") }Best practices
- Règle 1 ERRORS
- Règle 2 ERRORS
- Règle 3 ERRORS
Anti‑patterns
- Mauvaise pratique A ERRORS
- Mauvaise pratique B ERRORS
- Mauvaise pratique C ERRORS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist ERRORS — #1
- Checklist ERRORS — #2
- Checklist ERRORS — #3
Tests
@Test fun ERRORS_ok() { assertTrue(true) }Snippets utiles
// ERRORS snippet 1
// ERRORS snippet 2
// ERRORS snippet 3
- Objectifs : prise en main OBS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
OBS — exemple
// OBS example code
fun demo() { println("OBS") }Best practices
- Règle 1 OBS
- Règle 2 OBS
- Règle 3 OBS
Anti‑patterns
- Mauvaise pratique A OBS
- Mauvaise pratique B OBS
- Mauvaise pratique C OBS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist OBS — #1
- Checklist OBS — #2
- Checklist OBS — #3
Tests
@Test fun OBS_ok() { assertTrue(true) }Snippets utiles
// OBS snippet 1
// OBS snippet 2
// OBS snippet 3
- Objectifs : prise en main CICD, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
CICD — exemple
// CICD example code
fun demo() { println("CICD") }Best practices
- Règle 1 CICD
- Règle 2 CICD
- Règle 3 CICD
Anti‑patterns
- Mauvaise pratique A CICD
- Mauvaise pratique B CICD
- Mauvaise pratique C CICD
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist CICD — #1
- Checklist CICD — #2
- Checklist CICD — #3
Tests
@Test fun CICD_ok() { assertTrue(true) }Snippets utiles
// CICD snippet 1
// CICD snippet 2
// CICD snippet 3
- Objectifs : prise en main CATALOGS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
CATALOGS — exemple
// CATALOGS example code
fun demo() { println("CATALOGS") }Best practices
- Règle 1 CATALOGS
- Règle 2 CATALOGS
- Règle 3 CATALOGS
Anti‑patterns
- Mauvaise pratique A CATALOGS
- Mauvaise pratique B CATALOGS
- Mauvaise pratique C CATALOGS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist CATALOGS — #1
- Checklist CATALOGS — #2
- Checklist CATALOGS — #3
Tests
@Test fun CATALOGS_ok() { assertTrue(true) }Snippets utiles
// CATALOGS snippet 1
// CATALOGS snippet 2
// CATALOGS snippet 3
- Objectifs : prise en main JNI, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
JNI — exemple
// JNI example code
fun demo() { println("JNI") }Best practices
- Règle 1 JNI
- Règle 2 JNI
- Règle 3 JNI
Anti‑patterns
- Mauvaise pratique A JNI
- Mauvaise pratique B JNI
- Mauvaise pratique C JNI
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist JNI — #1
- Checklist JNI — #2
- Checklist JNI — #3
Tests
@Test fun JNI_ok() { assertTrue(true) }Snippets utiles
// JNI snippet 1
// JNI snippet 2
// JNI snippet 3
- Objectifs : prise en main SERVERLESS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
SERVERLESS — exemple
// SERVERLESS example code
fun demo() { println("SERVERLESS") }Best practices
- Règle 1 SERVERLESS
- Règle 2 SERVERLESS
- Règle 3 SERVERLESS
Anti‑patterns
- Mauvaise pratique A SERVERLESS
- Mauvaise pratique B SERVERLESS
- Mauvaise pratique C SERVERLESS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist SERVERLESS — #1
- Checklist SERVERLESS — #2
- Checklist SERVERLESS — #3
Tests
@Test fun SERVERLESS_ok() { assertTrue(true) }Snippets utiles
// SERVERLESS snippet 1
// SERVERLESS snippet 2
// SERVERLESS snippet 3
- Objectifs : prise en main CLOUD, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
CLOUD — exemple
// CLOUD example code
fun demo() { println("CLOUD") }Best practices
- Règle 1 CLOUD
- Règle 2 CLOUD
- Règle 3 CLOUD
Anti‑patterns
- Mauvaise pratique A CLOUD
- Mauvaise pratique B CLOUD
- Mauvaise pratique C CLOUD
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist CLOUD — #1
- Checklist CLOUD — #2
- Checklist CLOUD — #3
Tests
@Test fun CLOUD_ok() { assertTrue(true) }Snippets utiles
// CLOUD snippet 1
// CLOUD snippet 2
// CLOUD snippet 3
- Objectifs : prise en main OBSERVE, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
OBSERVE — exemple
// OBSERVE example code
fun demo() { println("OBSERVE") }Best practices
- Règle 1 OBSERVE
- Règle 2 OBSERVE
- Règle 3 OBSERVE
Anti‑patterns
- Mauvaise pratique A OBSERVE
- Mauvaise pratique B OBSERVE
- Mauvaise pratique C OBSERVE
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist OBSERVE — #1
- Checklist OBSERVE — #2
- Checklist OBSERVE — #3
Tests
@Test fun OBSERVE_ok() { assertTrue(true) }Snippets utiles
// OBSERVE snippet 1
// OBSERVE snippet 2
// OBSERVE snippet 3
- Objectifs : prise en main BENCH, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
BENCH — exemple
// BENCH example code
fun demo() { println("BENCH") }Best practices
- Règle 1 BENCH
- Règle 2 BENCH
- Règle 3 BENCH
Anti‑patterns
- Mauvaise pratique A BENCH
- Mauvaise pratique B BENCH
- Mauvaise pratique C BENCH
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist BENCH — #1
- Checklist BENCH — #2
- Checklist BENCH — #3
Tests
@Test fun BENCH_ok() { assertTrue(true) }Snippets utiles
// BENCH snippet 1
// BENCH snippet 2
// BENCH snippet 3
- Objectifs : prise en main MEMORY, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
MEMORY — exemple
// MEMORY example code
fun demo() { println("MEMORY") }Best practices
- Règle 1 MEMORY
- Règle 2 MEMORY
- Règle 3 MEMORY
Anti‑patterns
- Mauvaise pratique A MEMORY
- Mauvaise pratique B MEMORY
- Mauvaise pratique C MEMORY
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist MEMORY — #1
- Checklist MEMORY — #2
- Checklist MEMORY — #3
Tests
@Test fun MEMORY_ok() { assertTrue(true) }Snippets utiles
// MEMORY snippet 1
// MEMORY snippet 2
// MEMORY snippet 3
- Objectifs : prise en main COLLECTIONS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
COLLECTIONS — exemple
// COLLECTIONS example code
fun demo() { println("COLLECTIONS") }Best practices
- Règle 1 COLLECTIONS
- Règle 2 COLLECTIONS
- Règle 3 COLLECTIONS
Anti‑patterns
- Mauvaise pratique A COLLECTIONS
- Mauvaise pratique B COLLECTIONS
- Mauvaise pratique C COLLECTIONS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist COLLECTIONS — #1
- Checklist COLLECTIONS — #2
- Checklist COLLECTIONS — #3
Tests
@Test fun COLLECTIONS_ok() { assertTrue(true) }Snippets utiles
// COLLECTIONS snippet 1
// COLLECTIONS snippet 2
// COLLECTIONS snippet 3
- Objectifs : prise en main TIME, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
TIME — exemple
// TIME example code
fun demo() { println("TIME") }Best practices
- Règle 1 TIME
- Règle 2 TIME
- Règle 3 TIME
Anti‑patterns
- Mauvaise pratique A TIME
- Mauvaise pratique B TIME
- Mauvaise pratique C TIME
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist TIME — #1
- Checklist TIME — #2
- Checklist TIME — #3
Tests
@Test fun TIME_ok() { assertTrue(true) }Snippets utiles
// TIME snippet 1
// TIME snippet 2
// TIME snippet 3
- Objectifs : prise en main IO, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
IO — exemple
// IO example code
fun demo() { println("IO") }Best practices
- Règle 1 IO
- Règle 2 IO
- Règle 3 IO
Anti‑patterns
- Mauvaise pratique A IO
- Mauvaise pratique B IO
- Mauvaise pratique C IO
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist IO — #1
- Checklist IO — #2
- Checklist IO — #3
Tests
@Test fun IO_ok() { assertTrue(true) }Snippets utiles
// IO snippet 1
// IO snippet 2
// IO snippet 3
- Objectifs : prise en main NET, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
NET — exemple
// NET example code
fun demo() { println("NET") }Best practices
- Règle 1 NET
- Règle 2 NET
- Règle 3 NET
Anti‑patterns
- Mauvaise pratique A NET
- Mauvaise pratique B NET
- Mauvaise pratique C NET
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist NET — #1
- Checklist NET — #2
- Checklist NET — #3
Tests
@Test fun NET_ok() { assertTrue(true) }Snippets utiles
// NET snippet 1
// NET snippet 2
// NET snippet 3
- Objectifs : prise en main GRAPHQL, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
GRAPHQL — exemple
// GRAPHQL example code
fun demo() { println("GRAPHQL") }Best practices
- Règle 1 GRAPHQL
- Règle 2 GRAPHQL
- Règle 3 GRAPHQL
Anti‑patterns
- Mauvaise pratique A GRAPHQL
- Mauvaise pratique B GRAPHQL
- Mauvaise pratique C GRAPHQL
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist GRAPHQL — #1
- Checklist GRAPHQL — #2
- Checklist GRAPHQL — #3
Tests
@Test fun GRAPHQL_ok() { assertTrue(true) }Snippets utiles
// GRAPHQL snippet 1
// GRAPHQL snippet 2
// GRAPHQL snippet 3
- Objectifs : prise en main GRPC, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
GRPC — exemple
// GRPC example code
fun demo() { println("GRPC") }Best practices
- Règle 1 GRPC
- Règle 2 GRPC
- Règle 3 GRPC
Anti‑patterns
- Mauvaise pratique A GRPC
- Mauvaise pratique B GRPC
- Mauvaise pratique C GRPC
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist GRPC — #1
- Checklist GRPC — #2
- Checklist GRPC — #3
Tests
@Test fun GRPC_ok() { assertTrue(true) }Snippets utiles
// GRPC snippet 1
// GRPC snippet 2
// GRPC snippet 3
- Objectifs : prise en main WS, patterns de prod, erreurs fréquentes.
- KPIs de pilotage (latence p95, throughput, erreurs).
- Snippets prêts à copier/coller.
WS — exemple
// WS example code
fun demo() { println("WS") }Best practices
- Règle 1 WS
- Règle 2 WS
- Règle 3 WS
Anti‑patterns
- Mauvaise pratique A WS
- Mauvaise pratique B WS
- Mauvaise pratique C WS
KPIs
| KPI | Cible | Action |
|---|---|---|
| Latence p95 | Stable | Optimiser chemins chauds |
| Erreurs | ≈ 0 | Tests, validation |
| Throughput | Max | Parallelisme/IO |
Checklist
- Checklist WS — #1
- Checklist WS — #2
- Checklist WS — #3
Tests
@Test fun WS_ok() { assertTrue(true) }Snippets utiles
// WS snippet 1
// WS snippet 2
// WS snippet 3
