SlideShare a Scribd company logo
Microservices
@Steve_Upton
What Microservices
actually look like
DevOps
“10+ Deploys Per Day: Dev and Ops
Cooperation at Flickr”
John Allspaw, Velocity 2009
“...a cross-disciplinary community of practice
dedicated to the study of building, evolving and
operating rapidly-changing resilient systems at
scale.”
Jez Humble
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Continuous Delivery
Configuration Management
Monitoring
Continuous Delivery
“If you have more meetings than releases, you’re
an enterprise company”
Clifton Cunningham, CTO @ TES Global
Containers
Containers
credit to Anne Currie
Bare Metal
Bare Metal
✔ Powerful
✔ Simple
Bare Metal
✔ Powerful
✔ Simple
❌ Brittle
❌ Inflexible
Bare Metal
✔ Powerful
✔ Simple
❌ Brittle
❌ Inflexible
Virtual Machines
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
Virtual Machines
✔ Flexible
✔ Networking
✔ Security
❌ Overweight
Containers
Containers
✔ Lightweight
✔ Agile
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
Containers
✔ Lightweight
✔ Agile
❌ Untested
❌ Networking
❌ Security
DSR Microservices (Day 1, Part 2)
Exercise
Configuration Management
DSR Microservices (Day 1, Part 2)
Immutable Infrastructure
Don’t change, replace
Requires automation
Immutable Infrastructure
Don’t change, replace
Requires automation
Blue-Green
Docker Compose
Manage multi-container apps
Docker Compose
Manage 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: {}
Is Docker production ready?
Is Docker production ready?
Is Docker production ready?
Not great at backwards compatibility…
Requires extra tooling
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
“Concurrent Production”
“The development contracts are being performed
concurrent with the production contracts”
2015 Lockheed Martin Annual Report
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Ideas
Ideas
Build
Ideas
Build
Product
Ideas
Measure
Build
Product
Ideas
Measure
Build
ProductData
Ideas
Measure
Build
ProductData
Learn
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Inter-service communication
Build Test
HTTP
Build Test
Email
Build Test
Email
Slack
Build Test
Email
Slack
Fireworks
Build Test
Email
Slack
Fireworks
Build Test
Email
Slack
Fireworks
DSR Microservices (Day 1, Part 2)
“Service Discovery
is an anti-pattern”
“Service Discovery
is an anti-pattern”
Richard Rodger, CTO @ nearForm
Messaging!
Build Test
Email
Slack
Fireworks
RabbitMQ
Build Test
publish
Email
Slack
Fireworks
RabbitMQ
Build Test
publish
Email
Slack
Fireworks
RabbitMQ
subscribe
Time To Live
mq.publish(msg, {ttl: 10});
Time To Live
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
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
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
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
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
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
Quality of Service
// Best effort, fire and forget
mq.publish(unimportantMessage, {qos: 0});
// At least once delivery
mq.publish(idempotentMessage, {qos: 1});
// Exactly once delivery
mq.publish(importantMessage, {qos: 2});
Quality of Service
// Best effort, fire and forget
mq.publish(unimportantMessage, {qos: 0});
// At least once delivery
mq.publish(idempotentMessage, {qos: 1});
// Exactly once delivery
mq.publish(importantMessage, {qos: 2});
Quality of Service
// Best effort, fire and forget
mq.publish(unimportantMessage, {qos: 0});
// At least once delivery
mq.publish(idempotentMessage, {qos: 1});
// Exactly once delivery
mq.publish(importantMessage, {qos: 2});
Quality of Service
Concurrency
Concurrency
Upload text → Generate video → Post video
Concurrency
Fast Slow Fast
Upload text → Generate video → Post video
Concurrency
Fast Slow Fast
Upload text → Generate video → Post video
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Video generation
service
Video generation
service
Concurrency
Upload
service
Video generation
service
Posting
service
Text Video
Video generation
service
Video generation
service
LoadBalancer
Concurrency
publish
RabbitMQ
subscribe
Upload
service
Video generation
service
Video generation
service
Video generation
service
Concurrency
publish
RabbitMQ
subscribe
Upload
service
Video generation
service
Video generation
service
Video generation
service
Concurrency
publish
RabbitMQ
subscribe
Upload
service
Video generation
service
Video generation
service
Video generation
service
Concurrency
publish
RabbitMQ
subscribe
Upload
service
Video generation
service
Video generation
service
Video generation
service
Concurrency
publish
RabbitMQ
subscribe
Upload
service
Video generation
service
Video generation
service
Video generation
service
“Publish everything!”
Tom Livesey, Droplet
DSR Microservices (Day 1, Part 2)
Exercise
DSR Microservices (Day 1, Part 2)
Lots of data sources
Lots of data sources
Lots of data consumers
Lots of data sources
Lots of data consumers
Lots of integrations
LinkedIn before
LinkedIn before
O(n2
)
LinkedIn after
Up close
The log
Append only
Time ordered
Distributed logging
DSR Microservices (Day 1, Part 2)
add(20)
add(5)
subtract(10)
add(15)
add(20)
add(5)
subtract(10)
add(15)
add(20)
add(5)
subtract(10)
add(15)
?
add(20)
add(5)
subtract(10)
add(15)
“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
30
add(20)
add(5)
subtract(10)
add(15)
?
Log as source of Truth
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Initial
population
person born
person died
person born
person born
Initial
population
Population:
308,745,538
person born
person died
person born
person born
Initial
population
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
2 million writes s-1
(on 3 cheap machines)
10s of millions of writes s-1
(LinkedIn production)
2 million writes s-1
(on 3 cheap machines)
10s of millions of writes s-1
(LinkedIn production)
7 transactions s-1
(Bitcoin network)
Log as source of Truth
Event Sourcing
“We don’t care if our production system crashes.”
Valerii Vasylkov, William Hill
DSR Microservices (Day 1, Part 2)
Data science. Analytics
about the business
Full-fledged stream
processing framework
Microservice like. Core
business functions
Build an app that consumes
from Kafka directly
Data science. Analytics
about the business
Full-fledged stream
processing framework
Microservice like. Core
business functions
Build an app that consumes
from Kafka directly
Data science. Analytics
about the business
Full-fledged stream
processing framework
Microservice like. Core
business functions
Build an app that consumes
from Kafka directly
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Testing Microservices
Monolithic testing
Monolithic testing
App
Test
Monolithic testing
App
Test
Test data
Test data
Test data
Monolithic testing
App
Test
Test data
Test data
Test data
Output ✔
Output ✔
Output ✔
Monolithic testing
App
Test
Test data
Test data
Test data
Output ✔
Output ✖
Output ✔
Monolithic testing
App
Test
Test data
Test data
Test data
Output
✔
Output
✔
Output
✔
Output ✔
Output ✔
Output ✔
Monolithic testing
App
Test Production
App
Test data
Test data
Test data
Output ✔
Output ✔
Output ✔
Microservice testing
Test
Microservice
Microservice
Microservice
Microservice testing
Test
Microservice
Microservice
Microservice
Tests
Outputs
✔
Tests
Outputs
✔
Outputs
✔
Tests
Microservice testing
Production
Microservice
Microservice
Microservice
Microservice testing
Production
Microservice
Microservice
Microservice
Monitoring = Testing
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
Chaos Gorilla
Chaos Kong
Conformity Monkey
Security Monkey
Janitor Monkey
Latency Monkey
“Everything fails all the time”
Werner Vogels, VP + CTO @ Amazon
Design for Failure
Self healing systems
Debugging Microservices
DSR Microservices (Day 1, Part 2)
“How big should my Microservice be?”
Everyone
Domain Driven Design (DDD)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
DSR Microservices (Day 1, Part 2)
“Not all of a large system will
be well designed”
Eric Evans
“The first draft of anything is shit”
Ernest Hemingway
“... big enough to fit in your head”
Dan North
“Replaceable component architecture”
Dan North
Monolith first?
12factor.net
I. Codebase
One codebase tracked in revision control, many deploys
I. Codebase
One codebase tracked in revision control, many deploys
Always use version control!
I. Codebase
One codebase tracked in revision control, many deploys
Always use version control!
One app (microservice) per repo
I. Codebase
One codebase tracked in revision control, many deploys
Always use version control!
One app (microservice) per repo
Multiple deploys per app (local, dev, prod, etc.)
II. Dependencies
Explicitly declare and isolate dependencies
II. Dependencies
Explicitly declare and isolate dependencies
Never assume something is pre-installed
II. Dependencies
Explicitly 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
II. Dependencies
Explicitly 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
II. Dependencies
Explicitly declare and isolate dependencies
Never assume something is pre-installed
Package managers/repos make this easy!
Isolate dependencies to prevent ‘leaking’
$ npm install
II. Dependencies
Explicitly 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
III. Config
Store config in the environment
III. Config
Store config in the environment
Config changes between deploys (dev, prod, etc.)
III. Config
Store config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
III. Config
Store config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
III. Config
Store config in the environment
Config changes between deploys (dev, prod, etc.)
Store config in environment not codebase
Suggest environment vars, but other options...
III. Config
Store 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
III. Config
Store 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
IV. Backing services
Treat backing services as attached resources
IV. Backing services
Treat backing services as attached resources
Backing services are any remote services
IV. Backing services
Treat backing services as attached resources
Backing services are any remote services
Loosely coupled to a deploy
IV. Backing services
Treat backing services as attached resources
Backing services are any remote services
Loosely coupled to a deploy
Treated as local resources
IV. Backing services
Treat 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
V. Build, release, run
Strictly separate build and run stages
V. Build, release, run
Strictly separate build and run stages
Build
V. Build, release, run
Strictly separate build and run stages
Build → Release
V. Build, release, run
Strictly separate build and run stages
Build → Release → Run
V. Build, release, run
Strictly separate build and run stages
Build → Release → Run
Strict separation between the stages
V. Build, release, run
Strictly separate build and run stages
Build → Release → Run
Strict separation between the stages
One way (no tweaking the live server!)
VI. Processes
Execute the app as one or more stateless processes
VI. Processes
Execute the app as one or more stateless processes
Apps run as processes (duh)
VI. Processes
Execute the app as one or more stateless processes
Apps run as processes (duh)
No state: every node is independent
VI. Processes
Execute 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
VI. Processes
Execute 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
VII. Port binding
Export services via port binding
VII. Port binding
Export services via port binding
Expose endpoints
http://localhost:5000/
test.mosquitto.org:1883
redis://redisbox:6379/0
VII. Port binding
Export services via port binding
Expose endpoints
No runtime injection or native APIs http://localhost:5000/
test.mosquitto.org:1883
redis://redisbox:6379/0
VII. Port binding
Export 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
VIII. Concurrency
Scale out via the process model
VIII. Concurrency
Scale out via the process model
Processes are the unit of scaling
VIII. Concurrency
Scale out via the process model
Processes are the unit of scaling
Don’t daemonize!
VIII. Concurrency
Scale out via the process model
Processes are the unit of scaling
Don’t daemonize!
Take advantage of OS resource scaling
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
IX. Disposability
Maximize robustness with fast startup and graceful shutdown
Can be started or stopped quickly (Cattle not pets)
IX. Disposability
Maximize 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
IX. Disposability
Maximize 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...
X. Dev/prod parity
Keep development, staging, and production as similar as possible
X. Dev/prod parity
Keep development, staging, and production as similar as possible
Keep time between environment deploys low
X. Dev/prod parity
Keep 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
X. Dev/prod parity
Keep 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...
XI. Logs
Treat logs as event streams
XI. Logs
Treat logs as event streams
Don’t mess around writing to files, just use stdout
XI. Logs
Treat 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.)
XI. Logs
Treat 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)
XII. Admin processes
Run admin/management tasks as one-off processes
XII. Admin processes
Run admin/management tasks as one-off processes
One-off admin tasks (DB migrations etc.) should be run from production environment
XII. Admin processes
Run 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
XII. Admin processes
Run 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
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 processes
Run admin/management tasks as one-off processes
XII. Admin processes
Run 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!
1990 2000 2010 2015
Orderleadtime(log(ish))
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial
cloud (AWS)
Docker
FaaS
5 secs
PaaS
Microservices or distributed systems?
The future of
Microservices
DSR Microservices (Day 1, Part 2)
Hardware lead times
1990 2000 2010 2015
Orderleadtime(log(ish))
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial
cloud (AWS)
Docker
FaaS
5 secs
PaaS
Hardware lead times
1990 2000 2010 2015
Orderleadtime(log(ish))
< 1 sec
1 hour
1 week
6 months Data center
Virtual machines
Commercial
cloud (AWS)
Docker
FaaS
5 secs
PaaS
Amazon Lambda
Serverless
‘Serverless’ (not really)
Function as a Service (FaaS)
No persistence, no upkeep costs
200 ms startup time (Node.js)
What is the role of a manager?
Managers
Managers
Provide guidance
Managers
Provide guidance
Keep things ‘safe’
Managers
Provide guidance
Keep things ‘safe’
Organise the team
Managers
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
Enables self-organisation
Managers Microservices
Provide guidance
Keep things ‘safe’
Organise the team
Enable team to work
Explore new tech
Experiment
Enables self-organisation
Tech empowers team
DSR Microservices (Day 1, Part 2)
No managers (or other titles)
Programmers take responsibility
Expect/allow failure (remove fear)
Work directly with customers
Programmer Anarchy
Conclusion
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
Speed > efficiency
DevOps
Empower teams
Embrace the distributed world
“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
“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
“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
“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
“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
“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
Questions?
@Steve_Upton
steveupton.io
Essential reading
https://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-engi
neer-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
Good reading
http://highscalability.com/blog/2014/10/27/microservices-in-production-the-good-th
e-bad-the-it-works.html
http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html
References
http://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
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-Re
port.pdf
http://www.counterpunch.org/2013/03/04/when-money-is-no-object-the-strange-saga-of-the-f-35/
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
Bad things
http://www.ibm.com/developerworks/webservices/library/ar-esbpat1/
http://www.networkworld.com/article/3114195/system-management/the-8-fallacies-of-distributed-co
mputing-are-becoming-irrelevant.html
Image credits
http://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
Image credits cont.
https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19720013196.pdf

