@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
florin.coros@iquarc.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
PortfolioService
IQuotationService
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: florin.coros@iquarc.com
blog: onCodeDesign.com
tweet: @florincoros

ITCamp 2017 - Florin Coros - Decide between In-Process or Inter-Processes Communication at Deploy Time

  • 1.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals Decide Between In-Process or Inter- Process Communication at Deploy Time Florin Coroş www.infiniswiss.com | www.iquarc.com | onCodeDesign.com florin.coros@iquarc.com @florincoros
  • 2.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals Many thanks to our sponsors & partners! GOLD SILVER PARTNERS PLATINUM POWERED BY
  • 3.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals About me @florincoros Co-Founder & Partner Co-Founder & Partner .com
  • 4.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 In-Process / Inter-Process Communication 4 Client Service
  • 5.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Distributed Large Enterprise Applications 5 Data Data Data  Scalability  Reliability  Availability  Security Maintainability  Testability  Migrations  Modernization 
  • 6.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Simpler Architectures 6 Database Database Maintainability  Testability  Migrations  Modernization   Scalability  Reliability  Availability  Security
  • 7.
    @ITCAMPRO #ITCAMP17Community Conferencefor 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
  • 8.
    @ITCAMPRO #ITCAMP17Community Conferencefor 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
  • 9.
    @ITCAMPRO #ITCAMP17Community Conferencefor 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
  • 10.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Individual Deployment 10 IOrdersService OrdersService IPortfolioService PortfolioService IQuotationService QuotationService inter-process
  • 11.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Optimized Deployment for Orders – Quotation Communication 11 IOrdersService OrdersService IPortfolioService PortfolioService IQuotationService QuotationService in-process inter-process QuotationService
  • 12.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Host All in One Process (like a monolith) 12 IOrdersServiceIPortfolioService IQuotationService QuotationService in-processin-process OrdersServicePortfolioService
  • 13.
    @ITCAMPRO #ITCAMP17Community Conferencefor 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
  • 14.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals https://oncodedesign.com/ITCamp2017 Code Demo 14www.github.com iQuarc Code-Design-Training InterProcessCommunication TradingApp
  • 15.
    @ITCAMPRO #ITCAMP17Community Conferencefor IT Professionals Florin Coroş Co-founder & Partner, iQuarc www.iquarc.com Co-founder & Partner, InfiniSwiss www.infiniswiss.com .com email: florin.coros@iquarc.com blog: onCodeDesign.com tweet: @florincoros