Azure Frankfurt Damir Dobric Armin Kalajdzija Indraneel Pole #azuremeetupfrankfurt
Microservices Modern Backends& Co.
Damir Dobric
[email protected]@microsoft.com
Microsoft PTSP (Partner Technical Solution Specialist)Microsoft Most Valuable ProfessionalBlog Twitter
@ddobric#azuremeetupfrankfurtdevelopers.de
What is a “Service”?
Service is a valuable action, deed, or effort performed to satisfy a need or to fulfill a
demand.
Service
What is SOA?
“Service orientation is a means for integrating across diverse
systems”
System 1 System 2
System 3
Microservices Approach“Microservices is an (trendy) Architektur Style to design a single complex application as a group of small (micro) services, which are independend in
development and deployment“
Service 1 Service 3
Service 2
All services build ONE
system.
X-Scale (Loadbalancing)
Node1 Node 2 Node N. . .
DB
Share traffic across multiple nodes is “easy”.
Relational DB scales vertically only. Horizontal scale is very difficult.
Z-Scale (Data Partitioning)Tire 1
DB2
Customers 0-10000
DB1
Customers 10001-…
Tire 1
DB2
Tenant 2
DB1
Tenant 1
Melvin Conway’s Low“Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”
Wikipedia, James Lewis + Martin Fowler
Three+ Tire Architecture
Result of organization described by
Conway’s low
Don’t panic! Architecture is ok. But, Organization tends to produce monolithics
based on this architecture.
Microservice = Y-Scale
Purchasing
Order Tracking
. . .
DB
Microservice
Feature N
DB DB. . .
Microservice
API GatewayThese are Microservices. They are typically used
inside of enterprise boundary.
But, these is not a Microservice. It is publicly accessable service used for integration (SOA), which consumes and orchestrates Microservices
Issues with Monoliths?This is typically 1 Binary
i.e.: mdw.dll
(I)You cannot combine
technologies if you use binary dependency !
(II)Increasing number of features slows down
flexibility
(III)Growing application
increases complexity. Growing across multiple
features means exponential complexity.
(IV)Growing application
can slow down performance
(V)Growing application make maintenance
more complex
(VI)Cannot replace
application (or parts) prevents of using of
innovations.
(VII)Application
Replacement “impossible”
. . .
Think “µ“ (mycro)
N-Tire is Ok, butMonolith is NOT ok!
Organize Application in Smaller independent (micro) components
If µComponents have to exchange information
define them as services.
Issues with Microservices Developers must be more operation focused due increased complexity. More discipline required in development, documentation and deployment Increased Dependencies Multiple Versions of Services side by side (code immutability) More complex test requirements Every system is distributed system Communication between services is slower (network) Transaction compensation is more complex
Integration StylesFile TransferShared DatabaseRemote Procedure InvocationMessagingRelaying (messaging + rpc)
http://www.eaipatterns.com/toc.html
API StylesRemote Procedure Call (RPC)
DoSomething()Blocking (SYNC) Call
RSTRepresentation State TransferSpelled as “ReST”PUT/GET/POST,..Blocking (SYNC) Call
MessagingCommunication with help of broker.
Technologies which helps “µ-design“REST API Style
WebApi (Recommended)WCF (Not recommended)
Message API StyleAzure Service Bus
Native MessagingDurable Task Framework
Transparent MessagingCoded Orchestrations
Azure App ServiceWeb-App, API-App, Logic-App
Service FabricDocker
Microservices(Azure App Services & Co.)
DAMIR DOBRIC
[email protected]@microsoft.com
Microsoft PTSP (Partner Technical Solution Specialist)Microsoft Most Valuable Professional
Blog Twitter
CloudAppsCloud CloudConsultingCloudAppsMiddlewareCloudAppsMiddlewareSoftware
Q & A