326
Nathaniel T. Schutta @ntschutta Production Hardened Services

Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Nathaniel T. Schutta@ntschutta

ProductionHardenedServices

Page 2: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Ah services!

Page 3: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Service all the things!

Page 4: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Seems like everything is aaS these days…

Page 5: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 6: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Pretty sure about that last one…

Page 7: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Architecture as a Service…

Page 8: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 9: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Turns out, microservices aren’t a panacea!

Page 10: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 11: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Should we just go back to monoliths we release semiannually?

Page 12: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Is it too late to change careers?

Page 13: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 14: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 15: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Availability is one of our most important objectives.

Page 16: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What is the availability goal for this specific service?

Page 17: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Everyone wants 99.999%.

Page 18: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Everyone wants hot/hot.

Page 19: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Until they see the price tag.

Page 20: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

If you have to ask…

Page 21: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

— Susan J. FowlerProduction-Ready Microservices

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

Page 22: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How do we know we can trust a service?

Page 23: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Consider having a checklist.

Page 24: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

A checklist? Seriously?

Page 25: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 26: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

You know who uses checklists?

Page 27: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Pilots. Surgeons.

Page 28: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Should be quantifiable and measurable.

Page 29: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

“Fast” won’t cut it.

Page 30: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Stability.

Page 31: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Reliability.

Page 32: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Scalability.

Page 33: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Fault tolerance.

Page 34: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Performance.

Page 35: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Monitoring.

Page 36: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Documentation.

Page 37: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

I know what some of you are thinking…

Page 38: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

I don’t have time for all this.

Page 39: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We need to MOVE FAST. And break things…

Page 40: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We’re Agile. With a capital A.

Page 41: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 42: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 43: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Stable and Reliable.

Page 44: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Our services are evolving. Constantly.

Page 45: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Feature not a bug.

Page 46: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Development moves quickly.

Page 47: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Always Be Releasing.

Page 48: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Bit like spinning plates…

Page 49: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Just takes one wobble to take down the entire system.

Page 50: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 51: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Consistent development process.

Page 52: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Code passes new and existing tests before committing code.

Page 53: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Pair programming. Code reviews.

Page 54: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

External, automated build system.

Page 55: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Build pipeline.

Page 56: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Feature toggles.

Page 57: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Thorough testing.

Page 58: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 59: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Deployment pipeline.

Page 60: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Must have a standardized deployment process.

Page 61: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Staging, canary, blue/green deploys.

Page 62: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Find issues *before* our service hits production servers.

Page 63: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Staging - exact copy of production.

Page 64: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Real world without real world traffic.

Page 65: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Capacity is often a percentage of production.

Page 66: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Though some organizations have identical prod/staging hardware.

Page 67: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Staging is the real deal.

Page 68: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Code should have already passed all our internal checks.

Page 69: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Unit tests, linting, QA, customer acceptance etc.

Page 70: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 71: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Canary - aka the canary in the coal mine.

Page 72: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 73: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Some percentage of production - 5% or 10%.

Page 74: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 75: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Canaries are serving real production traffic.

Page 76: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Find errors? Automated rollbacks.

Page 77: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 78: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

¯\_(ツ)_/¯

Page 79: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 80: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How about replacing merge on GitHub.

Page 81: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

On the fly.

Page 82: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 83: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 84: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How much do you agonize over a CSS change?

Page 85: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 86: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 87: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 88: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Avoid the temptation to perform hotfixes.

Page 89: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

— Susan J. FowlerProduction-Ready Microservices

Bypassingtheinitialphasesofthedeploymentpipelineoftenintroducesnewbugsintoproduction,asemergencycodefixesruntheriskofnotbeingproperlytested.

Page 90: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

I’ve seen that movie…

Page 91: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Rollback to the last stable build.

Page 92: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Must also understand our dependencies.

Page 93: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

And plan for their inevitable failure.

Page 94: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Dependency graphs get kind of crazy.

Page 95: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

http

://ev

olut

iona

ryar

chite

ctur

e.co

m

Page 96: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

“Death Star Architecture.”

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

Page 97: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How do we mitigate a dependency failure?

Page 98: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Caching. Alternative services. Backups.

Page 99: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Depends on the criticality.

Page 100: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Insureds will submit claims during a natural disaster.

Page 101: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Better be able to accept the claim.

Page 102: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

But we might not work on it immediately.

