A course on how to design communication between services — and avoid ending up with a distributed monolith.

You’ll learn how to choose the right communication patterns, fix existing ones, and design new ones. For example: asynchronous architecture.
Communications
in Systems
When This Course Makes Sense
Typical Scenarios:
Your startup is still in the “just get it done” stage


You need to manage a Kafka cluster

You’re looking for a course on writing (micro)services or preparing for system design interviews

Курс
не Подойдёт
если...
This course is
not for you
if…
Yes
Talk about data models, event formats (and non-events), and design communications so that parts of the system don’t depend on each other — and the system as a whole doesn’t turn into a distributed monolith.

Support complex systems with a large number of business events, and fix legacy setups by migrating from ad-hoc communications to structured ones.

Yes
Yes
Focus only on concepts, principles, and patterns. (Code is something AI can write.)
No
Dive into specific languages, frameworks, or infrastructure - no K8s internals or Kafka tuning.

No
Do asynchronous programming, threading, frontend interaction, or people management. (We touch on these, but the course focus is on cross-service communication.)

No
Explain how to choose an architectural style or define service boundaries. (That’s covered in System Analysis.)
What to Expect
(and What Not To)
we’ll break down a system that developers hacked together in a rush, and bring it into a clear, structured state — one you can confidently keep building features on top of
Together
with our guides
Read to the end and you’ll close years of gaps in system communication. You’ll start making architectural decisions not on instinct, but consciously — with arguments and confidence.

Student community chat. Not just a channel for questions and links, but a living space where you go through the course together with other smart, motivated people. You can ask, share, get support — and feel: “I’m not alone, everyone hits roadblocks, and that’s okay.”

No endless spam or noise: everything is organized into threads, easy to follow only what matters. And the chat stays with you even after the course.

Extra materials. For every deep dive, we’ve gathered a stack of useful resources — books, articles, videos — and explained why they matter. Not just “read this,” but what to read, when, in which context, and why it’s important. You can go deeper or broader. There’s enough content for a year of self-study, especially if you like to dig in.
Five long reads. Okay, not just long reads — epic long reads.
The first one alone is 58 pages of A4. As dense as a good reference book, but written like a binge-worthy series. We anticipate every question: “But what if…?”, “Why not the other way?”

Final Q&A session with a mini-celebration. At the end of the course we meet online — answer questions, clear up what’s left, share insights. And, of course, celebrate: you’ve put in the effort, attention, and energy. Grab a drink, join in — March 3rd, 4:00 PM MSK.
One big assignment
for the
whole course
And to keep your brain from overloading, we split the texts into parts and carefully edited them. Easy to read, no stumbling required.

Weekly live sessions. Once a week we meet online. Anton goes through the key patterns that showed up in the assignments — typical mistakes, clever solutions, interesting approaches. He doesn’t just lecture, he demonstrates: how to reason, what to pay attention to, what should be a “red flag.”


Not a lecture, but a live conversation. You can ask questions if something’s unclear, discuss your own case, and get advice. Recordings are available, but live is better — interaction gives a completely different effect.


What’s in the course
Course Schedule
Intro
session
Weekly homework reviews
Q&A
Deadline
catch-up
(Available only for feedback tiers)
The workload may be less or more depending on your background, how fast you absorb material, and how deep you want to go.
January 28 at 16:00 (GMT+3)
From March 3
to March 12
March 13 (Friday)
at 16:00 (GMT+3)
Study: 6–7 weeks ≈10 hours per week
(Available for all tiers)
(Available only for feedback tiers)
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
online 16–17:30 мск
lesson1
Intro session
We start by getting to know the training system and its problems.

We break down the core concepts of the course: what a “system” actually is, how EDA differs from microservices with asynchronous communication, and where to begin when you’ve inherited a distributed monolith.

Lesson 1. Foundations of Event-Driven
By the end:
You’ll learn to identify events in a system with EventStorming, understand why events are good and commands are bad, and practice choosing a broker and naming events clearly.
Key concepts and terms:
  • Event driven architecture
  • Event driven communications
  • Coupling и cohesion
  • Command vs. reactive approaches to communication
  • EventStorming
  • Event granularity
  • Distributed queues and logs
  • Fine-/coarse-grained events
  • Kafka
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
Lesson 2
In the previous lesson we defined connections based on the system’s functions. Now we look at its form — building a data model required for business logic.

Using the communication map and the data model, we’ll define the ways different parts of the system interact with each other.

Lesson 2. Deep Dive into Communication
By the end:
You’ll learn to build a conceptual data model, define communication styles, decide which data belongs in a single event and which in multiple events, and understand how to name topics in Kafka.

