Continuous Delivery for Microservices with Spinnaker at Mercari
At Mercari, we use Spinnaker for Continuous Delivery for Microservices on Kubernetes. In this talk, I will introduce how Mercari uses Spinnaker, current status and feature plan.
its codebase is getting larger and complex... • Difficult to understand change effects • Difficult to test • Difficult to on-boarding • Difficult to isolate failure Why Microservices?
Avoid velocity stalled but rather make deployment cycle faster • Increase each developer productivity Why Microservices? Started to migrate Microservices architecure
teams produce software in short cycles, ensuring that the software can be reliably released at any time. What is Continuous Delivery? https://en.wikipedia.org/wiki/Continuous_delivery
Every change that passes the automated tests is deployed to production automatically. +Continuous Deployment https://puppet.com/blog/continuous-delivery-vs-continuous-deployment-what-s-diff
is there • In monolith ◦ Central team (e.g., SRE) handles all deployment • In microservices ◦ Each service development team need to maintain and customize deployment based on their service characteristics
kubectl apply from CI is straightforward way but… ◦ How to know a deployment “Finished”? ◦ How to handle rollback? ◦ How to implement complex deployment flow (e.g., canary)? Challenges: Kubernetes
Opinionated based on Netflix experience and lessons and learned ◦ Immutable infrastructure, Red-Black deployment • Becoming kinda de-fact tool for Cloud deployment What is Spinnaker?
Spinnaker Safeguards: Kubernetes • Spinnaker considered stable when the Kubernetes contorller manager no longer needs to modify it ◦ Deployment is stable when pods are updated and ready ◦ Service is stable when underlying LB is created
1.8 • Using Kubernetes V1 provider (GUI based) • More than 30 applications are deployed via Spinnaker • Handle deployment for 3 regions: JP, US and UK Spinnaker at Mercari
developers as stage ◦ Admin can encapsulate complex cloud operation ◦ We want to build own custom stage in future! • Everything is in one place The Good
• Spinnaker management itself by halyard ◦ Difficult to review and automate • Another cluster problem effect to the others .. • Less documentation (need to ask via Slack or GitHub Issues) The Bad
Not intuitive… difficult to know where to change ◦ Impossible to review changes ◦ Difficult to copy & paste from other team pipeline ◦ Difficult to share knowledge... The Bad I wonder how Netflix does it well (they has 9000 pipelines!)