This course is about how to design systems. You'll learn to make new ones that work out well the first time, and also take the old systems apart and speed up the development.
We'll teach you how to move from monoliths to micro-services with a reasonable choice of technologies and architectural styles. And of course with leaving behind clear documentation.
SYSTEMs
aNALYSIS
You're making or going to make architectural decisions

You're starting to build a system that's larger than one man-month

You don't know how to approach an unmaintainable inherited codebase

The course
Is for you
if...
Your startup is at the go-go-go stage

You think that architectural solutions should be submitted as a code

You're looking for a course that teaches how to code (micro)services

Курс
не Подойдёт
если...
THE COURSE
ISN'T FOR YOU
IF...
is the course suitable for analysts?
We often get asked
It suits you if you want to:
— see the whole system instead of focusing on every single part of it
— figure out how to turn requirements into a high-level technical structure and pass it to developers

It doesn't suit you if you:
— want to learn how to choose a particular technology (library, data base);
— want to understand how Kafka, PostgreSQL, Spring or any other technology works
— already know how to turn requirements into system structure and choose proper technical solutions for your company
We won't talk about ISO and other standards. They will be used only as reference material. This course is not about getting certified as a solution architect.
Instead, we will talk about the foundations and principles of these standards. You can always google the needed documents, so it's more important to understand the underlying logic and get the general picture.
We won't talk about designing systems in the sense of choosing сaсhing technologies, message-brokers and options for deploying k8s.
Although there is a small part about it, we don't have a goal to teach you how to choose specific technologies. Instead, we will teach you to determine what a business should do to make more money. If you want to master the choice of technologies, there are specialized courses such as AWS certification.
What (not) to expect
Bill and the Cat-Critic have a business task to create a new system.
They face obstacles along the way, and Anton helps them solve the problems.
5 long-reads. Each of them has some theory, real life examples from development practice and answers to important questions that are embarrassing to ask. Straight to the point. With cats.
what's in the course
Additional materials and add-ons for real nerds. To deepen into the topic, we give you a bunch of useful links and explain why they are important. You'll also find a lot extra content that you should read if you're Anton or just like being nerdy.
You'll design project architecture based on all the requirements. You'll create a data model, describe the communications, define the subdomains and architectural characteristics of the project. All of these will evolve as you learn throughout the course.
Student community. The course chat where we answer questions and support each other. It will always remain accessible. At the end of the course you'll be added to the big community of all our students. The chat keeps being useful, bustling and almost flood-free.
Q&A-session
At the end of the course.
one big homework
during the course
Homework review meetings.
After every single homework. Through Zoom. Anton looks through the submitted tasks and tells you the main insights at the meeting. You can also watch the recording, but then you won't be able to ask questions or clarify things.
4 lessons
COURSE PROGRAM
Meet and greet session
Q&A session
Catching up on your homework
For plans with feedback

*The load can be bigger or smaller than that. It depends on your level of training, the ability to grasp information on the fly and your desired level of engagement in the course.
Studying 4-5 weeks,
≈10 hours per week*
For plans with feedback

New elective
Students suggest their topics. Anton chooses one and prepares the material
For plans with feedback

When we just start designing systems, we usually don't have neither articulated requirements, nor sufficient time. After this lesson you'll make sure you can create something viable even in such circumstances.

We'll also look at two anti-patterns: breaking down business logic into technical steps or by entities (entity service).
Lesson 1. Working with requirements, dividing the system into elements
Key concepts and terms:

  • Working with requirements
  • Event Storming
  • Data model
  • Basic comparison of micro-services and monoliths
  • System, its form and structure
Day 2
Meet and greet session
Lesson 1
Day 1
Developers tend to base their decisions on technologies rather then business vision. The requirements usually don't interfere with that. At the lesson we fix it. We'll learn to design systems based on strategic business analysis and scrutinize distributed and monolithic architectural styles.
Lesson 2. Strategic business analysis and architectural styles
Key concepts and terms:

  • Strategic DDD, subdomains
  • Coupling & cohesion, temporal coupling, local & global complexity
  • Quality attributes/non functional requirements/architecture characteristics
  • Searching for characteristics and translating business terms into characteristics
  • Systems life cycles
Day 1
Homework submission №1
Day 3
Zoom homework review
Day 4
Lesson 2
Day 2
Peer-review
Adding external limitations: compliance, geographical and logistical constraints, amount of investments, developers' level of training. In this lesson we'll learn to identify and prioritize them.

We'll learn not only to make decisions, but also to describe them without losing the context. That will speed up the on-boarding process for new team members.

We'll also learn some new architectural styles: microkernel, pipeline, event-driven.
Lesson 3. External constraints and documentation
Key concepts and terms:

  • Limitations of the system
  • Choosing a database based on the characteristics
  • Choosing a messaging system and an event broker
  • Fitness function