More Related Content

What's hot (20)

PDF
ScalaSwarm 2017 Keynote: Tough this be madness yet theres method in't
Konrad Malawski
 
PDF
Voxxed Vienna 2015 Fault tolerant microservices
Christopher Batey
 
PPTX
Java 104
Manuela Grindei
 
PPTX
Java 101
Manuela Grindei
 
PDF
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Jonas Bonér
 
PDF
Resilience with Hystrix
Uwe Friedrichsen
 
PDF
State of Akka 2017 - The best is yet to come
Konrad Malawski
 
PDF
Building Reactive Systems with Akka (in Java 8 or Scala)
Jonas Bonér
 
PDF
The Cloud-natives are RESTless @ JavaOne
Konrad Malawski
 
PDF
Be More Productive with Kotlin
Brandon Wever
 
PPTX
Legacy Code Kata v3.0
William Munn
 
PDF
Not Only Streams for Akademia JLabs
Konrad Malawski
 
PDF
Actor Model Akka Framework
Harinath Krishnamoorthy
 
PDF
The things we don't see – stories of Software, Scala and Akka
Konrad Malawski
 
PDF
Leveraging Open Source for Database Development: Database Version Control wit...
All Things Open
 
PDF
Non-blocking Michael-Scott queue algorithm
Alexey Fyodorov
 
