Top Banner
Measuring Micro-services Richard Rodger @rjrodger nearform.com
33

Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Jul 29, 2015

Download

Software

Codemotion
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Measuring Micro-services Richard Rodger @rjrodger nearform.com

Page 2: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Pulse. Temperature. Blood Pressure. Micro-service systems have emergent properties too.

Page 3: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

nearForm & micro-services 50+ production systems. The good, the bad, and the ugly.

Page 4: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

What are micro-services? Independent processes that exchange messages.

Page 5: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Messages are fundamental. Message behavior has emergent properties.

Page 6: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Message flow rate. Easy to measure. Tells you a lot. Independent of services.

Page 7: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Deploy a new micro-service. Does the new version break anything?

Page 8: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

To measure changes to services, measure changes to message flow rates.

Page 9: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Micro-service message patterns. What to measure? Here’s what we’ve found useful…

Page 10: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Actor. A pool of services share message load evenly (round-robin, say).

Page 11: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Subscriber. Many services all listen for the same set of message types.

Page 12: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Chain. An initial message causes a chain of serial message steps.

Page 13: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Tree. An initial message causes a flowering of child messages.

Page 14: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Why? It's the risk, stupid! Monoliths put everybody in danger.

Page 15: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Risk. Reduction can be measured. Leave elimination to Machiavelli.

Page 16: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Our "best practices" for risk. Unit tests; code reviews; standards. Do we have good measures?

Page 17: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

We've just made things worse! Microservices also have emergent failure modes.

Page 18: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Let's attack both sides. And we'll find a way to connect both attacks.

Formal Methods

“Best Practices”Measurement

Page 19: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Dynamic measurement. Measure health of the system. Exposes unknown unknowns.

Page 20: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Formal methods. Correctness proofs are impractical. Incomplete execution traces? FTW!

* http://research.microsoft.com/en-us/um/people/lamport/tla/tla.html

TLA+ Leslie Lamport *

Page 21: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Invariants. Some things should never change. Measure them to make sure!

Page 22: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Example. E-commerce shopping cart. add-item msgs == sales-tax msgs

Page 23: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Be practical! Finding invariants is hard. Use the microservice patterns to cheat.

Page 24: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Actor. n actors means each actor sees 1⧸n of the messages.

Page 25: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Subscriber. n subscribers means each sees n messages.

Page 26: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Chain. n inbound messages over k links means n k chained messages.

Page 27: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Tree. n inbound messages over k leaves means n k leaf messages.

Page 28: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Look for cause/effect relationships. These are by design! Validate your message patterns in production.

“ask not what can go wrong, ask what must go right…”

Chris Newcombe, AWS*

* http://research.microsoft.com/en-us/um/people/lamport/tla/amazon.html

Page 29: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

When should you rollback? Invariants should be the same before and after deployment.

Page 30: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Is the system correct? Business rules are invariants too! Express as message relationships.

Page 31: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Are you about to be blindsided? Combine individual indicators to get a deeper measure of risk.

Page 32: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Measure what counts. Find invariants. Measure them. Follow: senecajs.org

Page 33: Measuring Micro-services - Richard Rodger - Codemotion Rome 2015

Thank You! Richard Rodger @rjrodger nearform.com