Spent two years splitting a 400k LOC Rails monolith into microservices. Extracted auth, payments, notifications. Classic microservices move. It was a nightmare. Distributed tracing hell, database transactions across services, midnight pages because service B was slow and service A had no idea. Network latency killed us.
Then we pivoted. Kept the monolith but added Kafka for async work. Payments publishes order events, notifications consumes them. Auth still lives in the main app but publishes user events. We get decoupling without the operational tax.
One database, one deployment pipeline, way fewer gotchas. We can still extract services later if we actually need to. Most teams split services too early and regret it.
No responses yet.