PDF
Devoxx France: Fault tolerant microservices on the JVM with Cassandra
Christopher Batey
 
PDF
Coscup 2013 : Continuous Integration on top of hadoop
Wisely chen
 
PPTX
Legacy Dependency Kata v2.0
William Munn
 
PDF
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Victoria Schiffer
 
ScalaSwarm 2017 Keynote: Tough this be madness yet theres method in't
Konrad Malawski
 
Voxxed Vienna 2015 Fault tolerant microservices
Christopher Batey
 
Java 104
Manuela Grindei
 
Java 101
Manuela Grindei
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Jonas Bonér
 
Resilience with Hystrix
Uwe Friedrichsen
 
State of Akka 2017 - The best is yet to come
Konrad Malawski
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Jonas Bonér
 
The Cloud-natives are RESTless @ JavaOne
Konrad Malawski
 
Be More Productive with Kotlin
Brandon Wever
 
Legacy Code Kata v3.0
William Munn
 
Not Only Streams for Akademia JLabs
Konrad Malawski
 
Actor Model Akka Framework
Harinath Krishnamoorthy
 
The things we don't see – stories of Software, Scala and Akka
Konrad Malawski
 
Leveraging Open Source for Database Development: Database Version Control wit...
All Things Open
 
Non-blocking Michael-Scott queue algorithm
Alexey Fyodorov
 
