DSR Microservices (Day 1, Part 2)
-
Upload
steve-upton -
Category
Engineering
-
view
72 -
download
4
Transcript of DSR Microservices (Day 1, Part 2)
![Page 1: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/1.jpg)
Microservices@Steve_Upton
![Page 2: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/2.jpg)
What Microservices actually look like
![Page 3: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/3.jpg)
DevOps
![Page 4: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/4.jpg)
“10+ Deploys Per Day: Dev and Ops Cooperation at Flickr”John Allspaw, Velocity 2009
![Page 5: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/5.jpg)
“...a cross-disciplinary community of practice dedicated to the study of building, evolving and operating rapidly-changing resilient systems at
scale.”Jez Humble
![Page 6: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/6.jpg)
![Page 7: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/7.jpg)
![Page 8: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/8.jpg)
![Page 9: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/9.jpg)
Continuous Delivery
Configuration Management
Monitoring
![Page 10: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/10.jpg)
Continuous Delivery
![Page 11: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/11.jpg)
“If you have more meetings than releases, you’re an enterprise company”
Clifton Cunningham, CTO @ TES Global
![Page 12: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/12.jpg)
Containers
![Page 13: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/13.jpg)
Containerscredit to Anne Currie
![Page 14: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/14.jpg)
Bare Metal
![Page 15: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/15.jpg)
Bare Metal
✔ Powerful
✔ Simple
![Page 16: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/16.jpg)
Bare Metal
✔ Powerful
✔ Simple
❌ Brittle
❌ Inflexible
![Page 17: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/17.jpg)
Bare Metal
✔ Powerful
✔ Simple
❌ Brittle
❌ Inflexible
![Page 18: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/18.jpg)
Virtual Machines
![Page 19: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/19.jpg)
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
![Page 20: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/20.jpg)
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
![Page 21: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/21.jpg)
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
![Page 22: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/22.jpg)
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
![Page 23: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/23.jpg)
Containers
![Page 24: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/24.jpg)
Containers
✔ Lightweight
✔ Agile
![Page 25: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/25.jpg)
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
![Page 26: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/26.jpg)
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
![Page 27: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/27.jpg)
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
![Page 28: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/28.jpg)
![Page 29: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/29.jpg)
Exercise
![Page 30: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/30.jpg)
Configuration Management
![Page 31: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/31.jpg)
![Page 32: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/32.jpg)
Immutable Infrastructure
Don’t change, replace
Requires automation
![Page 33: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/33.jpg)
Immutable Infrastructure
Don’t change, replace
Requires automation
Blue-Green
![Page 34: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/34.jpg)
Docker ComposeManage multi-container apps
![Page 35: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/35.jpg)
Docker ComposeManage multi-container apps
Collection of dockerfiles → services
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
![Page 36: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/36.jpg)
Is Docker production ready?
![Page 37: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/37.jpg)
Is Docker production ready?
![Page 38: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/38.jpg)
Is Docker production ready?
Not great at backwards compatibility…
Requires extra tooling
![Page 39: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/39.jpg)
![Page 40: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/40.jpg)
![Page 41: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/41.jpg)
“Concurrent Production”
![Page 42: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/42.jpg)
“The development contracts are being performed concurrent with the production contracts”
2015 Lockheed Martin Annual Report
![Page 43: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/43.jpg)
![Page 44: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/44.jpg)
![Page 45: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/45.jpg)
Ideas
![Page 46: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/46.jpg)
Ideas
Build
![Page 47: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/47.jpg)
Ideas
Build
Product
![Page 48: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/48.jpg)
Ideas
Measure
Build
Product
![Page 49: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/49.jpg)
Ideas
Measure
Build
ProductData
![Page 50: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/50.jpg)
Ideas
Measure
Build
ProductData
Learn
![Page 51: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/51.jpg)
![Page 52: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/52.jpg)
![Page 53: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/53.jpg)
![Page 54: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/54.jpg)
Inter-service communication
![Page 55: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/55.jpg)
Build TestHTTP
![Page 56: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/56.jpg)
Build Test
![Page 57: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/57.jpg)
Build Test
Slack
![Page 58: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/58.jpg)
Build Test
Slack
Fireworks
![Page 59: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/59.jpg)
Build Test
Slack
Fireworks
![Page 60: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/60.jpg)
Build Test
Slack
Fireworks
![Page 61: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/61.jpg)
![Page 62: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/62.jpg)
“Service Discoveryis an anti-pattern”
![Page 63: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/63.jpg)
“Service Discoveryis an anti-pattern”
Richard Rodger, CTO @ nearForm
![Page 64: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/64.jpg)
Messaging!
![Page 65: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/65.jpg)
Build Test
Slack
Fireworks
RabbitMQ
![Page 66: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/66.jpg)
Build Testpublish
Slack
Fireworks
RabbitMQ
![Page 67: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/67.jpg)
Build Testpublish
Slack
Fireworks
RabbitMQ
subscribe
![Page 68: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/68.jpg)
Time To Live
![Page 69: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/69.jpg)
mq.publish(msg, {ttl: 10});
Time To Live
![Page 70: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/70.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code != 200) { if (getTime() - startTime < timeout) { put(msg, startTime); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 71: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/71.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code == 404) { // ??? } else if (response.code != 200) { if (getTime() - startTime < timeout) { put(msg, startTime); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 72: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/72.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code == 404) { // ??? } else if (response.code == 429) { // ??? } else if (response.code == 500) { // ??? } else if (response.code != 200) { if (getTime() - startTime < timeout) { put(msg, startTime); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 73: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/73.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code == 404) { // ??? } else if (response.code == 429) { // ??? } else if (response.code == 500) { // ??? } else if (response.code != 200) { if (getTime() - startTime < timeout) { timeSpent = getTime() - startTime; delay = Math.pow(timeSpent, 2); setTimeout(put(msg, startTime), delay); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 74: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/74.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code == 404) { // ??? } else if (response.code == 429) { // ??? } else if (response.code == 500) { // ??? } else if (response.code != 200) { if (getTime() - startTime < timeout) { timeSpent = getTime() - startTime; delay = Math.pow(timeSpent, 2); remainingTime = timeout - timeSpent; delay = Math.min(delay, remainingTime); setTimeout(put(msg, startTime), delay); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 75: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/75.jpg)
mq.publish(msg, {ttl: 10});
function put(msg, startTime) { response = http.put(msg); if (response.code == 404) { // ??? } else if (response.code == 429) { // ??? } else if (response.code == 500) { // ??? } else if (response.code != 200) { if (getTime() - startTime < timeout) { timeSpent = getTime() - startTime; fuzz = Math.floor(Math.random() * 10); delay = Math.pow(timeSpent, 2) + fuzz; remainingTime = timeout - timeSpent; delay = Math.min(delay, remainingTime); setTimeout(put(msg, startTime), delay); } }}
startTime = getTime();put(msg, startTime);
Time To Live
![Page 76: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/76.jpg)
Quality of Service
![Page 77: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/77.jpg)
// Best effort, fire and forgetmq.publish(unimportantMessage, {qos: 0});
// At least once deliverymq.publish(idempotentMessage, {qos: 1});
// Exactly once deliverymq.publish(importantMessage, {qos: 2});
Quality of Service
![Page 78: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/78.jpg)
// Best effort, fire and forgetmq.publish(unimportantMessage, {qos: 0});
// At least once deliverymq.publish(idempotentMessage, {qos: 1});
// Exactly once deliverymq.publish(importantMessage, {qos: 2});
Quality of Service
![Page 79: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/79.jpg)
// Best effort, fire and forgetmq.publish(unimportantMessage, {qos: 0});
// At least once deliverymq.publish(idempotentMessage, {qos: 1});
// Exactly once deliverymq.publish(importantMessage, {qos: 2});
Quality of Service
![Page 80: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/80.jpg)
Concurrency
![Page 81: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/81.jpg)
Concurrency
Upload text → Generate video → Post video
![Page 82: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/82.jpg)
Concurrency
Fast Slow Fast
Upload text → Generate video → Post video
![Page 83: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/83.jpg)
Concurrency
Fast Slow Fast
Upload text → Generate video → Post video
![Page 84: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/84.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text Video
![Page 85: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/85.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text Video
![Page 86: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/86.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text Video
![Page 87: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/87.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text Video
![Page 88: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/88.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text VideoVideo generation
serviceVideo generation service
![Page 89: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/89.jpg)
Concurrency
Upload service
Video generation service
Posting service
Text VideoVideo generation
serviceVideo generation serviceLo
ad B
alan
cer
![Page 90: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/90.jpg)
Concurrency
publish
RabbitMQ
subscribe
Upload service
Video generation service
Video generation service
Video generation service
![Page 91: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/91.jpg)
Concurrency
publish
RabbitMQ
subscribe
Upload service
Video generation service
Video generation service
Video generation service
![Page 92: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/92.jpg)
Concurrency
publish
RabbitMQ
subscribe
Upload service
Video generation service
Video generation service
Video generation service
![Page 93: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/93.jpg)
Concurrency
publish
RabbitMQ
subscribe
Upload service
Video generation service
Video generation service
Video generation service
![Page 94: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/94.jpg)
Concurrency
publish
RabbitMQ
subscribe
Upload service
Video generation service
Video generation service
Video generation service
![Page 95: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/95.jpg)
“Publish everything!”Tom Livesey, Droplet
![Page 96: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/96.jpg)
![Page 97: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/97.jpg)
Exercise
![Page 98: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/98.jpg)
![Page 99: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/99.jpg)
Lots of data sources
![Page 100: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/100.jpg)
Lots of data sources
Lots of data consumers
![Page 101: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/101.jpg)
Lots of data sources
Lots of data consumers
Lots of integrations
![Page 102: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/102.jpg)
LinkedIn before
![Page 103: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/103.jpg)
LinkedIn before
O(n2)
![Page 104: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/104.jpg)
LinkedIn after
![Page 105: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/105.jpg)
Up close
![Page 106: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/106.jpg)
The log
Append only
Time ordered
![Page 107: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/107.jpg)
Distributed logging
![Page 108: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/108.jpg)
![Page 109: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/109.jpg)
add(20)
add(5)
subtract(10)
add(15)
![Page 110: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/110.jpg)
add(20)
add(5)
subtract(10)
add(15)
![Page 111: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/111.jpg)
add(20)
add(5)
subtract(10)
add(15)
![Page 112: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/112.jpg)
?
add(20)
add(5)
subtract(10)
add(15)
![Page 113: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/113.jpg)
“If two identical, deterministic processes begin in the same state and get the same inputs in the
same order, they will produce the same output and end in the same state.”
State Machine Replication Principle, Jay Kreps, LinkedIn
![Page 114: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/114.jpg)
30
add(20)
add(5)
subtract(10)
add(15)
?
![Page 115: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/115.jpg)
Log as source of Truth
![Page 116: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/116.jpg)
![Page 117: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/117.jpg)
![Page 118: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/118.jpg)
![Page 119: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/119.jpg)
Initial population
![Page 120: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/120.jpg)
person born
person died
person born
person born
Initial population
![Page 121: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/121.jpg)
Population:308,745,538
person born
person died
person born
person born
Initial population
![Page 122: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/122.jpg)
![Page 123: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/123.jpg)
![Page 124: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/124.jpg)
![Page 125: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/125.jpg)
![Page 126: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/126.jpg)
2 million writes s-1
(on 3 cheap machines)
10s of millions of writes s-1
(LinkedIn production)
![Page 127: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/127.jpg)
2 million writes s-1
(on 3 cheap machines)
10s of millions of writes s-1
(LinkedIn production)
7 transactions s-1
(Bitcoin network)
![Page 128: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/128.jpg)
Log as source of Truth
![Page 129: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/129.jpg)
Event Sourcing
![Page 130: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/130.jpg)
“We don’t care if our production system crashes.”Valerii Vasylkov, William Hill
![Page 131: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/131.jpg)
![Page 132: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/132.jpg)
Data science. Analytics about the business
Full-fledged stream processing framework
Microservice like. Core business functions
Build an app that consumes from Kafka directly
![Page 133: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/133.jpg)
Data science. Analytics about the business
Full-fledged stream processing framework
Microservice like. Core business functions
Build an app that consumes from Kafka directly
![Page 134: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/134.jpg)
Data science. Analytics about the business
Full-fledged stream processing framework
Microservice like. Core business functions
Build an app that consumes from Kafka directly
![Page 135: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/135.jpg)
![Page 136: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/136.jpg)
![Page 137: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/137.jpg)
Testing Microservices
![Page 138: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/138.jpg)
Monolithic testing
![Page 139: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/139.jpg)
Monolithic testing
App
Test
![Page 140: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/140.jpg)
Monolithic testing
App
Test
Test data
Test data
Test data
![Page 141: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/141.jpg)
Monolithic testing
App
Test
Test data
Test data
Test data
Output ✔
Output ✔
Output ✔
![Page 142: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/142.jpg)
Monolithic testing
App
Test
Test data
Test data
Test data
Output ✔
Output ✖
Output ✔
![Page 143: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/143.jpg)
Monolithic testing
App
Test
Test data
Test data
Test data
Output ✔
Output ✔
Output ✔
Output ✔
Output ✔
Output ✔
![Page 144: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/144.jpg)
Monolithic testing
App
Test Production
App
Test data
Test data
Test data
Output ✔
Output ✔
Output ✔
![Page 145: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/145.jpg)
Microservice testingTest
Microservice
Microservice
Microservice
![Page 146: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/146.jpg)
Microservice testingTest
Microservice
Microservice
Microservice
Tests
Outputs ✔
Tests
Outputs ✔
Outputs ✔
Tests
![Page 147: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/147.jpg)
Microservice testingProduction
Microservice
Microservice
Microservice
![Page 148: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/148.jpg)
Microservice testingProduction
Microservice
Microservice
Microservice
![Page 149: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/149.jpg)
Monitoring = Testing
![Page 150: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/150.jpg)
![Page 151: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/151.jpg)
![Page 152: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/152.jpg)
![Page 153: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/153.jpg)
![Page 154: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/154.jpg)
Chaos Gorilla
![Page 155: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/155.jpg)
Chaos Kong
![Page 156: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/156.jpg)
Conformity Monkey
![Page 157: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/157.jpg)
Security Monkey
![Page 158: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/158.jpg)
Janitor Monkey
![Page 159: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/159.jpg)
Latency Monkey
![Page 160: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/160.jpg)
“Everything fails all the time”Werner Vogels, VP + CTO @ Amazon
![Page 161: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/161.jpg)
Design for Failure
![Page 162: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/162.jpg)
Self healing systems
![Page 163: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/163.jpg)
Debugging Microservices
![Page 164: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/164.jpg)
![Page 165: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/165.jpg)
“How big should my Microservice be?”Everyone
![Page 166: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/166.jpg)
Domain Driven Design (DDD)
![Page 167: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/167.jpg)
![Page 168: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/168.jpg)
![Page 169: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/169.jpg)
![Page 170: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/170.jpg)
![Page 171: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/171.jpg)
“Not all of a large system will be well designed”
Eric Evans
![Page 172: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/172.jpg)
“The first draft of anything is shit”Ernest Hemingway
![Page 173: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/173.jpg)
“... big enough to fit in your head”Dan North
![Page 174: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/174.jpg)
“Replaceable component architecture”Dan North
![Page 175: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/175.jpg)
Monolith first?
![Page 177: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/177.jpg)
I. CodebaseOne codebase tracked in revision control, many deploys
![Page 178: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/178.jpg)
I. CodebaseOne codebase tracked in revision control, many deploys
Always use version control!
![Page 179: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/179.jpg)
I. CodebaseOne codebase tracked in revision control, many deploys
Always use version control!
One app (microservice) per repo
![Page 180: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/180.jpg)
I. CodebaseOne codebase tracked in revision control, many deploys
Always use version control!
One app (microservice) per repo
Multiple deploys per app (local, dev, prod, etc.)
![Page 181: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/181.jpg)
II. DependenciesExplicitly declare and isolate dependencies
![Page 182: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/182.jpg)
II. DependenciesExplicitly declare and isolate dependencies
Never assume something is pre-installed
![Page 183: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/183.jpg)
II. DependenciesExplicitly declare and isolate dependencies
Never assume something is pre-installed
Package managers/repos make this easy! $ pip install -r requirements.txt
$ npm install
$ bundle install
![Page 184: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/184.jpg)
II. DependenciesExplicitly declare and isolate dependencies
Never assume something is pre-installed
Package managers/repos make this easy!
Isolate dependencies to prevent ‘leaking’
$ pip install -r requirements.txt
$ npm install
$ bundle install
![Page 185: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/185.jpg)
II. DependenciesExplicitly declare and isolate dependencies
Never assume something is pre-installed
Package managers/repos make this easy!
Isolate dependencies to prevent ‘leaking’
$ npm install
![Page 186: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/186.jpg)
II. DependenciesExplicitly declare and isolate dependencies
Never assume something is pre-installed
Package managers/repos make this easy!
Isolate dependencies to prevent ‘leaking’
(Aims to) prevent “it works on my machine” $ npm install
![Page 187: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/187.jpg)
III. ConfigStore config in the environment
![Page 188: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/188.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
![Page 189: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/189.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
![Page 190: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/190.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
![Page 191: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/191.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
Suggest environment vars, but other options...
![Page 192: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/192.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
Suggest environment vars, but other options...
Supports multiple deploys from one codebase
![Page 193: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/193.jpg)
III. ConfigStore config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
Suggest environment vars, but other options...
Supports multiple deploys from one codebase
Makes Open Sourcing easier
![Page 194: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/194.jpg)
IV. Backing servicesTreat backing services as attached resources
![Page 195: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/195.jpg)
IV. Backing servicesTreat backing services as attached resources
Backing services are any remote services
![Page 196: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/196.jpg)
IV. Backing servicesTreat backing services as attached resources
Backing services are any remote services
Loosely coupled to a deploy
![Page 197: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/197.jpg)
IV. Backing servicesTreat backing services as attached resources
Backing services are any remote services
Loosely coupled to a deploy
Treated as local resources
![Page 198: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/198.jpg)
IV. Backing servicesTreat backing services as attached resources
Backing services are any remote services
Loosely coupled to a deploy
Treated as local resources
Allows easy swapping out of services
![Page 199: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/199.jpg)
V. Build, release, runStrictly separate build and run stages
![Page 200: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/200.jpg)
V. Build, release, runStrictly separate build and run stages
Build
![Page 201: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/201.jpg)
V. Build, release, runStrictly separate build and run stages
Build → Release
![Page 202: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/202.jpg)
V. Build, release, runStrictly separate build and run stages
Build → Release → Run
![Page 203: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/203.jpg)
V. Build, release, runStrictly separate build and run stages
Build → Release → Run
Strict separation between the stages
![Page 204: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/204.jpg)
V. Build, release, runStrictly separate build and run stages
Build → Release → Run
Strict separation between the stages
One way (no tweaking the live server!)
![Page 205: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/205.jpg)
VI. ProcessesExecute the app as one or more stateless processes
![Page 206: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/206.jpg)
VI. ProcessesExecute the app as one or more stateless processes
Apps run as processes (duh)
![Page 207: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/207.jpg)
VI. ProcessesExecute the app as one or more stateless processes
Apps run as processes (duh)
No state: every node is independent
![Page 208: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/208.jpg)
VI. ProcessesExecute the app as one or more stateless processes
Apps run as processes (duh)
No state: every node is independent
Caching is fine, but not for future use
![Page 209: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/209.jpg)
VI. ProcessesExecute the app as one or more stateless processes
Apps run as processes (duh)
No state: every node is independent
Caching is fine, but not for future use
State must be stored in backing services
![Page 210: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/210.jpg)
VII. Port bindingExport services via port binding
![Page 211: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/211.jpg)
VII. Port bindingExport services via port binding
Expose endpoints
http://localhost:5000/
test.mosquitto.org:1883
redis://redisbox:6379/0
![Page 212: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/212.jpg)
VII. Port bindingExport services via port binding
Expose endpoints
No runtime injection or native APIs http://localhost:5000/
test.mosquitto.org:1883
redis://redisbox:6379/0
![Page 213: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/213.jpg)
VII. Port bindingExport services via port binding
Expose endpoints
No runtime injection or native APIs
HTTP or other protocols make things easy
http://localhost:5000/
test.mosquitto.org:1883
redis://redisbox:6379/0
![Page 214: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/214.jpg)
VIII. ConcurrencyScale out via the process model
![Page 215: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/215.jpg)
VIII. ConcurrencyScale out via the process model
Processes are the unit of scaling
![Page 216: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/216.jpg)
VIII. ConcurrencyScale out via the process model
Processes are the unit of scaling
Don’t daemonize!
![Page 217: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/217.jpg)
VIII. ConcurrencyScale out via the process model
Processes are the unit of scaling
Don’t daemonize!
Take advantage of OS resource scaling
![Page 218: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/218.jpg)
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown
![Page 219: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/219.jpg)
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown
Can be started or stopped quickly (Cattle not pets)
![Page 220: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/220.jpg)
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown
Can be started or stopped quickly (Cattle not pets)
Quick startup allows easy scaling up
Graceful shutdown allows easy scaling down
![Page 221: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/221.jpg)
IX. DisposabilityMaximize robustness with fast startup and graceful shutdown
Can be started or stopped quickly (Cattle not pets)
Quick startup allows easy scaling up
Graceful shutdown allows easy scaling down
Easier if you scale with independent processes...
![Page 222: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/222.jpg)
X. Dev/prod parityKeep development, staging, and production as similar as possible
![Page 223: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/223.jpg)
X. Dev/prod parityKeep development, staging, and production as similar as possible
Keep time between environment deploys low
![Page 224: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/224.jpg)
X. Dev/prod parityKeep development, staging, and production as similar as possible
Keep time between environment deploys low
Devs also handle deployment and maintenance (DevOps)
Keep tooling between environments as similar as possible
![Page 225: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/225.jpg)
X. Dev/prod parityKeep development, staging, and production as similar as possible
Keep time between environment deploys low
Devs also handle deployment and maintenance (DevOps)
Keep tooling between environments as similar as possible
If you can, try one environment...
![Page 226: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/226.jpg)
XI. LogsTreat logs as event streams
![Page 227: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/227.jpg)
XI. LogsTreat logs as event streams
Don’t mess around writing to files, just use stdout
![Page 228: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/228.jpg)
XI. LogsTreat logs as event streams
Don’t mess around writing to files, just use stdout
In dev, you can watch stdout
In production, it can be routed to other stores (Splunk etc.)
![Page 229: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/229.jpg)
XI. LogsTreat logs as event streams
Don’t mess around writing to files, just use stdout
In dev, you can watch stdout
In production, it can be routed to other stores (Splunk etc.)
Keeps aggregated logs time ordered (like Kafka)
![Page 230: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/230.jpg)
XII. Admin processesRun admin/management tasks as one-off processes
![Page 231: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/231.jpg)
XII. Admin processesRun admin/management tasks as one-off processes
One-off admin tasks (DB migrations etc.) should be run from production environment
![Page 232: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/232.jpg)
XII. Admin processesRun admin/management tasks as one-off processes
One-off admin tasks (DB migrations etc.) should be run from production environment
Don’t run scripts from local machine or directly on the DB
![Page 233: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/233.jpg)
XII. Admin processesRun admin/management tasks as one-off processes
One-off admin tasks (DB migrations etc.) should be run from production environment
Don’t run scripts from local machine or directly on the DB
Check in scripts to app repos to keep things in sync
![Page 234: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/234.jpg)
One-off admin tasks (DB migrations etc.) should be run from production environment
Don’t run scripts from local machine or directly on the DB
Check in scripts to app repos to keep things in sync
ssh into production box and run the task
XII. Admin processesRun admin/management tasks as one-off processes
![Page 235: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/235.jpg)
XII. Admin processesRun admin/management tasks as one-off processes
One-off admin tasks (DB migrations etc.) should be run from production environment
Don’t run scripts from local machine or directly on the DB
Check in scripts to app repos to keep things in sync
ssh into production box and run the task
...or don’t. Immutable Infrastructure!
![Page 236: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/236.jpg)
1990 2000 2010 2015
Ord
er le
ad ti
me
(log(
ish)
)
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial cloud (AWS)
Docker
FaaS
5 secs
PaaS
![Page 237: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/237.jpg)
Microservices or distributed systems?
![Page 238: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/238.jpg)
The future of Microservices
![Page 239: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/239.jpg)
![Page 240: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/240.jpg)
Hardware lead times
1990 2000 2010 2015
Ord
er le
ad ti
me
(log(
ish)
)
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial cloud (AWS)
Docker
FaaS
5 secs
PaaS
![Page 241: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/241.jpg)
Hardware lead times
1990 2000 2010 2015
Ord
er le
ad ti
me
(log(
ish)
)
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial cloud (AWS)
Docker
FaaS
5 secs
PaaS
![Page 242: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/242.jpg)
Amazon Lambda
Serverless
‘Serverless’ (not really)
Function as a Service (FaaS)
No persistence, no upkeep costs
200 ms startup time (Node.js)
![Page 243: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/243.jpg)
What is the role of a manager?
![Page 244: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/244.jpg)
Managers
![Page 245: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/245.jpg)
Managers
Provide guidance
![Page 246: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/246.jpg)
Managers
Provide guidance
Keep things ‘safe’
![Page 247: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/247.jpg)
Managers
Provide guidance
Keep things ‘safe’
Organise the team
![Page 248: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/248.jpg)
Managers
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
![Page 249: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/249.jpg)
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
![Page 250: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/250.jpg)
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
![Page 251: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/251.jpg)
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
![Page 252: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/252.jpg)
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
Enables self-organisation
![Page 253: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/253.jpg)
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
Enables self-organisation
Tech empowers team
![Page 254: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/254.jpg)
![Page 255: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/255.jpg)
No managers (or other titles)
Programmers take responsibility
Expect/allow failure (remove fear)
Work directly with customers
Programmer Anarchy
![Page 256: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/256.jpg)
Conclusion
![Page 257: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/257.jpg)
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
![Page 258: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/258.jpg)
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
![Page 259: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/259.jpg)
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
![Page 260: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/260.jpg)
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
![Page 261: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/261.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 262: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/262.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 263: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/263.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 264: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/264.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 265: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/265.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 266: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/266.jpg)
“Microservices are hard. Some things you get for free, but you have to work for the good stuff. If you won’t put in the work, you shouldn’t be doing Microservices. (You should be doing that stuff
anyway!)”Steve Upton
![Page 268: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/268.jpg)
Essential readinghttps://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed
https://plus.google.com/+RipRowan/posts/eVeouesvaVX
https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
http://martinfowler.com/articles/microservices.html
http://jonasboner.com/bla-bla-microservices-bla-bla/
https://www.youtube.com/watch?v=_EWUeZoyB0k
![Page 269: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/269.jpg)
Good readinghttp://highscalability.com/blog/2014/10/27/microservices-in-production-the-good-the-bad-the-it-works.html
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
![Page 270: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/270.jpg)
Referenceshttp://www.slideshare.net/BruceWong3/the-case-for-chaos
http://www.slideshare.net/fredgeorge
http://www.slideshare.net/dataloop/anne-currie-force12io-game-of-hosts-containers-vs-vms
https://www.nrdc.org/sites/default/files/data-center-efficiency-assessment-IB.pdf
https://martinjeeblog.com/2012/11/20/what-is-programmer-anarchy-and-does-it-have-a-future/
http://static.googleusercontent.com/media/research.google.com/en//people/jeff/Berkeley-Latency-Mar2012.pdf
http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html
![Page 271: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/271.jpg)
References cont.http://www.ibm.com/developerworks/webservices/library/ar-esbpat1/
https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-885j-aircraft-systems-engineering-fall-2005/
https://www.fogcreek.com/blog/eight-fallacies-of-distributed-computing-tech-talk/
http://www.ibiblio.org/harris/500milemail.html
http://www.lockheedmartin.com/content/dam/lockheed/data/corporate/documents/2015-Annual-Report.pdf
http://www.counterpunch.org/2013/03/04/when-money-is-no-object-the-strange-saga-of-the-f-35/
![Page 272: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/272.jpg)
References cont.https://www.youtube.com/watch?v=dxk8b9rSKOo
http://assets.en.oreilly.com/1/event/60/Velocity%20Culture%20Presentation.pdf
http://www.cubrid.org/blog/dev-platform/understanding-tcp-ip-network-stack/
https://www.oreilly.com/ideas/an-introduction-to-immutable-infrastructure
http://www.methodsandtools.com/archive/archive.php?id=97
![Page 273: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/273.jpg)
Bad thingshttp://www.ibm.com/developerworks/webservices/library/ar-esbpat1/
http://www.networkworld.com/article/3114195/system-management/the-8-fallacies-of-distributed-computing-are-becoming-irrelevant.html
![Page 274: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/274.jpg)
Image creditshttp://fontawesome.io/
https://github.com/thepracticaldev/orly-full-res
http://dimaip.github.io/slides/docker101.html
http://www.clipartlord.com/category/military-clip-art/bomb-clip-art/explosion-clip-art/
https://en.wikipedia.org/wiki/File:S-IC_engines_and_Von_Braun.jpg
http://www.nutsvolts.com/magazine/article/the_computer_that_took_man_to_the_moon
https://spaceflightnow.com/2014/11/05/engineers-recommend-changes-to-orion-heat-shield/
https://www.hq.nasa.gov/alsj/alsj-DrinkFood.html
![Page 275: DSR Microservices (Day 1, Part 2)](https://reader030.fdocuments.us/reader030/viewer/2022020113/58a3e1fd1a28ab7f0b8b62f5/html5/thumbnails/275.jpg)
Image credits cont.https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19720013196.pdf