Split That Monolith: a Java on Cloud Foundry Story
summary
Starts from a single Java Cloud Foundry app and shows concrete steps that split it into an ingestion API, separate query APIs (small and large) and dedicated worker processes using a queue (Redis mentioned) so uploads are accepted fast and processed asynchronously; SLAs and per-customer quotas drive rate‑limit and testing targets. Open‑sourced tools include a CF Java heap dump plugin and a JVM agent that captures dumps on thresholds. Reactive streaming and HTTP chunking reduce heap pressure; the result scales and lets parts fail independently.
AI-written summary · about
chapters (19)
- 0:00Introduction and team background
- 1:47Why start with a monolith
- 3:31Monolith vs microservices reality
- 7:03Availability and container crashes
- 8:28State management in cloud apps
- 10:13Challenges of splitting monoliths
- 10:57Asynchronous processing with queues
- 14:27Modern HTTP API techniques
- 16:16Twelve-factor app principles
- 17:21Scaling and load issues
- 18:02Troubleshooting tools for Java
- 19:50Splitting the web API further
- 22:19Edge routing for API splitting
- 24:51Key considerations for API splitting
- 25:13Thread snare pitfall
- 27:41Memory efficiency in Java
- 28:44Death by disk anti-pattern
- 30:30Reactive programming benefits
- 32:37Recap and closing remarks
related talks
35mTo Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry
57mSplitting Monolith Application to Microservices
01h 22mWebinar: Decomposing Applications for Deployability and Scalability
45mMonolith to Microservices: Modularizing Fineract 1.x
46mServerless Java: Challenges and Triumph
31mDeploying Microservice Architectures with Cloud Foundry
40mDecomposing a live application with confidence
31mRunning Java Applications on Cloud Foundry