Key concepts and terms:
  • Conceptual, logical, and technical data models
  • Consistency
  • Delta vs. state events
  • System/replication/public id
  • Event serialization: JSON, Proto, Avro
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
lesson 3
Peer review of Homework #1

Homework #1 review session
Homework #1 due
As the system grows and changes, business requirements may seem to contradict each other. We learn not to fear this, but to handle it — especially when it comes to backward compatibility.

Lesson 3. Evolution and Fixing Mistakes

By the end:
You’ll understand how large systems evolve, learn to migrate from synchronous to asynchronous communication (and back), and build a detailed plan for changing any type of connection. You’ll also explore compatibility issues and how to solve them.
Key concepts and terms:
  • Backward and forward compatibility
  • Versioning communications
  • Schema Registry
  • Data loss and idempotency
  • Retries
  • Outbox pattern and dead letter queue
  • Event ordering
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
lesson 4
Peer review of Homework #2
Homework #2 review session
Homework #2 due
We learn to live with a large system. We figure out how to observe what’s happening in communications and how to debug emerging issues.

Lesson 4. Maintaining the System
By the end:
You’ll learn to monitor large systems, understand reactive patterns and their use for implementing business logic.

You’ll also practice explaining and “selling” communication-related decisions to business stakeholders and colleagues — with evidence and clarity.

Key concepts and terms
  • Observability & monitoring
  • Evidence-based decision making
  • Security
  • CQRS, event sourcing
  • Coordination models
  • Socio-technical systems
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
lesson 5
Peer review of Homework #3
Homework #3 review session
Homework #3 due
We summarize the course and discuss what comes next.

We review the key concepts covered and plan how to keep developing your own skills after the course.

Повторяем концепции, пройденные в курсе, и планируем развитие собственных навыков после курса.
Lesson 5. Wrap-Up and Next Steps

By the end:
You’ll receive a checklist for working with system communications and clear next steps for self-study. You’ll also consolidate all the knowledge in one place, making it easy to return to later.
Key concepts and terms:
  • Everything covered in the course
  • C4, arc42, ISO 42010
  • Team topology
  • Integration patterns

  • Microservices decomposition.
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
Peer review of Homework #4

Homework #4 review session
Homework #4 due
Thursday
Monday
Tuesday
Wednesday
Friday
Sunday
Saturday
Deadline
catch-up
Q&A-session
Demo version — Longread 1
Read the demo version.
It will give you a clearer idea of what to expect from the course.

Note: the course is fully delivered in Russian

Experts
Independent solution architect and developer, former core contributor to Hanami and Dry-rb. Previously worked as a backend architect at Toptal.com, helped iGoods, 3commas, Chaika and other companies move to service-oriented architecture and set up integrations.
Lead expert of the course.
Editor and author of the book “Simple and Clear: How to Handle Problems That Seem Too Big to Tackle.”
In the course, he’s responsible for editing — making sure the texts are clear and easy to follow.
Runs a boutique outsourcing company, consulting businesses on development management.
In the course, he keeps the business perspective in focus — reminding you why we draw all these boxes in the first place.
Community Track
5 long reads (delivered in one email)
Curated list of extra resources

Practice & feedback
  • Homework with group feedback (from Anton + peers)
  • Weekly live sessions with Anton reviewing homework and common mistakes

Support
  • End-of-course Q&A with Anton
  • Private chat with Anton & the cohort (lifetime access)

Bonuses
  • Access to materials for 9 months after the course
  • Named certificate (if you submit all homework and peer reviews)
For those ready to get their hands dirty, learn from others, and get feedback directly from Anton.

VIP Track
5 long reads (delivered in one email)
Curated list of extra resources

Practice & feedback
  • Homework with group feedback
  • Weekly live homework reviews with Anton
  • Personal written feedback from Anton on your homework
  • 45-min 1:1 consultation with Anton after the course

Support
  • End-of-course Q&A with Anton
  • Private chat with Anton & the cohort (lifetime access)

Bonuses
  • Access to materials for 12 months after the course
  • Late submission option (1 homework up to 2 days past the deadline)
  • Named certificate (if you submit all homework and peer reviews)
  • 20% discount for any future Tough-dev.school courses (valid for 1 year)
The most in-depth option. Personal feedback and 1:1 time with Anton.
12
seats
Starter Pack
Pricing
If you have questions or want to pay via your company — write to us at [email protected]. We’ll get back to you within 24 hours.
undefined
Reduced delivery risks
you’ll learn techniques to estimate work more accurately and avoid unexpected delays
Как убедить компанию, чтобы за меня заплатили
Fewer bugs during
refactoring
clear frameworks for migrating services and restructuring communications mean less trial and error. And the course provides checklists and scenarios that make moving away from legacy systems more predictable.
How to Get Your Company to Cover the Course
Closer alignment with business goals
you’ll learn to view the system not just as code and tables, but through the lens of business processes — reducing the gap between what the business wants and what gets built.
How to Get Your Company to Cover the Course
Show your manager or team lead the concrete value the company will gain once you apply what you learn:

