Threat Modeling Example: STRIDE on a Real AWS Stack
A worked STRIDE threat modeling example on a real AWS stack: the filled-in matrix, 29 findings, and the two categories that came back completely empty.
A worked STRIDE threat modeling example on a real AWS stack: the filled-in matrix, 29 findings, and the two categories that came back completely empty.
Do Java virtual threads make a Spring Boot app faster? I load-tested the same app both ways on real AWS hardware. The honest answer: below saturation they do nothing, on CPU-bound work they do nothing, and where they win on blocking I/O, a properly tuned platform pool matches the throughput. The real case for virtual threads is not raw speed, it is having no pool to tune and a cheaper thread.
A head-to-head benchmark of the same Spring Boot app built for the JVM and as a GraalVM native binary - on real AWS hardware with a real database, run multiple times. Native wins startup, memory, and predictability; the warm JVM wins the median, peak throughput, and often the tail too - but the JVM swings run-to-run while native stays flat.
The javax to jakarta package rename is the hard part of the Spring Boot 3 upgrade. Why the one-line sed trick quietly breaks javax.sql and javax.crypto, which packages actually move, and how OpenRewrite does the whole migration for you. Tested on real apps.
Inject every bean that implements an interface into one field: a List or array ordered with @Order, a Set, or a Map keyed by bean name. With code.
Constructor injection in Spring Boot with Lombok @RequiredArgsConstructor: drop @Autowired, keep fields final, no boilerplate. Setup with Maven and Gradle.