Presentation is loading. Please wait.

Presentation is loading. Please wait.

Breaking Up Is Hard To Do From Monolith to Microservices.

Similar presentations


Presentation on theme: "Breaking Up Is Hard To Do From Monolith to Microservices."— Presentation transcript:

1 Breaking Up Is Hard To Do From Monolith to Microservices

2 Jake Stevenson Technical Director — Improving Enterprises Systems Architecture, Software Development, Team Mentorship, DevOps Automation Theater Major

3 Monolithic Application Architecture Self-Contained and Independent from other applications Usually layered UI Business Logic Data

4 Microservices Architecture Small, Independant Applications Integration Logic Ties it Together Message Brokers RESTFull Services Presentation Layer Needs to Cross Applications

5 What's Wrong with Monoliths? Risk when Refactoring and Changing Deployment Time And Risk Hard to scale your Team IDE slowdown Friction when Updating Technologies

6 Story Time!

7 Quick look at code

8 Early times Had an idea and executed with agility YAGNI Smooth to Launch

9 Text CleanAir4You.com CleanAir4You.com Architecture CleanAir4You.com Monolith Organized By Areas

10 Tour the Monolith Divided into areas loosely related to bounded contexts Services for those context called directly from the controllers Unit tests (not shown) are also monolithic

11 Pain Starts New Developers Hired Merge conflicts start hitting Regression mistakes hurt Deployment brings the whole site down

12 Story Time!

13 Time to look at code

14 Developer learns about messaging patterns Plans to break up the application start CQRS ideas introduced (simple bus) Solution size explodes -- Seperate projects for bounded contexts

15 Messaging Pattern Simple Approach — Events vs Commands Events inform that something happened Commands tell someone to do something Simple bus to wire up handlers to these

16 More Growth - More Pain Hired More team members -- split into multiple teams Backlog growing faster -- success makes business want more Still more code conflicts More communication needs Deployment more painfull Longer builds Longer unit testsl

17 Time to Bite The Bullet Ensure Bounded Contexts are Sound Decide How to communicate -- APIs, Messaging and Contracts Write a new Solution Generate a new Database -- Migrate data

18 Ensuring Sound Bounded Contexts Who owns the data? Overlaps in ownership cause consistency concerns

19 Communications Patterns Shared Database Tables RESTFull/SOAP APIs Message Bus

20 Solutions and Builds One solution per micro service Nuget to distribute contracts

21 Who owns the Data Shared is easier to start, but will bite you Transactions across bounded contexts suck Eventual Consistency is Key

22 Strategies for Eventual Consistency Identify what’s really needed for the context of the action Do you care if they’ve billed before you create the account? Do you care if the account is created before you’ve billed? Is it acceptable to go back and let them know the bill failed?

23 Code Demo

24 Text CleanAir4You.com CleanAir4You.com Architecture CleanAir4You.com Now With Microservices!

25 Rabbit and NServicebus

26 Downfalls Deployment/IT complexity Source code explosion Data scatter -- Reporting considered it's own microservice Debugging Intersections

27 And now for the hard stuff!

28 What about the UI?

29 Code Demo

30 Text CleanAir4You.com CleanAir4You.com Architecture CleanAir4You.com With UI Composition


Download ppt "Breaking Up Is Hard To Do From Monolith to Microservices."

Similar presentations


Ads by Google