Get approval
Align with your manager or HR that the company will cover the training. If needed, introduce us so we can help explain the process
Handle paperwork
We issue an invoice and provide any necessary documentation for procurement or compliance

Share company details
Once payment is processed, we add you to the course and share the content. At the end, we’ll provide all closing documents your finance team may require
Send us your company’s billing information (usually handled by HR or finance). If your company needs specific documents, just let us know

Get access

2
1
3
4
At the end of the course, you’ll receive a digital certificate if you submit all assignments on time and review all peer homework.
We make our certificates something special — the kind you’ll actually want to share.


Certificate
(Available for feedback-based tiers only)
Reviews
from Alumni
Alexander I.
This course gave me a clear structure for thinking about asynchronous communications. Within the first week I was already applying the ideas at work.
Anton explained concepts in a way that finally clicked for me.

One big insight: don’t merge two business steps just because they look similar technically.
I’ve started adapting these lessons on the job, and it’s been motivating and rewarding.”
Alexey Ismailov
"One of the biggest insights for me was realizing that many teams rush into microservices without seeing the bigger picture. Sometimes the right choice is a monolith — and thanks to the course, I now understand when and why.

The course also showed me the depth of what I didn’t yet know. It opened a new layer of understanding and helped me see architecture not just as async patterns, but as a whole discipline. I’ll be revisiting the materials for months to come."
Maria Krol
I work as an architect in a telecom company with a huge product full of legacy code, a plugin-based architecture, and almost no documentation. We were preparing for a massive refactor, and I had no idea where to start.

Through the course, I finally understood why our documentation felt unreadable and why diagrams had to be explained over and over. I began cleaning up the docs, which naturally led into planning the refactor starting from the most critical areas.

Another big takeaway was learning when not to use microservices. That alone can save teams enormous costs and mistakes. By going through the full cycle myself, I also gained clarity on where architecture ends and design begins.
Andrey Boldyrev
The course is incredibly well structured — nothing extra, just focused content and a hands-on project. The additional reading lists after each lesson are amazing.

EventStorming was a real discovery for me. If you want to dive into distributed systems from scratch or level up your current skills, this program gives you a toolkit of best practices you’ll actually use.
Nikita Myazin
"I first heard about the school from a colleague and was skeptical at first. But after the first lesson, I decided to give it a try — and I’m glad I did.

The best part wasn’t just the material, but also the chance to connect with people from different backgrounds and exchange ideas. Anton was always there to explain things all the way through.

The hands-on assignments were top-notch — they gave me the experience I couldn’t get at work until I had done it myself. After the course, my colleague and I reviewed our own system at work, spotted issues we couldn’t articulate before, and came up with a plan to fix them.

It completely changed how I approach architecture decisions, especially when it comes to splitting things into microservices. Highly recommend!
Alexander Verkhovlyad

The course helped me organize my existing knowledge of system architecture and design, while also expanding my toolkit for working with microservices. I practiced DDD techniques, requirement analysis, and breaking systems down into subsystems.

At work, the insights from the course pushed me to improve our architecture and restructure subsystems. On top of that, I really enjoyed connecting with peers and like-minded colleagues during the program.
Pavel Shchegelsky

I’ve always been curious about new technologies and methods, but what really matters to me is practice. This course delivered on all of that.

I had read a lot about Event Storming before, but never had the chance to actually try it. During the course, I finally experienced why it’s such a powerful tool for understanding domains, dependencies, and system behavior.

I also deepened my understanding of the challenges in building asynchronous architectures — and how to avoid ending up with a distributed monolith. Through hands-on work with Kafka and message exchange patterns, I learned how to tackle communication problems more effectively.

On top of that, I got more familiar with the Spring framework while working on assignments. Overall, I don’t regret a single hour spent. I’m very happy with the results and with Anton as an expert.
Artem Lebakov

I really enjoyed the course and got more out of it than expected, even though I didn’t finish all the assignments. A few highlights:

  1. I usually work in automation, not system architecture. Still, the course gave me new ways of thinking and helped me see how concepts like coupling apply beyond microservices.
  2. I’ve taught a few courses myself, and honestly, this one humbled me — the material and organization were excellent. I’ll be borrowing some of these approaches for my own teaching.
  3. Best of all, the course doesn’t just end when it ends. It leaves you with a solid foundation and plenty of material to keep learning from.
