The Paved PaaS to Microservices
Speaker: Yunong Xiao @yunongx
See the list of all blog posts from the conference
Yunong is from Netflix. Talked about how serving multiple types of devices. Can innovate faster if not worrying about infrastructure
Scale. 1K+ microservices. JavaScriptfront end; Java back end.
Client teams own microservices for front end/client devices. Edge API is server based/back end API
Standardized Components
- Common set of components – ex: metrics, logging, alerts, dashboard, configuration
- Don’t want everyone picking RPC mechanism. Invest in one set of tooling
- Benefits of standardizing: consistency (ease of troubleshooting/support), leverage (more time for business problems with platform team focused on components), interoperability (easier integration so faster velocity and less cognitive overload), quality (more investment so higher chance of quality), support (greater knowledge base)
- “But I’m a Snowflake” – Netflix has culture of freedcom and responsibility. Helps with innovation. If works, re-integrate into ecosystem. Be concious of talking to the others and the cost to other teams of your choice.
Pre-assembled platform
- Starting a new project, there isn’t velocity yet nor stats on reliability.
- Putting components into a pre-assembled platform so can just add business logic. Less likely to be missing things like metrics because in pre-assembled platform.
- Guarantees standard and consistent metrics. Reducs MTTD (mean time to detect) and MTTR (mean time to recover)
- Maintenance vs convenience – easier for platform team to include just basics. Easier for app team to have more included. The solution is layers and favors. Having a base platform and add ons.
- Testing – running other team’s microservices tests when upgrading a platform tests the platform upgrade
- Design for configuration and hooks
- API Semantic versioning (like what Maven versions do)
- Use conventional changelog to automatically creat changelog
Automation and Tooling
- Provide CLI for common dev experience – allows scripting and consistent environment each time. Ensures can run locally and in the cloud
- Local development fast – use local debugger and curl. Can still test with container so mirrors prod config
- Provide first class mocks for components in pre-assembled platform. Facilitate determining where the problem lives. Easier to write reliable automated tests.
- Provide facilitate to generate mock data
- Need a testing API so different groups can work on mocks. Component teams create mocks against standard APIs
- “Production is war” – different levels of experience in ops. Use tools to avoid shooting off own foot. Ex: pipelines for deployment/rollback, automated canary analysis
- Dashboards provide a consolidated view for ops. Having platform generate dashboard and alerts standardizes them. Also allows for automate analytics and tooling.
Provided warning about not just copying Netflix. PaaS is for certain use cases. Components help regardless.