Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/20SN0dP.
Tammer Saleh talks about the mistakes people make when building a microservices architecture. He also talks about: when microservices are appropriate, and where to draw the lines between services, dealing with performance issues, testing and debugging techniques, managing a polyglot landscape and the explosion of platforms, managing failure and graceful degradation. Filmed at qconlondon.com.
Tammer Saleh is a long time developer, leader, and author of the acclaimed book *Rails AntiPatterns*. Saleh is currently building the Cloud Foundry platform at Pivotal.
2. InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
http://www.infoq.com/presentations
/cloud-anti-patterns
3. Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
Presented at QCon London
www.qconlondon.com
14. Solution: Start monolithic and extract
Microservices are complex and add a constant tax to development.
Build a boring application and extract services as needed.
47. Router vs Discovery Service
Both require service registration.
Discovery Service is simpler to build
and scale, since it doesn’t need to
route all data.
Discovery service does fewer
network hops.
Router is transparent.
Router can be exposed externally.
Router can cache transparently.
Router can round-robin.
Both require HA and scalability.
48. Dogpiles
Service BService A
You there?
No.
How about now?
I’m busy.
But I wanna chat!
Go away
Whachya doin?
Please leave me alone.
Wanna be friends?
I hate you.
53. Solution: Correlation IDs
Service
Service Service
CID: 1234 CID: 1234
CID:1234
time:1427127483 source:service1 id:1234 msg:”Received request…”
time:1427348748 source:service2 id:1234 msg:”Processing payment"
time:1428374783 source:service3 id:1234 msg:”Error with payment!”
54. Solution: Correlation IDs
1. Tag all incoming requests with
unique ID
2. Service saves ID for all incoming
requests
3. Include that ID in all log lines,
etc.
4. Tag new requests with that ID
ServiceLogs
ID
ID
ID
ID
Complexity: Must be done manually.
58. Missing Mock Servers
Service A Service B
HTTP
Mock of Service A
HTTP
Team A Team B
For each service…
For each team…
59. Service A Service B
HTTP
Mock of Service A
HTTP
Team A Team B
Better…Solution: Service Team Provides the Mock
Team B still needs to know
how to run Mock Service A
60. Solution: Service Team Owns the Client
Service A Service B
HTTP
H
TTP
Team A Team B
Client A
MOCK=“true”
Best…
Mock of Service A
Product Surface Area
Both modes are tested in CI
Team A can change
the protocol as they see fit
79. In summary…
Start boring and extract to services.
Understand the hidden schemas.
Amortize traffic with queues.
Decouple through discovery tools.
Contain failures with circuit breakers.
Enable other teams through mockable
clients.
Kill your snowflakes.
Automate your deployments.
Build in operations tools from the beginning.
Make use of a platform like Cloud Foundry.
80. Watch the video with slide synchronization on
InfoQ.com!
http://www.infoq.com/presentations/cloud-
anti-patterns