1. All teams will henceforth expose their data and functionality through service interfaces.Jeff Bezos, CEO of Amazon, 2002
[...]
4. It doesn’t matter what technology they use. HTTP, Corba, Pubsub, custom protocols — doesn’t matter.
Anyone who doesn’t do this will be fired.Jeff Bezos, CEO of Amazon, 2002
Thank you; have a nice day!
Amazon architecture circa 2009 Ebola virus
Amazon architecture circa 2009 Ebola virus
Amazon internal services architecture circa 2009
https://apigee.com/about/blog/developer/microservices-amazon[Amazon's] code base is a disaster, with no engineering standards whatsoever except what individual teams choose to put in place [...]plus.google.com/+RipRowan/posts/eVeouesvaVX
- pager escalation gets way harder[...]
- very serious quotas and throttling [...] in every single service
- monitoring and QA are the same thing[...]
- you won't be able to find any [service] without a service-discovery mechanism
- debugging problems with someone else's code gets a LOT harder
long triple(long x) {
return x * 3;
}
@RequestLine("GET /triple/{x}")
long triple(@Param("x") long x);
> GET /triple/13 HTTP/1.1
> Host: my-service.us-east-1
< HTTP/1.1 200 OK
< 39
The Internet is running in debug modeRüdiger Möller
Flowable
.zip(
prices.of("IBM"),
portfolio.fetch(LocalDate.of(25, JANUARY, 2017)),
risk.check("IBM", 12, -0.1, 0)
.filter(Result::isSecure),
Order::build
)
.filter(Order::isProfitable)
.flatMap(stock::buy)
One of the golden rules of service architecture is that you cannot query data from a service.
If you allow queries, you’ve [...] violated the most fundamental tenants of building a service, which is you tell a service what to do [...]www.hanselminutes.com/578/ruby-and-rails-in-the-real-world-with-scott-bellware (20:30)
GET /portfolio?at=25-01-2017
GET /portfolio?at=25-01-2017
Google Docs, Trello, Pocket, Evernote, Endomondo
By sending thousands of simultaneous requests, the attacker was able to "move" coins from one user account to another until the sending account was overdrawn, before balances were updatedhackingdistributed.com/2014/04/06/another-one-bites-the-dust-flexcoin/
BEGIN;
-- Make sure no overdraft on Alice's account
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Bob';
COMMIT;
www.postgresql.org/docs/9.6/static/tutorial-transactions.html
SWIFT [...] providing a secure, reliable, and scalable network for the smooth movement of messageswww.investopedia.com/articles/personal-finance/050515/how-swift-system-works.asp
// ...
MoneyTransferred(
from = 'Alice',
to = 'Bob',
amount = 100.0
)
// ...
any application that can be written in JavaScript, will eventually be written in JavaScriptblog.codinghorror.com/the-principle-of-least-power
function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}