production hardened services short...production-ready microservices when we refer to an application...

326
Nathaniel T. Schutta @ntschutta Production Hardened Services

Upload: others

Post on 19-Aug-2020

0 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Nathaniel T. Schutta@ntschutta

ProductionHardenedServices

Page 2: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ah services!

Page 3: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Service all the things!

Page 4: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Seems like everything is aaS these days…

Page 5: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Infrastructure. Container. Platform. Software. Function. Pizza.

Page 6: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Pretty sure about that last one…

Page 7: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Architecture as a Service…

Page 8: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How many services do *you* have in your world these days?

Page 9: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Turns out, microservices aren’t a panacea!

Page 10: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

It can be a real challenge to maintain a healthy micro(services)biome.

Page 11: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Should we just go back to monoliths we release semiannually?

Page 12: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Is it too late to change careers?

Page 13: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

All services are equal. Some services are more equal than others.

Page 14: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Defining our SLOs is a critical step towards production hardened services.

Page 15: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Availability is one of our most important objectives.

Page 16: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What is the availability goal for this specific service?

Page 17: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Everyone wants 99.999%.

Page 18: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Everyone wants hot/hot.

Page 19: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Until they see the price tag.

Page 20: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

If you have to ask…

Page 21: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

— Susan J. FowlerProduction-Ready Microservices

Whenwerefertoanapplicationormicroserviceas“production-ready,”weconferagreatdealoftrustuponit:wetrustittobehavereasonably,wetrustittoperformreliably,wetrustittogetthejobdone…

Page 22: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How do we know we can trust a service?

Page 23: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Consider having a checklist.

Page 24: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

A checklist? Seriously?

Page 25: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

http://atulgawande.com/book/the-checklist-manifesto/

Page 26: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

You know who uses checklists?

Page 27: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Pilots. Surgeons.

Page 28: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Should be quantifiable and measurable.

Page 29: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

“Fast” won’t cut it.

Page 30: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Stability.

Page 31: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Reliability.

Page 32: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Scalability.

Page 33: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Fault tolerance.

Page 34: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Performance.

Page 35: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Monitoring.

Page 36: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Documentation.

Page 37: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

I know what some of you are thinking…

Page 38: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

I don’t have time for all this.

Page 39: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We need to MOVE FAST. And break things…

Page 40: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We’re Agile. With a capital A.

Page 41: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How is your velocity when an outage brings your business to a halt?

Page 42: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Requires buy in from the grass roots level as well as management.

Page 43: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Stable and Reliable.

Page 44: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Our services are evolving. Constantly.

Page 45: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Feature not a bug.

Page 46: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Development moves quickly.

Page 47: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Always Be Releasing.

Page 48: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Bit like spinning plates…

Page 49: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Just takes one wobble to take down the entire system.

Page 50: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How do we make sure our services are stable and reliable?

Page 51: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Consistent development process.

Page 52: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Code passes new and existing tests before committing code.

Page 53: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Pair programming. Code reviews.

Page 54: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

External, automated build system.

Page 55: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Build pipeline.

Page 56: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Feature toggles.

Page 57: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Thorough testing.

Page 58: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Linting, unit tests, regression tests, integration tests, etc.

Page 59: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Deployment pipeline.

Page 60: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Must have a standardized deployment process.

Page 61: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Staging, canary, blue/green deploys.

Page 62: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Find issues *before* our service hits production servers.

Page 63: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Staging - exact copy of production.

Page 64: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Real world without real world traffic.

Page 65: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Capacity is often a percentage of production.

Page 66: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Though some organizations have identical prod/staging hardware.

Page 67: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Staging is the real deal.

Page 68: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Code should have already passed all our internal checks.

Page 69: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Unit tests, linting, QA, customer acceptance etc.

Page 70: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

If it checks out in staging, it is going to canary - with real traffic.

Page 71: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Canary - aka the canary in the coal mine.

Page 72: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Find out if we have issues before we do a full production push.

Page 73: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Some percentage of production - 5% or 10%.

Page 74: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Can be a sliding scale too - start with 5%, move up to 20% etc.

Page 75: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Canaries are serving real production traffic.

Page 76: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Find errors? Automated rollbacks.

Page 77: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How long should our canary stage last? As long as it takes. Hours. Days.

Page 78: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

¯\_(ツ)_/¯

Page 79: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

https://twitter.com/KentBeck/status/596007846887628801

Page 80: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How about replacing merge on GitHub.

Page 81: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

On the fly.