Devoxx France: Fault tolerant microservices on the JVM with Cassandra
Christopher Batey
 
Coscup 2013 : Continuous Integration on top of hadoop
Wisely chen
 
Legacy Dependency Kata v2.0
William Munn
 
Agile Developer Immersion Workshop, LASTconf Melbourne, Australia, 19th July ...
Victoria Schiffer
 

Viewers also liked (20)

PDF
Understanding Microservices
M A Hossain Tonu
 
PPTX
Melbourne Microservices Meetup: Agenda for a new Architecture
Saul Caganoff
 
PPT
A csodák logikája
szkbl
 
PDF
Delivering with Microservices - How to Iterate Towards Sophistication
Thoughtworks
 
PDF
Building microservices web application using scala & akka
Binh Nguyen
 
PDF
Growing a microservices landscape (with smart use cases)
Sander Hoogendoorn
 
PDF
Microservice Architecture
Rich Lee
 
PDF
Microservice Websites (microXchg 2017)
Gustaf Nilsson Kotte
 
PDF
Akka Persistence and Eventuate
Martin Krasser
 
PPTX
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
PDF
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Jonas Bonér
 
PDF
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
 
PPTX
Micro Service Architecture
Eduards Sizovs
 
PDF
Akka in Practice: Designing Actor-based Applications
NLJUG
 