Andrey Alenin
In my view, the most valuable aspects of the course are:

  1. The relevance of the material — everything Anton covers is something you can apply immediately during the course. Later, when you face these technologies on the job, they won’t come as a surprise because you’ll already have hands-on experience.
  2. The practical assignments — they simulate real-world conditions and let you test technologies in a production-like environment. This prepares you for the kinds of challenges that come up in modern IT projects.
  3. The holistic approach — by the end, you don’t just practice isolated techniques, you build a working system and learn to see how subsystems interact. It trains you to approach complex systems with a broader perspective.
Maxim Masarnovsky
Java Developer, Andersen
I got exactly what I was looking for — a deeper understanding of how asynchronous systems work, how to design them, and the pitfalls to watch out for.

Before the course, I only had a rough idea of microservices, often framed through antipatterns. Here, I learned proper architecture principles and got hands-on experience with Kafka.

I’d recommend this course to any developer planning to work with microservices. It’s also a great way to broaden your perspective — this is a hot topic you’ll almost certainly encounter sooner or later. I’d say the course is best suited for mid-level and above.
Danila Chervonny
What I liked most was the homework reviews — very detailed and insightful. The assignments themselves were also great: even if a bit rough at times, they really helped immerse me in the context of building asynchronous distributed systems.

I learned everything I needed to start designing distributed systems — and more. We even covered the internals of code and command/request separation. I’d recommend this course to anyone interested in learning how to build asynchronous distributed systems.

If there’s one thing to improve, it’s the assignments. They already bring a lot of value, but they could be polished further — that’s where the biggest learning happens.
Stanislav Bolsun
Software engineer, Arrival
The course turned out even better than I expected. I especially liked the first part — designing systems “on paper.” It’s such an important step, and I learned a lot from it. Some assignments, like the one on authorization, were tough for many students, but overall the experience was excellent. I’m glad I finished the course with all the assignments done.

Going through this program made me realize how much I enjoy architecture and that I want to keep growing in this direction.
Mark

I really enjoyed everything about the course. I want to especially highlight the number of references and the way the material was delivered.

I didn’t look at microservices as a whole system where every layer matters before. After the course, the structure made complete sense. It’s now much easier for me to design complex systems and communications, break down business requirements into clear abstractions, and understand context — sagas, business transactions, design methods, and more.

I’d recommend this program to anyone who wants to approach microservices seriously, not just scratch the surface.
Anton Chuchkalov Software engineer
The course was both fun and insightful — even the business requirements examples made me smile.

I liked that I could get hands-on experience with data streaming and RabbitMQ. It was also very useful to design a system end-to-end before jumping into implementation.

Unfortunately, I didn’t have enough time (or maybe motivation) to try SchemaRegistry or deploy through k8s. Kafka would have been interesting too, but I had already seen it covered in Anton’s streams, so I decided to focus on RabbitMQ.

I didn’t bring the system to a production-ready state — that would have taken too much time and felt unnecessary. Still, I’m happy with the way it works now.
Evgeny Burmakin
Wanna-build web developer
During the course I realized why so many companies struggle when moving from a monolith to microservices. Often, they don’t actually make life easier — they just end up with a distributed monolith that’s even harder to test.

For me, the course cleared up a lot of questions around data exchange between services and how to define a single source of truth.

I’d recommend it to mid-level developers with a few years of experience who feel the need to sharpen their architecture skills but aren’t sure how to move forward. For juniors, it’s probably too early — more of a distraction than a benefit.
Marina Belova developer в servers.com
The course helped me strengthen my theoretical knowledge of asynchronous architecture and see how things actually work in practice. For example: how data is validated, how versions are managed, and how contracts are stored. What kinds of events exist, and how they can be processed. In which cases such architecture is truly useful.

I’d recommend it to mid-level and senior developers, and—perhaps unexpectedly—to product managers as well. There’s a lot here that can be valuable for them too.
Dmitry Matveev Evrone, Potok.Digital
The key takeaway for me was understanding the difference between a distributed monolith and a well-designed microservices system — mainly, the role of a data bus and how services communicate through it.

I’d recommend Anton’s workshop and talks (both live and recorded) on microservices and event storming to web developers and architects. The core ideas are also highly valuable for project and product managers working in IT.

Today, asynchronous microservices architecture and distributed apps are the industry standard. Even if you think you’re still running a monolith, or you’re not sure what you actually have, this course helps you see how the whole machinery works in an asynchronous setup.
FAQ
Didn’t find what you were looking for? Email [email protected] — we reply within 1 business day.

Учавствовать в курсе

Обязательное поле

Обязательное поле

Обязательное поле

Заполните обязательные поля

Нажимая на кнопку, я соглашаюсь на обработку персональных данных, с Политикой конфиденциальности и с офертой

Made on
Tilda