Page 82: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 83: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 84: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How much do you agonize over a CSS change?

Page 85: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

At this point, we should have very few production issues.

Page 86: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Most likely, we’ve found the problems in staging, canary, etc.

Page 87: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Your deployment pipeline should be *the* path to production. Period.

Page 88: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Avoid the temptation to perform hotfixes.

Page 89: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

— Susan J. FowlerProduction-Ready Microservices

Bypassingtheinitialphasesofthedeploymentpipelineoftenintroducesnewbugsintoproduction,asemergencycodefixesruntheriskofnotbeingproperlytested.

Page 90: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

I’ve seen that movie…

Page 91: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Rollback to the last stable build.

Page 92: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Must also understand our dependencies.

Page 93: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

And plan for their inevitable failure.

Page 94: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Dependency graphs get kind of crazy.

Page 95: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

http

://ev

olut

iona

ryar

chite

ctur

e.co

m

Page 96: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

“Death Star Architecture.”

https://www.slideshare.net/adriancockcroft/goto-berlin

Page 97: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How do we mitigate a dependency failure?

Page 98: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Caching. Alternative services. Backups.

Page 99: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Depends on the criticality.

Page 100: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Insureds will submit claims during a natural disaster.

Page 101: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Better be able to accept the claim.

Page 102: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

But we might not work on it immediately.

Page 103: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Maybe we need to post messages to a queue, process when we’re up.

Page 104: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Our services should have a health check.

Page 105: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 106: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Always Be (health) Checking.

Page 107: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Not healthy? Don’t route traffic to it.

Page 108: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Circuit breakers for fun and profit.

Page 109: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 110: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Defend the neighborhood as it were.

Page 111: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Services won’t live forever. Plan for decommissioning.

Page 112: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Need a deprecation period.

Page 113: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Typically more a cultural issue than a technical one.

Page 114: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Monitoring is key - are we still seeing calls to the old endpoint?

Page 115: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Don’t just abandon a service!

Page 116: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Scalable.

Page 117: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We need to know the growth scale of our service.

Page 118: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How many requests can we handle per second? RPS.

Page 119: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We can look at current load levels.

Page 120: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We can (and should!) perform load tests.

Page 121: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Potential fitness function…

Page 122: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Very important but we need to look beyond just our service.

Page 123: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

A given service is just one part of a larger world.

Page 124: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What is the qualitative growth scale?

Page 125: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Linked to our business.

Page 126: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Do we need to scale by the number of users? Number of orders?

Page 127: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Isn’t tied to a particular service!

Page 128: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We will need to talk to our business partners to understand the drivers.

Page 129: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We will have to translate those to our specific services.

Page 130: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Accurate growth scales are vital.

Page 131: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

All services are equal. Some services are more equal than others.

Page 132: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Business critical services should have priority.

Page 133: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Resource isolation is your friend…shared hardware hurts.

Page 134: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

May want to engage in some capacity planning.

Page 135: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ensure we have sufficient budget.

Page 136: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Or change your process…

Page 137: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Don’t neglect your dependencies.

Page 138: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Can they scale with you?

Page 139: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Better make sure they can!

Page 140: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Collaborate. Communicate.

Page 141: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Have a scalability review with the services you rely on.

Page 142: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What does your data growth look like?

Page 143: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What type of database makes the most sense? Relational? NoSQL?

Page 144: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Is eventual consistency ok?

Page 145: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Are you read heavy? Write heavy?

Page 146: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How do we scale our database?

Page 147: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

cf scale FOO doesn’t exempt us from thinking through scalability.

Page 148: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Fault Tolerant.

Page 149: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We can’t prevent catastrophes. But we can build failure resistant services.

Page 150: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Hope for the best…prepare for the worst.

Page 151: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 152: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

— ROBERT MCMILLAN

Hamiltonwantedtoadderror-checkingcodetotheApollosystemthatwouldpreventthisfrommessingupthesystems.Butthatseemedexcessivetoherhigher-ups.“Everyonesaid,‘Thatwouldneverhappen,’”Hamiltonremembers.Butitdid.RightaroundChristmas1968.

https://www.wired.com/2015/10/margaret-hamilton-nasa-apollo/

Page 153: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Failures, uh find a way.

Page 154: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Eliminate single points of failure!

Page 155: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Not sure what they might be?

Page 156: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Draw up the architecture.

Page 157: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What happens if *this* fails?

Page 158: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

It can’t fail? Yeah it can - what happens if it does?

Page 159: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Think through how our service could fail.