Page 103: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 104: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Our services should have a health check.

Page 105: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 106: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Always Be (health) Checking.

Page 107: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Not healthy? Don’t route traffic to it.

Page 108: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Circuit breakers for fun and profit.

Page 109: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 110: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Defend the neighborhood as it were.

Page 111: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Services won’t live forever. Plan for decommissioning.

Page 112: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Need a deprecation period.

Page 113: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Typically more a cultural issue than a technical one.

Page 114: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 115: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Don’t just abandon a service!

Page 116: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Scalable.

Page 117: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We need to know the growth scale of our service.

Page 118: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How many requests can we handle per second? RPS.

Page 119: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We can look at current load levels.

Page 120: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We can (and should!) perform load tests.

Page 121: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Potential fitness function…

Page 122: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 123: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 124: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What is the qualitative growth scale?

Page 125: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Linked to our business.

Page 126: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 127: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Isn’t tied to a particular service!

Page 128: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 129: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We will have to translate those to our specific services.

Page 130: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Accurate growth scales are vital.

Page 131: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 132: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Business critical services should have priority.

Page 133: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Resource isolation is your friend…shared hardware hurts.

Page 134: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

May want to engage in some capacity planning.

Page 135: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Ensure we have sufficient budget.

Page 136: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Or change your process…

Page 137: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Don’t neglect your dependencies.

Page 138: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Can they scale with you?

Page 139: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Better make sure they can!

Page 140: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Collaborate. Communicate.

Page 141: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Have a scalability review with the services you rely on.

Page 142: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What does your data growth look like?

Page 143: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 144: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Is eventual consistency ok?

Page 145: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Are you read heavy? Write heavy?

Page 146: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How do we scale our database?

Page 147: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 148: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Fault Tolerant.

Page 149: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 150: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Hope for the best…prepare for the worst.

Page 151: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 152: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

— 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...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Failures, uh find a way.

Page 154: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Eliminate single points of failure!

Page 155: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Not sure what they might be?

Page 156: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Draw up the architecture.

Page 157: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What happens if *this* fails?

Page 158: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 159: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Think through how our service could fail.

Page 160: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 161: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

But we need to think about the road less traveled.

Page 162: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 163: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Only one way to really know…

Page 164: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

http

s://

gith

ub.c

om/N

etfli

x/Si

mia

nArm

y

Page 165: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Chaos engineering.

http://principlesofchaos.org

Page 166: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Intentionally break things.

Page 167: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Add latency.

Page 168: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Shut down an availability zone.

Page 169: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Kill a machine.

Page 170: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Shouldn’t be ad hoc! Monitor and log.

Page 171: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Chaos can go rogue…

Page 172: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Some things will fall through the proverbial cracks.

Page 173: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Need to detect failures.

Page 174: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

And add them to our testing suite.

Page 175: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Failures could be internal or external.

Page 176: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How is your exception handling?

Page 177: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Code will have bugs. Test thoroughly.

Page 178: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 179: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Downstream service…or a 3rd party library.

Page 180: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How does your service recover from a failure?

Page 181: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Resiliency testing.

Page 182: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Make your service fail. Repeatedly.

Page 183: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Load testing. But we covered that!

Page 184: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Where do you run your load tests?

Page 185: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Staging?

Page 186: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 187: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 188: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

— Sam Newman Building Microservices

…anecommercecompanythataccidentallyranitstestsagainstitsproductionorderingsystems.Itdidn’trealizeitsmistakeuntilalargenumberofwashingmachinesarrivedattheheadoffice.

Page 189: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Synthetic transactions.

Page 190: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 191: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Especially downstream dependencies!

Page 192: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Load testing shouldn’t be a one off.

Page 193: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Can be automated and run on a cadence.

Page 194: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Probably not during your peek traffic hours mind you…

Page 195: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Ultimate goal - reduce the impact on our users.

Page 196: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Roll back.

Page 197: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Fail over.

Page 198: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Automate, automate, automate.

Page 199: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 200: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What is the impact of *this* service failing?

Page 201: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Categorize incidents and outages by severity and scope.

Page 202: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Severity - impact to the business.

Page 203: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Scope - how much of the business is impacted?

Page 204: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Monitored.

Page 205: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Four components to monitoring.

Page 206: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Logging.

Page 207: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What would you say my service is doing?

Page 208: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Log anything that is useful.

Page 209: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 210: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Ever.