PDF
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Lightbend
 
ODP
Akka Finite State Machine
Knoldus Inc.
 
PDF
The promises and perils of microservices
Uwe Friedrichsen
 
PDF
Akka in Production - ScalaDays 2015
Evan Chan
 
PDF
Better Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Sequoia Capital
 
PDF
The Progression of APIs and Microservices - Photon Infotech
Photon
 
Understanding Microservices
M A Hossain Tonu
 
Melbourne Microservices Meetup: Agenda for a new Architecture
Saul Caganoff
 
A csodák logikája
szkbl
 
Delivering with Microservices - How to Iterate Towards Sophistication
Thoughtworks
 
Building microservices web application using scala & akka
Binh Nguyen
 
Growing a microservices landscape (with smart use cases)
Sander Hoogendoorn
 
Microservice Architecture
Rich Lee
 
Microservice Websites (microXchg 2017)
Gustaf Nilsson Kotte
 
Akka Persistence and Eventuate
Martin Krasser
 
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
Akka: Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Ac...
Jonas Bonér
 
Securing Microservices using Play and Akka HTTP
Rafal Gancarz
 
Micro Service Architecture
Eduards Sizovs
 
Akka in Practice: Designing Actor-based Applications
NLJUG
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Lightbend
 
Akka Finite State Machine
Knoldus Inc.
 
The promises and perils of microservices
Uwe Friedrichsen
 
Akka in Production - ScalaDays 2015
Evan Chan
 
Better Software—Faster: Ten Best Practices from Sequoia's Microservices Summit
Sequoia Capital
 
The Progression of APIs and Microservices - Photon Infotech
Photon
 
Ad

Similar to DSR Microservices (Day 1, Part 2) (20)

PPTX
Clean Code Development
Peter Gfader
 
PPTX
Good code
Jane Prusakova
 
PPTX
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Domenic Denicola
 
PDF
Mutation @ Spotify
STAMP Project
 
PDF
Adopting F# at SBTech
Antya Dev
 
PDF
Presto anatomy
Dongmin Yu
 
PDF
Architectural Tradeoff in Learning-Based Software
Pooyan Jamshidi
 
PPTX
Where the wild things are - Benchmarking and Micro-Optimisations
Matt Warren
 
PDF
[245] presto 내부구조 파헤치기
NAVER D2
 
PDF
Intro to Machine Learning with TF- workshop
Prottay Karim
 
PPTX
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
PPTX
Imagine a world without mocks
kenbot
 
PDF
Akka with Scala
Oto Brglez
 
PDF
Secure .NET programming
Ante Gulam
 
PDF
Priming Java for Speed at Market Open
Azul Systems Inc.
 
PPTX
Async await
Jeff Hart
 
PPTX
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Fedor Lavrentyev
 
PDF
What can be done with Java, but should better be done with Erlang (@pavlobaron)
Pavlo Baron
 
PPTX
Metaprogramming with JavaScript
Timur Shemsedinov
 
PDF
Mutation Testing: Start Hunting The Bugs
Ari Waller
 
Clean Code Development
Peter Gfader
 
Good code
Jane Prusakova
 
Callbacks, Promises, and Coroutines (oh my!): Asynchronous Programming Patter...
Domenic Denicola
 
Mutation @ Spotify
STAMP Project
 
Adopting F# at SBTech
Antya Dev
 
Presto anatomy
Dongmin Yu
 
Architectural Tradeoff in Learning-Based Software
Pooyan Jamshidi
 
Where the wild things are - Benchmarking and Micro-Optimisations
Matt Warren
 
[245] presto 내부구조 파헤치기
NAVER D2
 
Intro to Machine Learning with TF- workshop
Prottay Karim
 
Hazelcast and MongoDB at Cloud CMS
uzquiano
 
Imagine a world without mocks
kenbot
 
Akka with Scala
Oto Brglez
 
Secure .NET programming
Ante Gulam
 
Priming Java for Speed at Market Open
Azul Systems Inc.
 