Page 160: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

It is hard. We are really good at thinking through the happy path.

Page 161: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

But we need to think about the road less traveled.

Page 162: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Test for these failure scenarios. Does our service respond appropriately?

Page 163: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Only one way to really know…

Page 164: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

http

s://

gith

ub.c

om/N

etfli

x/Si

mia

nArm

y

Page 165: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Chaos engineering.

http://principlesofchaos.org

Page 166: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Intentionally break things.

Page 167: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Add latency.

Page 168: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Shut down an availability zone.

Page 169: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Kill a machine.

Page 170: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Shouldn’t be ad hoc! Monitor and log.

Page 171: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Chaos can go rogue…

Page 172: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Some things will fall through the proverbial cracks.

Page 173: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Need to detect failures.

Page 174: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

And add them to our testing suite.

Page 175: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Failures could be internal or external.

Page 176: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How is your exception handling?

Page 177: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Code will have bugs. Test thoroughly.

Page 178: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Extremely common for a dependency to cause our service to fail!

Page 179: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Downstream service…or a 3rd party library.

Page 180: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How does your service recover from a failure?

Page 181: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Resiliency testing.

Page 182: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Make your service fail. Repeatedly.

Page 183: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Load testing. But we covered that!

Page 184: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Where do you run your load tests?

Page 185: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Staging?

Page 186: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Good place to start…however it isn’t the same as testing in production.

Page 187: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 188: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

— Sam Newman Building Microservices

…anecommercecompanythataccidentallyranitstestsagainstitsproductionorderingsystems.Itdidn’trealizeitsmistakeuntilalargenumberofwashingmachinesarrivedattheheadoffice.

Page 189: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Synthetic transactions.

Page 190: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

And be sure everyone knows when you’re doing it.

Page 191: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Especially downstream dependencies!

Page 192: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Load testing shouldn’t be a one off.

Page 193: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Can be automated and run on a cadence.

Page 194: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Probably not during your peek traffic hours mind you…

Page 195: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ultimate goal - reduce the impact on our users.

Page 196: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Roll back.

Page 197: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Fail over.

Page 198: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Automate, automate, automate.

Page 199: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

All services are equal. Some services are more equal than others.

Page 200: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What is the impact of *this* service failing?

Page 201: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Categorize incidents and outages by severity and scope.

Page 202: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Severity - impact to the business.

Page 203: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Scope - how much of the business is impacted?

Page 204: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Monitored.

Page 205: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Four components to monitoring.

Page 206: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Logging.

Page 207: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What would you say my service is doing?

Page 208: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Log anything that is useful.

Page 209: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Just don’t put in any personally identifying information (PII).

Page 210: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ever.

Page 211: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Some things alone aren’t PII but when combined with other items…

Page 212: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Tracing can be difficult. Correlation IDs help.

Page 213: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Dashboards.

Page 214: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

View the health of a service.

Page 215: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

More on this in a minute!

Page 216: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Alerting.

Page 217: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

A key metric is out of band.

Page 218: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Allows us to detect an issue and fix it before our customers even notice.

Page 219: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Pager duty.

Page 220: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Must be sustainable.

Page 221: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Provide clear, concise on call documentation.

Page 222: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Vital that we think about just what we should be monitoring.

Page 223: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What *is* a key metric?

Page 224: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Some pertain solely to the infrastructure our service runs on.

Page 225: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

CPU utilization, RAM utilization, threads, database connections…

Page 226: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

These often impact more than just our service.

Page 227: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Others key metrics are specific to our service.

Page 228: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Additionally we need to know the availability, latency, response time…

Page 229: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Basically anything that we identified earlier as part of our SLO.

Page 230: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Monitor errors and exceptions as well.

Page 231: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Identify normal, warning and critical thresholds for your metrics.

Page 232: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Can be hard to figure out early on. Need a certain amount of history.

Page 233: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Not just a prod thing. We need to monitor staging. Validates the monitors.

Page 234: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Metrics should be displayed on a dashboard of some sort.

Page 235: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 236: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 237: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon
Page 238: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

But we should be alerted when things start to go wonky.

Page 239: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We shouldn’t be staring at our dashboards all day!

Page 240: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Alert on all of our key metrics, SLOs etc.

Page 241: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Absence of a key metric is also an avertable offense!

Page 242: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Alerts should be actionable.

Page 243: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Create an on call book to assist team monitoring the service.

Page 244: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How to mitigate, resolve, etc.

Page 245: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Step by step instructions. Do not make asumptions.

