Production & Cloud-Native
Package, ship and operate Spring Boot: container images with buildpacks or layered Dockerfiles, graceful shutdown and probes, GraalVM native images, virtual threads, the full observability stack, and a hardening pass.
Containerising Spring Boot: Layers, Buildpacks and Base Images
Why a fat JAR in one COPY wastes your layer cache, how layered extraction fixes it, and when buildpacks beat a hand-written Dockerfile.
Graceful Shutdown and Probes: Deployments Users Don't Notice
Why SIGTERM drops in-flight requests by default, the race between deregistration and termination, and probe wiring that makes a rollout invisible.
GraalVM Native Image: What You Gain and What You Give Up
Sub-100ms startup and much less memory, in exchange for the closed-world assumption, long builds and reflection hints — and when that trade pays.
Virtual Threads: One Property, Several Consequences
What changes when Tomcat stops using platform threads, why pinning matters, and every pool you must re-examine before enabling it.
The Observability Stack: Metrics, Logs and Traces Together
Prometheus and Grafana for metrics, structured JSON logs that are actually searchable, and the trace ID that joins all three into one debugging workflow.
Production Hardening: A Go-Live Review
Locking down Actuator, sizing the JVM inside a container, the 12-factor checks that matter, and a consolidated checklist across all six phases.