itcamp 2017 - florin coros - decide between in-process or inter-processes communication at deploy...
TRANSCRIPT
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Decide Between In-Process or Inter-Process Communication
at Deploy Time
Florin Coroş
www.infiniswiss.com | www.iquarc.com | onCodeDesign.com
@florincoros
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Many thanks to our sponsors & partners!
GOLD
SILVER
PARTNERS
PLATINUM
POWERED BY
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
About me
@florincoros
Co-Founder & Partner
Co-Founder & Partner
.com
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
In-Process / Inter-Process Communication
4
Client Service
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Distributed Large Enterprise Applications
5
Data Data Data
Scalability
Reliability
Availability
Security
Maintainability
Testability
Migrations
Modernization
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Simpler Architectures
6
Database
Database
Maintainability
Testability
Migrations
Modernization
Scalability
Reliability
Availability
Security
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Performance Degradation Due To Inter-Process Communication
7
Data Data Data
Database
vs
Distributed System Monolith
+ No performance drawbacks due communication
+ Develop, Test, Maintain and Operate in isolation+ Scalability, Reliability, Availability, Security
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
• Develop, test and maintain in isolation as if each service is hosted
individually
• Load more services in the same process and communicate through
simple function calls
• Decompose the system regardless of deployment and communication
concern
• Decide at deploy time (configs only) which services are loaded in same
process and which communicate outside the process
• FOCUS on DECOMPOSITION and FUNCTIONALITY
Flexible Deployment
8
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
DEMO: Example of Dependent Services
9
QuotationService
+ GetQuotations() : Quotations
IQuotationService
OrdersService
+ PlaceSellLimitOrder()
+ PlaceBuyLimitOrder()
+ GetLimitOrders() : LimitOrders
PortfolioService
+ GetPortfolioValue() : decimal
IPortfolioService
IOrdersService
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Individual Deployment
10
IOrdersService
OrdersService
IPortfolioService
PortfolioService IQuotationService
QuotationService
inter-process
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Optimized Deployment for Orders – Quotation Communication
11
IOrdersService
OrdersService
IPortfolioService
PortfolioServiceIQuotationService
QuotationService
in-process
inter-process
QuotationService
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Host All in One Process (like a monolith)
12
IOrdersServiceIPortfolioService IQuotationService
QuotationService
in-processin-process
OrdersServicePortfolioService
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
How to Achieve This?
13
–Depend only on Contracts implemented in abstract types
–Proxies to forward the contract calls to the actual
implementation
–Type Discovery
Through Design
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
https://oncodedesign.com/ITCamp2017
Code Demo
14www.github.com \ iQuarc \ Code-Design-Training \ InterProcessCommunication \ TradingApp
@ITCAMPRO #ITCAMP17Community Conference for IT Professionals
Florin Coroş
Co-founder & Partner, iQuarc www.iquarc.com
Co-founder & Partner, InfiniSwiss
www.infiniswiss.com
.com
email: [email protected]
blog: onCodeDesign.com
tweet: @florincoros