Deploying changes into production is the most important activity for a SaaS product as it’s how a company delivers value to users. But it’s also the most fearful activity teams have as it introduces side effects to the latest working version of the product (i.e. latest deployment).
Several techniques are commonly put in place to de-risk the deployment process: multiplication of environments that mimic production, reliance on teams of QA and SDET, increased time for designing and testing. Whilst these solutions mitigate the risk of bugs, they massively increase the time to deploy as they introduce layers between local development and the production environment leading to the riskiest issue for a SaaS company: delaying user value.
We have all experienced changes that went well in staging but didn’t work in production. We believe staging is a false sense of security.
Mono Environment addresses the question: how can we deliver value at the highest pace while minimising risks. It is the practice of spending all your time and effort on production.
Embracing Mono Environment brings several benefits but requires several engineering practices which are listed below.
- Faster time to market.
- Engineering is not a bottleneck anymore.
- Lower fixed costs. Production replica are expensive.
- Higher ROI. Teams spend their whole time harnessing the production environment.
- Less production bugs. Thinking production first means quality is built-in.
- Less frequent and shorter outages. Faster recovery.
- Better alignment between product and engineering teams
Employee engagement and retention
- Upskilling engineers, widening their business awareness and technical understanding and skills.
- Easier recruitment and longer tenure. People are happier working in an environment of high trust and where code is shipped regularly.
- Feature Flagging
- Continuous Deployment
- Cloud Native
- Infrastructure as Code
- Pragmatic Test Driven Development
- Post mortems
- Code Review
- Pragmatic Pair Programming
- Evolutionary architecture
- Zero downtime deployments
- Deploy often and small
- Test in Production
- Geoffrey Bergeret
- Paolo Escobar
- Michael Hancock