Page 246: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Follow the 3 AM Rule.

Page 247: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Write it assuming the person reading will be half asleep.

Page 248: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Do not be clever. Think simple.

Page 249: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

— Archilochus

Wedon'trisetothelevelofourexpectations,wefalltothelevelofourtraining.

Page 250: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

https://mobile.twitter.com/walfieee/status/953848431184875520

Page 251: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

This all implies an on call rotation.

Page 252: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Sorry.

Page 253: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Everyone should do it. Rotations need to be sustainable.

Page 254: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Pair up.

Page 255: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

One week or less with at least a month off in between.

Page 256: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

One developer on call for 3 years?

Page 257: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Not so much.

Page 258: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Documented.

Page 259: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What does your service do?

Page 260: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How does it work?

Page 261: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What does it depend on?

Page 262: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ever say something like “the documentation is useless”?

Page 263: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

It doesn’t have to be.

Page 264: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Golden rule!

Page 265: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Do it for those that come after you.

Page 266: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Don’t forget, sometimes *you* are the person that comes after you!

Page 267: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How long does it take for a new team member to be productive? Weeks?

Page 268: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Months?

Page 269: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Solid onboarding guide.

Page 270: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Make sure it is updated.

Page 271: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Documentation should be easy to find.

Page 272: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Probably a website/wiki.

Page 273: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Updating the wiki should be a normal part of the developer workflow.

Page 274: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Consider a simple (low ceremony) template.

Page 275: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Description - what does your service do? Don’t skimp here.

Page 276: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

An architectural diagram or three.

Page 277: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Contact information as well as the on call rotation.

Page 278: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Links to helpful things like the repo, dashboard link, on call book.

Page 279: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

FAQ.

Page 280: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Onboarding/development guide.

Page 281: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Coding standards.

Page 282: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Development pipeline.

Page 283: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Whatever helps the team understand.

Page 284: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Everyone should “get it” and be able to describe it. So have them do it.

Page 285: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Shouldn’t be a static thing!

Page 286: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Documentation should be reviewed along with the architecture.

Page 287: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Production Readiness Reviews.

Page 288: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Not a one time, up front thing.

Page 289: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Services should be reviewed and audited regularly.

Page 290: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Does not have to be high ceremony!

Page 291: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Get the team together - SREs, Devs, etc. Draw up the architecture.

Page 292: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Do we have a shared understanding of what the system does?

Page 293: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Do we have a shared understanding of our requirements?

Page 294: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

As we talk through it, we will discover bottlenecks.

Page 295: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

The Wombat service has a lower availability level than we need.

Page 296: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

We will find interesting failure cases.

Page 297: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

“When month end falls on the Super Blue Blood Moon.”

Page 298: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Review should result in a new architecture diagram or two.

Page 299: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

And probably some new items on the backlog.

Page 300: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Perform an audit.

Page 301: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Go back to your checklist. Does the service meet our requirements?

Page 302: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Probably results in some new things in our backlog!

Page 303: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Now we can create a production readiness roadmap.

Page 304: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

What do we need to fix and when can/should we fix it.

Page 305: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Drive prioritization of the work.

Page 306: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

A lot of this is manual. But some of it can be automated!

Page 307: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

http

://ev

olut

iona

ryar

chite

ctur

e.co

m

Page 308: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Fitness functions!

Page 309: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Basically, a set of tests we execute to validate our architecture.

Page 310: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

How close does this particular design get us to our objectives?

Page 311: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Ideally, all automated. But we may need some manual verifications.

Page 312: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

For example…

Page 313: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

All service calls must respond within 100 ms.

Page 314: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Cyclomatic complexity shall not exceed X.

Page 315: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Hard failure of an application will spin up a new instance.

Page 316: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Reviews and audits should not be additional red tape.

Page 317: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Should not be overly bureaucratic.

Page 318: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Couple of hours…depending on the complexity of the system.

Page 319: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Next steps.

Page 320: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Check your culture.

Page 321: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Work on that checklist.

Page 322: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Review some services!

Page 323: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Adapt and change.

Page 324: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Good luck!

Page 325: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

Questions?

Page 326: Production Hardened Services short...Production-Ready Microservices When we refer to an application or microservice as “production-ready,” we confer a great deal of trust upon

NathanielT.Schutta@ntschutta

Thanks!I’m a Software

Architect, Now What?

with Nate Shutta

Modeling for Software

Architectswith Nate Shutta

Presentation Patterns

with Neal Ford & Nate Schutta