Presented at ServerlessConf NYC2016.
A common misconception is that "serverless" development means you no longer have to think or care about operations. This could hardly be more false. You are trading one set of problems -- building and running backend services -- for another set, where you are dealing with a sprawling mess of APIs, black boxes and opaque complex systems into which you have limited visibility and even less ability to fix things, along with cotenancy issues and usage caps. The glorious future comes with tradeoffs, and this means application developers need to get better at ops.
3. “In the Glorious Future, we will be Serverless,
and there will be NoOps.”
http://thenewstack.io/serverless-computing-growing-quickly/
~thought leaders
skip #1 and #2, just #1
9. Services are not magical pixie dust.
In the Glorious Serverless Future, more responsibility for operational
quality needs to come from application developers.
10. I’m a software engineer!
I will use hosted services
and pay them
to do all of my thinking
and caring about operations!!
11. Is my app down?
Why are my users complaining?
Everything was working fine
yesterday and I didn’t
change anything
why is my latency high?
what is query what is index
12.
13. What is operations?
Operations is the constellation of your org’s technical skills, practices,
and cultural values around designing, building and maintaining systems,
shipping software, and solving problems with technology.
15. Core competencies of operations engineering
1. Scalability
2. Resiliency
3. Availability
4. Maintainability
5. Simplicity in complex systems
6. Instrumentation and visibility
7. Graceful degradation
did i mention the mission?
need a summary at the
beginning.
17. What is your mission?
P.S. your mission is not building software
18. What is your mission?
What are your core business differentiators?
These are the riskiest to outsource.
19. Facts:
No one will ever care as much about your product
and your problems as much as you do.
No one else is thinking holistically
about your systems and their
interdependencies.
Labor can be outsourced.
Caring can’t.
20. Own your critical path
• Know your critical path
• Guard it, keep it as small as possible
• Understand the tech and dependencies of your providers
21. Even when you outsource a problem,
you are still responsible for the results.
22. The Glorious Future comes with tradeoffs:
•Less visibility
•You can’t fix it yourself, or add a feature
•The service will protect itself at your expense
•Limits may or may not be disclosed (or known) up front.
•Cotenancy is a bitch. Tooling immature.
23. OPP (Other People’s Platforms):
• What is their cotenancy model?
• Typical performance variance?
• What is your appetite for vendor lock-in?
• How transparent are they about service problems?
duplication last slide
24. Data hygiene
• Your data is your responsibility too
• Ask about retention and recovery policies
• Take offsite backups
• Validate restores — if you aren’t testing, you have
Schroedinger’s backups ¯_( )_/¯
• Never sign up for a “mystery” storage system. Black-box
query performance tuning … no.
25. Visibility and debuggability
Don’t monitor your systems using the same platform you’re
running on.
Consolidate your metrics, correlating events across
platforms is annoying.
If it moves, graph it. Instrument your client, application,
queries, everything.
26. Cultivate a team of software engineers who
value operational excellence.
** If your mission requires quality services
27. How to level up at ops
• Put software engineers on call for their own
services.
• Ask every candidate interview questions about
operations and debugging.
• Factor these skills into performance reviews and
promotions.
28. Operations skills are not optional for software engineers
in 2016. They are not “nice-to-have”,
they are table stakes.
29. The cost and pain of developing software is approximately zero
compared to the operational cost of maintaining it over time.
h/t @mcfunley, “choose boring technology”
31. ‘Serverless’ development
is the latest incarnation of very real macro trends:
outsourcing, specialization, and scarce engineering cycles.
32. The center of gravity for applications operations is shifting,
from dedicated in-house ops teams to
software engineers who own their services end to end.**
** with a little help from their SaaS friends
33. Systems and operations engineers are increasingly developing
services to solve category problems for everyone.
You can rent the world’s best talent. Everybody wins!
34. The shadow side of DevOps:
Software engineers need to level up at operations.
Outsource as many ops problems as possible!
But own operational excellence for your core differentiators.
35. The world is getting awesomer and more complicated every day.
Enjoy it. Let’s try to keep up. :)
36. with special thanks to:
Caitie McCaffrey (@caitie)
Mark Ferlatte (@ferlatte)
Dan McKinley (@mcfunley)