Thoughtworks advice on Enterprise Software and Monoliths
Zhamak from Thoughtworks covers the latest thoughts on pluses and minuses of today's software infrastructure and also discusses the monolith.
Main Themes
- Decentralization
- Really understand your business needs (models)
Highlights
- Bringing about change
- Grassroots with support from exec level
- Really understand the upcoming business needs
- Drawbacks of centralized infrastructure (CD, Stage environments, etc)
- Teams should own their own build pipeline and infrastructure
- Teams fork their own image of production
- Kafka can become a bottleneck
- Leave control of events to the individual domains/services
- Same with API gateway
- Testing
- Decentralize: do NOT rely on integration tests (they become a bottleneck)
- Use consumer-driven contract based testing instead
- Focus on recovery (MTTR) instead of prevention
- Security
- Need to consider security earlier in the process rather than late rejections
- Can no longer rely on a central security perimeter
- Each microservice - validates and cannot trust
- Monolith
- High entropy
- Start where it matters
- Business needs - What is coming down the pipeline?
- Social code analysis - what changes very often?
- Evolutionary changes, not revolutionary
- What is the smallest unit of change to get us closer to the goal
- Don't leave multiple implementations: old and new
- Options
- Rewriting selectively is many times the right approach
- Break out what's most important
- Facade with APIs/GraphQL (good start, but..)
- Unfortunately, core functionality is still locked into the monolith
- Data pipeline
- Experimentation
- Important when production costs are high
- Consume first, build next
- Observability (logging/tracing/etc) should be included from the start
- Developers as the primary producers and consumers of Splunk, etc.