Page 211: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 212: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Tracing can be difficult. Correlation IDs help.

Page 213: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Dashboards.

Page 214: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

View the health of a service.

Page 215: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

More on this in a minute!

Page 216: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Alerting.

Page 217: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

A key metric is out of band.

Page 218: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 219: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Pager duty.

Page 220: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Must be sustainable.

Page 221: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Provide clear, concise on call documentation.

Page 222: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 223: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What *is* a key metric?

Page 224: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Some pertain solely to the infrastructure our service runs on.

Page 225: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

CPU utilization, RAM utilization, threads, database connections…

Page 226: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

These often impact more than just our service.

Page 227: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Others key metrics are specific to our service.

Page 228: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 229: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 230: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Monitor errors and exceptions as well.

Page 231: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Identify normal, warning and critical thresholds for your metrics.

Page 232: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 233: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 234: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Metrics should be displayed on a dashboard of some sort.

Page 235: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 236: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 237: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its
Page 238: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 239: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 240: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Alert on all of our key metrics, SLOs etc.

Page 241: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Absence of a key metric is also an avertable offense!

Page 242: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Alerts should be actionable.

Page 243: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 244: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How to mitigate, resolve, etc.

Page 245: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Step by step instructions. Do not make asumptions.

Page 246: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Follow the 3 AM Rule.

Page 247: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Write it assuming the person reading will be half asleep.

Page 248: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Do not be clever. Think simple.

Page 249: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

— Archilochus

Wedon'trisetothelevelofourexpectations,wefalltothelevelofourtraining.

Page 250: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 251: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

This all implies an on call rotation.

Page 252: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Sorry.

Page 253: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Everyone should do it. Rotations need to be sustainable.

Page 254: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Pair up.

Page 255: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 256: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

One developer on call for 3 years?

Page 257: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Not so much.

Page 258: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Documented.

Page 259: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What does your service do?

Page 260: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

How does it work?

Page 261: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

What does it depend on?

Page 262: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Ever say something like “the documentation is useless”?

Page 263: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

It doesn’t have to be.

Page 264: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Golden rule!

Page 265: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Do it for those that come after you.

Page 266: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 267: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 268: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Months?

Page 269: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Solid onboarding guide.

Page 270: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Make sure it is updated.

Page 271: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Documentation should be easy to find.

Page 272: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Probably a website/wiki.

Page 273: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 274: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Consider a simple (low ceremony) template.

Page 275: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 276: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

An architectural diagram or three.

Page 277: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Contact information as well as the on call rotation.

Page 278: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 279: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

FAQ.

Page 280: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Onboarding/development guide.

Page 281: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Coding standards.

Page 282: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Development pipeline.

Page 283: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Whatever helps the team understand.

Page 284: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 285: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Shouldn’t be a static thing!

Page 286: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Documentation should be reviewed along with the architecture.

Page 287: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Production Readiness Reviews.

Page 288: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Not a one time, up front thing.

Page 289: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Services should be reviewed and audited regularly.

Page 290: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Does not have to be high ceremony!

Page 291: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 292: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 293: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Do we have a shared understanding of our requirements?

Page 294: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

As we talk through it, we will discover bottlenecks.

Page 295: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 296: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

We will find interesting failure cases.

Page 297: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 298: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Review should result in a new architecture diagram or two.

Page 299: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

And probably some new items on the backlog.

Page 300: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Perform an audit.

Page 301: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 302: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Probably results in some new things in our backlog!

Page 303: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Now we can create a production readiness roadmap.

Page 304: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 305: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Drive prioritization of the work.

Page 306: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 307: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

http

://ev

olut

iona

ryar

chite

ctur

e.co

m

Page 308: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Fitness functions!

Page 309: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 310: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 311: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 312: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

For example…

Page 313: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

All service calls must respond within 100 ms.

Page 314: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Cyclomatic complexity shall not exceed X.

Page 315: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 316: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Reviews and audits should not be additional red tape.

Page 317: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Should not be overly bureaucratic.

Page 318: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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

Page 319: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Next steps.

Page 320: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Check your culture.

Page 321: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Work on that checklist.

Page 322: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Review some services!

Page 323: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Adapt and change.

Page 324: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Good luck!

Page 325: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

Questions?

Page 326: Production Hardened Services short...Building Microservices …an ecommerce company that accidentally ran its tests against its production ordering systems. It didn’t realize its

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