Post on 16-Apr-2017
Embed Size (px)
Spinnaker and Microservices @ Datawire.io
Trials and TribulationsPhilip Lombardi
1. Philip Lombardi @ Datawire.io (twitter: @TheBigLombowski)
2. Datawire.io is building a Microservices Development Kit to enable developers to build resilient microservice applications.
3. Check us out after meetup: datawire.io
What is a Microservice?
Common Microservice Definitions
Its a service that is...
Small Self contained Narrow in scope Bounded context Independent Loosely coupled
All these things describe attributes
A (simpler) Microservices Definition
A Microservice is a unit of business logic.
A Microservice application is a distributed composition of business logic via services.
Microservice Apps tend to look like this...
Death Star Topology
Microservices Benefits and Tradeoffs
Easier to reason about the individual components that make up the system.
Easy to add new biz logic.
More difficult to operate.
More difficult to deploy than a classic monolith.
A Traditional Architecture...
Traditional Architecture Deployment Options
Relatively well-known patterns for updating a Monolithic App.
Blue - Green (or Red - Black if youre Netflix)
Shutdown and Replace
But Microservices Apps are a bit more Complex
Definitely more than 1 tier of servers processing biz logic.
Likely more than 1 data storage solution in place.
Possibly polyglot programming stack.
Services probably have dependencies between each other
If youre lucky the dependencies arent circular.
A Microservices Architecture...
Good Luck Deploying That without Help
Simply too many moving parts
Brain starts to hurt as you think about concurrent versions
Gotta keep the whole system up and running because downtime = $$$.
1. We have a handful of services that are composed to build the backend of our product.
2. Basically two backend developers.
3. All but 1 of those services is deployed via Spinnaker (its being ported soon because the old deploy is painful).
4. Spinnaker allows us to deploy but it hasnt been a silver bullet. There is definitely pain for a small adopting team which weve learned about.
1. The claims Spinnaker makes are actually true and it does work!
2. Once you learn how to navigate around the UI and how pipelines are constructed its fairly easy to use.
3. Getting Started is painless. Run a pre-baked AMI.
4. Really easy to define custom workflows for putting services into production.
1. The UIa. Does have some peculiarities around element behaviors.b. Definitely does some odd things at times (the Applications list doesnt update sometimes).
c. Lacks clarity around some form elements.
2. Deployment of Spinnakera. The pre-baked AMIs are good for limited use but quickly you run into customization issues and
b. Had to bake our own custom AMI for use in VPN etc.
3. Developers Complained it was Too Slowa. Not really a Spinnaker fault per-se, but developers wanted something faster than AMI bakes.
1. UI issues scared and scarred my coworkersa. Its too complexb. It doesnt work
c. The unstated goal of Spinnaker is CD Pipelines Made Easy but its hard to get people to buy that
when their first experiences are painful.
2. Re-configuration is a nightmarea. You need to modify YAML docs on the FS and restart Spinnaker.
i. Lots of stress around restarting Spinnaker when there is lots of deployments in progress.b. No good answer for backing up all that config.
i. S3 seems to be the answer nowadays but back when we adopted Cassandra was the only
3. Documentationa. No docs about what a production quality setup looks like.
b. No docs about how to upgrade Spinnaker safely.17
Some Reflections on Spinnaker
1. Personally, I still like the tool...
2. Jury is still deliberating on whether we continue with it at Datawire...a. Were planning to containerize and move to Kubernetes in the not so distant future.
b. We will likely explore the k8s integration and make a decision then.
3. I would probably pay some amount of money for managed and easy to configure Spinnaker (*hint hint*).
4. Might have just picked Spinnaker too early for a team our size. a. You can count the number of server-side devs @ Datawire on a single hand.
b. Complexity of our apps microservices is low enough that a complex workflow mgmt solution is probably not what we needed.
c. I could totally see Spinnaker being a lot more valuable at a previous gig where the team was much larger and there was a relatively complex workflow.
Places Where Improvement is Badly Needed
3. Configuration and Configuration Reloading. a. Already having nightmares about this if we use Spinnaker w/ Kubernetes since you need to
constantly update the dockerRegistries config in Cloud Driver.
Spinnaker solves a relatively complex problem: Managing CD Pipelines and Deployment Orchestration
Might be overkill for a small team especially if you have limited engineering budget to manage Spinnaker OR train users on it.
Properly vet whether your development team is ready for the tool before adopting.
To learn more
email@example.com Twitter: @TheBigLombowski
https://www.datawire.io/careers/ Java|Scala|Kotlin, Python, Go and Kubernetes Developers Wanted! Hiring for DevOps | SRE role!