Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

One of the challenges of designing distributed systems is to decide which of the services that compose the application are loaded in the same process and communicate directly and which should be deployed on different boxes and use inter-process communication. Sometimes, we cannot anticipate this at all and we’d want the flexibility to change it based on usage metrics collected while the system is running in production.
In this session we will learn, from real life projects experience, how we can achieve the flexibility of deciding only at deploy time, without changing the code, on which of our services communicate in same process and which use inter-process communication. We will achieve this using the iQuarc.AppBoot library, which is an abstraction over a Dependency Injection Container and provides support for modular applications.

  • Be the first to comment

  • Be the first to like this

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

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