Skip to content

Instantly share code, notes, and snippets.

@sizovs
Created September 16, 2023 15:24
Show Gist options
  • Save sizovs/18ae7fa8dd9caca50270ef93952884a4 to your computer and use it in GitHub Desktop.
Save sizovs/18ae7fa8dd9caca50270ef93952884a4 to your computer and use it in GitHub Desktop.

1. Microservices, Modular Monoliths, and Event-Driven Systems

In this masterclass, I’ll take you through three different styles of enterprise service architecture: modular monoliths, distributed synchronous systems, and event-driven systems.

Together, we will design a non-trivial backend system and find out the strengths and weaknesses of each architectural approach. We will discuss the typical mistakes and problems developers face during service architecture design and how to solve them. You will learn how to choose the best architecture style for your project, and how to design hybrid solutions, leveraging the best parts of each architecture style.

Topics include:

  • Understanding the main styles of service and backend architecture
  • Microservies or monoliths? Is there a middle ground?
  • How to improve monoliths with modularity; Intro to Modular Monoliths
  • How and when to split the system into services with REST/RPC
  • How and when to become event-driven and fully async
  • How to design non-trivial backend and service architecture
  • How to avoid common errors in designing backend and service architectures
  • How to use C4 model to communicate your architecture ...and much more!

This masterclass covers fundamental concepts, relevant to all programming platforms and languages; developers and architects with different backgrounds can attend.

2. Pragmatic Refactoring Towards Better Architecture

Are you struggling with your codebase which causes problems like poor maintenance, unreadability, performance, and poor testability? After this masterclass, you will be ready to identify and repair architectural and code root causes of those issues using proven patterns and techniques from Domain-Driven Design, Test-Driven Development, Object-Oriented Programming, and modularization.

During code exercises, we will walk through solutions to issues like:

  • What to do with a “God Classes”?
  • Modules/classes with huge coupling and with overload of business logic
  • Mismatch between the code model and the business model of the reality
  • How to repair data inconsistency?
  • Inefficient reads from my database?
  • No clear boundaries in my codebase, how to introduce some?
  • and much more!

The masterclass will start with code that represents a huge legacy system that some of us have to work with on a daily basis. We will gradually refactor it and not only introduce patterns like CQRS, aggregates, policies, and parallel change, but also walk through how to talk about refactoring, technical debt, and how to sell our ideas to management.

The course is for developers able to code and complete exercises in Java, C#, or PHP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment