This document discusses the process of transitioning a legacy monolithic application called San Diego to a microservices architecture with continuous deployment. The key steps taken included:
1) Identifying domain objects and services and using a strangler pattern to gradually migrate functionality from the monolith to new services.
2) Implementing continuous integration, delivery, and deployment practices like Docker containers, automated testing, and deploying on every code change.
3) Defining processes around pair programming, code quality, feature flags and dashboards to monitor the new system.
4) Using automation to deploy new versions, replacing containers on load balancers to achieve near real-time deploys with minimal downtime.