Async await
Jeff Hart
 
Programming Java - Lection 07 - Puzzlers - Lavrentyev Fedor
Fedor Lavrentyev
 
What can be done with Java, but should better be done with Erlang (@pavlobaron)
Pavlo Baron
 
Metaprogramming with JavaScript
Timur Shemsedinov
 
Mutation Testing: Start Hunting The Bugs
Ari Waller
 
Ad

More from Steve Upton (8)

PDF
The histories of microservices
Steve Upton
 
PDF
DSR Microservices (Day 2)
Steve Upton
 
PDF
DSR Microservices (Day 1, Part 1)
Steve Upton
 
PDF
Computers of Apollo
Steve Upton
 
PDF
DSR microservices
Steve Upton
 
ODP
Inter-service communication
Steve Upton
 
PDF
Agile101
Steve Upton
 
PDF
Mq light in microservices
Steve Upton
 
The histories of microservices
Steve Upton
 
DSR Microservices (Day 2)
Steve Upton
 
DSR Microservices (Day 1, Part 1)
Steve Upton
 
Computers of Apollo
Steve Upton
 
DSR microservices
Steve Upton
 
Inter-service communication
Steve Upton
 
Agile101
Steve Upton
 
Mq light in microservices
Steve Upton
 

Recently uploaded (20)

PDF
4 Tier Teamcenter Installation part1.pdf
VnyKumar1
 
PDF
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
PPTX
Chapter_Seven_Construction_Reliability_Elective_III_Msc CM
SubashKumarBhattarai
 
PPTX
filteration _ pre.pptx 11111110001.pptx
awasthivaibhav825
 
PDF
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
PDF
Zero Carbon Building Performance standard
BassemOsman1
 
PPTX
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
PPTX
Basics of Auto Computer Aided Drafting .pptx
Krunal Thanki
 
PDF
All chapters of Strength of materials.ppt
girmabiniyam1234
 
PPTX
Precedence and Associativity in C prog. language
Mahendra Dheer
 
PPTX
MT Chapter 1.pptx- Magnetic particle testing
ABCAnyBodyCanRelax
 
PPTX
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
PDF
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
PPTX
Inventory management chapter in automation and robotics.
atisht0104
 
PDF
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
PDF
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
PPTX
ETP Presentation(1000m3 Small ETP For Power Plant and industry
MD Azharul Islam
 
PDF
2010_Book_EnvironmentalBioengineering (1).pdf
EmilianoRodriguezTll
 
PDF
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
PDF
Machine Learning All topics Covers In This Single Slides
AmritTiwari19
 
4 Tier Teamcenter Installation part1.pdf
VnyKumar1
 
20ME702-Mechatronics-UNIT-1,UNIT-2,UNIT-3,UNIT-4,UNIT-5, 2025-2026
Mohanumar S
 
Chapter_Seven_Construction_Reliability_Elective_III_Msc CM
SubashKumarBhattarai
 
filteration _ pre.pptx 11111110001.pptx
awasthivaibhav825
 
Construction of a Thermal Vacuum Chamber for Environment Test of Triple CubeS...
2208441
 
Zero Carbon Building Performance standard
BassemOsman1
 
Module2 Data Base Design- ER and NF.pptx
gomathisankariv2
 
Basics of Auto Computer Aided Drafting .pptx
Krunal Thanki
 
All chapters of Strength of materials.ppt
girmabiniyam1234
 
Precedence and Associativity in C prog. language
Mahendra Dheer
 
MT Chapter 1.pptx- Magnetic particle testing
ABCAnyBodyCanRelax
 
22PCOAM21 Session 1 Data Management.pptx
Guru Nanak Technical Institutions
 
67243-Cooling and Heating & Calculation.pdf
DHAKA POLYTECHNIC
 
Inventory management chapter in automation and robotics.
atisht0104
 
Biodegradable Plastics: Innovations and Market Potential (www.kiu.ac.ug)
publication11
 
Natural_Language_processing_Unit_I_notes.pdf
sanguleumeshit
 
ETP Presentation(1000m3 Small ETP For Power Plant and industry
MD Azharul Islam
 
2010_Book_EnvironmentalBioengineering (1).pdf
EmilianoRodriguezTll
 
2025 Laurence Sigler - Advancing Decision Support. Content Management Ecommer...
Francisco Javier Mora Serrano
 
Machine Learning All topics Covers In This Single Slides
AmritTiwari19
 

DSR Microservices (Day 1, Part 2)