Day 1
Homework submission №2
Day 3
Zoom homework review
Day 4
Lesson 3
Day 2
Peer-review
Learning to refactor complex systems: adding new functionality, removing the unsuitable, merging services, rewriting existing services and getting rid of anti-patterns like entity services.
Lesson 4. Breaking monoliths
Key concepts and terms:

  • Adding new functionality to separate services
  • Convergence of services
  • Transferring the functionality of a monolith to a service
  • Strangler Fig Application, Volatility Based Decomposition, Tactical Forking, Component-Based Decomposition
Day 1
Homework submission №3
Day 3
Zoom hometask review
Day 4
Lesson 4
Day 2
Peer-review
The goal is to summarize the knowledge and discuss the further steps. Get the gist of how to describe a system. Plan your own skills development and revise the main concepts from the course.
Lesson 5. Conclusion and next steps
Key concepts and terms:

  • Everything that was on the course
  • 4+1, C4, arc42, iso42010
Day 1
Homework submission №4
Day 3
Zoom hometask review
Day 4
Lesson 5
Day 2
Peer-review
Certificate
Those who finish the course and submit all the homework get a certificate*. You can upload it on your LinkedIn and be proud.
*For plans with feedback
Experts
Independent solution architect, core-contribtor Hanami & dry-rb. Used to work as a backend-architect at Toptal.com. He helped igoods, 3commas and other companies switch to service architecture and set up integrations. The main course expert.
Specializes in creating new and is very into the topic of education. Worked at Attendify, Ciklum and other international companies. She's responsible for the educational track of the course. Mariana makes knowledge stick better and turns studying process into something fun.
Editor, the author of the book "Nice and easy. How to deal with tasks that are hard to approach". The editor of the course — makes the texts clear and easy to understand.
Independent CTO, has lead programmers for 14 years. In this course he helps students stay focused and makes their theoretical ideas meet development practice.
FEDOR BORSHEV
TIMUR ZARUDNY
Student community
All our students have a chat where they help each other: from giving relocation advice to choosing the suitable stack. Now there are 800 active participants in the chat.
When you finish the course, we will add you to our
feedback from our students
Igor
I had never studied systems analysis before the course. Almost all of the techniques turned out to be new for me. These 5 weeks were one of the most knowledge-saturated in my life.

For example, before this course I theoretically understood that technical decisions should be based on reality. However, I couldn't tell which exact features influenced the final choice, and how. The main insight of the course was the systematization of that comprehension. Now it's much easier to find better solutions and justify them in front of the team.

The course will benefit not only architects and engineers with ambitions to be analysts, but also all the developers who want to find good technical solutions.
Andrew
I chose this course because I was familiar with Anton's work and had already taken his course about asynchronous architecture. I had a feeling (and it proved to be true) that the course would be high-quality and straight to the point. Practical tasks to consolidate the material were a great bonus and additional motivation!

During the course I grasped what Event storming is and how to apply it. And most important — I gained practical experience! I figured out how to justify the choice of an architectural solution for the project in general and its individual services.
Daniel
The main benefit of the course is the clear understanding of how to approach complex systems. The process looks more predictable now, and I have instruments to deal with each step of it. I feel more confident in my decisions.

In my work tasks I try to use event storming and stakeholder map / concerns, to evaluate architectural characteristics and choose a solution based on them.

I recommend this course to engineers starting from mid-level.
Dmitry
I had a chance to try a bit of ES, but I probably won't carry it through. The work plans for this project have changed, and for the current one ES is redundant =)

All of the materials were very useful: event storming, allocation of root domains, data models, dealing with requirements, working with stakeholders, creating architecture plans. I actually can't choose the one most valuable thing from the course. I was used to doing things by guess, as I thought fit, but the course has given me a whole picture that now helps me complete tasks better. I will still need some time to process all the new knowledge.

I would recommend this course to anybody who's interested in designing systems. Even if you don't want to get the position of an architect, you will still learn to speak the same language with architects and ask the stakeholders the right questions.
Dmitry
I first took the demo version of the course and thought "that's an interesting course about practical architecture". I expected to get some new knowledge that would balance the business vs development relationship.

Now I've got the practical skills of designing systems without thinking too much about the technical realization. The thing from the course I've already started doing in my work project is dividing domains according to business logic.
Nick
Turning almost every homework into an event storming model was a very useful task. That's a great chance to revise the information and understand how to do everything better.

I can recommend this course to everybody whose job is connected to designing systems or to any related stages of creating the architecture of complex systems. This course will help you understand what happens on the phase of designing architecture and stop viewing that process as a black box that creates difficulties for the sake of difficulties and work for the sake of work.
Dmitry
I wish this course was taught at universities. I would've developed much faster and made fewer mistakes. I've been interested in architecture for a long time. I've read "Clean Architecture" by Martin, as well as DDD-books (green and blue). But when I tried to implement the knowledge from the books, I kept coming up with the same nonsense. I wanted to fix it and start thinking differently. This course has helped me a lot.
FAQ
If you haven't found an answer to your question, please contact us via [email protected].
We'll answer within 24 hours.
Made on
Tilda