Distributed Environment essentials you must know, as told by a Kakao interviewer
This course breaks down microservice architecture and distributed environments not as a mere list of technologies, but through the "design perspective" required in actual practice and interviews. Starting from the differences between Monolithic and MSA, it covers gradual migration strategies, Modular Monoliths, Clean Architecture, and Hexagonal Architecture step-by-step, clearly explaining why each choice is necessary and the resulting trade-offs. Furthermore, through hands-on practice, you can directly verify the intent of the structures and learn about core issues inevitably encountered in distributed environments—such as data consistency, transactions, inter-service communication, and fault tolerance—through realistic scenarios. Based on the actual questions and perspectives of a Kakao interviewer, this course aims to go beyond simple knowledge acquisition and elevate your very way of thinking about distributed systems to the next level.
I'm a knowledge sharer who works as both an interviewer and developer at Kakao. This time, together with Hong, I've prepared a course that introduces various perspectives on distributed environments and several patterns you can reference when structuring your projects.
I've tried to incorporate as much as possible the perspectives from which I typically ask questions in interviews.
Representative examples include:
1. How do you debug in a distributed environment??
2. Please explain the patterns you know.
3. How do you conduct testing according to architecture??
If you focus on these topics, you'll find this course even more beneficial.
I hope you gain many insights. Thank you!
5.0
이병석
97% enrolled
I don't think there could be any better content for establishing a theoretical topic. While there is some code writing, it is great for organizing personal knowledge rather than focusing solely on that, and it offers various perspectives that allow for further new learning.
I really enjoyed the great content.
5.0
warna
90% enrolled
I really enjoyed this very informative lecture. The more I reflect on the content, the more I realize how beneficial it is and how many perspectives I can gain from this lecture. Additionally, you've organized various practical materials and theoretical resources, so I feel very fortunate to have been able to watch such a great lecture on Inflearn.
What you will gain after the course
Design perspectives for understanding distributed environments at a glance
Clear criteria for choosing an MSA architecture
The ability to explain architectural trade-offs on one's own
A design approach that naturally incorporates testing and scalability
Knowledge that allows you to speak confidently about design in interviews and practical work
Development · Programming · Backend
I know the names of the patterns, but I don't know why they are used.
When architecture questions come up in interviews, I can name them. The part where I get stuck is the follow-up: "Why did you choose that?" Since there are no right answers in this field, you need to be able to discuss trade-offs, but there hasn't been a place to practice that.
Difficulty: Beginner
Practice code provided
Interview Summary File
Test Strategy
Unlimited access period
From Monolithic to DistributedModular Monolith · Clean · Hexagonal · DDD · MSA Patterns
Extends all the way to testingUnit · Integration · E2E · Contract(Pact)
2 Current Developers12-year Kakao HQ Interviewer · Pangyo Platform Server Developer
There is no single right answer in a distributed environment. You can only call it design when you understand the available options and their trade-offs.
Where this lecture begins
You will only be able to answer as much as you know.
Current state
Knowing the patterns
You can state the name and definition. You've seen it many times on blogs and have even used it in projects.
Why did you choose that?
The point where things get stuck
Cannot explain the trade-offs
The conversation cuts off when asked what the other options were and what is being sacrificed by choosing this one.
It is not a problem that can be solved with a single technique. You need to know and combine multiple topics to achieve both scalability and resilience. This course was designed to broaden those options.
Where this lecture began
This is a conversation that actually took place.
The starting point of this lecture was the recurring sense of disappointment felt during interviews.
It started from the recurring disappointments observed during interviews.
HHongWhat do you think about covering distributed environments in general?
KKakao Interviewer (Developer)Suddenly? Why?
HHongThese days, many people pass the document screening but fail at the interview stage, so I thought it would be helpful for those preparing if we covered theory or a broader design perspective.
KKakao Interviewer (Developer)I also felt it was a bit unfortunate while conducting interviews that although candidates' specs and knowledge are increasing, they seem stuck exactly within the limits of what they already know.
TToss DeveloperI'm not an interviewer, so I don't know about that part, but looking at new hires, the majority of them only know things that everyone else already knows. They don't really know why they use it or what the pros and cons are.
KKakao Interviewer (Developer)Then I'll try creating it with Hong. Since I haven't stepped away from being an interviewer yet, I think I can provide various perspectives on the interview process.
HHongSounds good. I'll prepare everything overall and let you know.
Questions revealed directly by the interviewer
Three things actually asked in interviews
These are the questions that the Kakao interviewer, who co-created this lecture, identified as the ones they frequently ask. The lecture curriculum is structured accordingly.
질문 1
How do you perform debugging in a distributed environment?
What this question is trying to verify
A single request passes through multiple services.
Logs are scattered across each service.
Do you know how to narrow down where a problem occurred→ Resilience & Observability
The final section covers resilience and observability patterns. It organizes, by pattern, what to look for and how to narrow down the cause when a failure occurs.
질문 2
Please explain the patterns you are familiar with.
What this question is trying to verify
It is not about how many names you can list, but
Can you explain what specific problems these were designed to solve?
Can you explain everything from service boundaries and decomposition to communication and aggregation? → Sections 4, 5, and 6
It covers SAGA, CQRS, service decomposition, DDD, Aggregator, BFF, and Service Discovery, along with why they were introduced.
질문 3
How do you conduct testing according to the architecture?
What this question is trying to verify
In many cases, people only mention unit testing and stop there.
When services are divided, test boundaries change as well.
How to verify contracts between services→ Contract (Pact) hands-on practice
We will cover Unit, Integration, and E2E through hands-on practice, and finally, we will directly write contract tests between services.
It does not skip all at once.
Between Monolithic and Microservices
Dividing things is not always the answer. There is a middle ground, and many services actually stay there.
MonolithicDeployed as one. It is simple, but becomes harder to manage as it grows larger
→
Modular MonolithDeployment is single, but boundaries are divided internally. Clean and Hexagonal architectures are used here
→
Microservices are deployed separately. There are gains, but there are also losses to that extent
In Section 2, we compare Monolithic and MSA and look at migration patterns. In Section 3, we will directly explore Modular Monolithic and Clean/Hexagonal architectures through hands-on practice.
What you will learn
In the order of Structure, Boundary, Communication, and Trade-off
Monolith and MSA, comparing the two and even covering migration patterns for moving between them
Modular MonolithDependency rules and testability of Clean and Hexagonal architectures. We will explore this through hands-on practice.
Service Boundaries and DecompositionSeparation based on Business, Database, and BFF, and DDD
Synchronous and AsynchronousWhen to use message brokers versus direct calls
System PatternsAggregator, BFF, Service Discovery
Data ManagementCAP, Database per Service, Polyglot, Sharding
Testing and DeploymentFrom Unit, Integration, E2E, and Contract testing to deployment patterns and serverless.
Patterns covered
Organizing things you only know by name
These are the actual topics covered in the lecture. We will examine what problems each one aims to solve and even what trade-offs are involved.
Modular Monolith
Clean Architecture
Hexagonal Architecture
DDD
SAGA
CQRS
BFF
Aggregator
Service Discovery
CAP
Database per Service
Polyglot Persistence
Sharding
Resilience
Observability
Contract(Pact) Test
Deployment Patterns
Serverless
Criteria for judgment, not just names
We will summarize the available options along with their respective trade-offs.
It starts with structure, passes through boundaries and communication, and ends with trade-offs and testing.
01
Course Introduction
Course Introduction
Recommended courses where you can deep dive into and implement the concepts covered in this course
Lecture summary file for interviews
Test Code Source
02
Monolithic and MSA
Monolithic vs Microservice Architecture
Patterns Migrate Monolithic To MSA
03
Modular Monolith and Application Architecture
Modular Monolith Structure (Modular Monolith)
Clean Architecture & Hexagonal Architecture
Dependency rules and testability of Clean Architecture & Hexagonal Architecture
[Hands-on] Exploring Modular Monolith
[Hands-on] Exploring Clean Architecture
[Hands-on] Exploring Hexagonal Architecture
Section 3 Quiz
04
Service Boundaries and Decomposition
Setting service boundaries and various MSA architecture patterns [ SAGA, CQRS ]
Service Separation and Decomposition [ Business, Database, BFF ]
Domain-Driven Design (DDD) and Service Boundaries
[Hands-on] DDD: How to represent complex business problems through software
Section 4 Quiz
05
Asynchronous and Synchronous Expressions
Asynchronous Communication & Message Broker
Synchronous Communication & Service Communication
Section 5 Quiz
06
In addition to these, various other system patterns
Aggregator Pattern for Service Data Aggregation
BFF (Backend for Frontend) Pattern
Service Discovery Pattern in Distributed Environments
Section 6 Quiz
07
Various trade-offs from a distributed environment perspective
Data Management Patterns [ CAP, Database per Service, Polyglot, Sharding ]
Resilience & Observability Patterns in Distributed Architecture
Testing Strategies in Distributed Environments
[Practice] Unit Test & Jest Setting
[Practice] Integration Test & E2E Test
[Practice] Inter-service Contract (Pact) Test
Deployment Patterns in Distributed Environments
Serverless Microservice Architecture
Section 7 Quiz
For people like this
Who is this course for?
Non-major developers who are curious about high-capacity architecture design
Those who have heard of MSA but did not know the specific design methods
Backend developers who are concerned about architecture and database scalability as their services grow
Developers who want to go beyond simple microservices and design complex distributed architectures
Current Market
Stories about AI replacing developers
New recruitment is decreasing, and companies are trying to hire only verified individuals. These are articles that have come out in recent months.
Krafton, which achieved record-breaking performance, has begun downsizing its workforce. The reason given was its transition into an 'AI-first' company.
SW specialist companies are stopping the recruitment of new developers. There are also projections that the hiring of entry-level developers will plummet by 77%.
53% of game designers answered, "AI will replace my job." Cases of recommended resignation have also been reported.
As much as companies are feeling uneasy, those being hired must demonstrate a clearer distinction. Ultimately, studying is something you do on your own, but depending on what you look at and from which perspective, the depth of what you can explain changes even when spending the same amount of time. I created this lecture to pass on that perspective.
Course Reviews
Stories from those who listened first
These were taken directly from the Inflearn course reviews.
"I don't think there could be any better content for establishing theoretical topics. While there is some coding involved, rather than focusing solely on that, it's great for organizing personal knowledge and offers various new perspectives to learn from."
Byeongseok Lee · Written after 97% completion
"I really enjoyed this highly informative lecture. The more I reflect on the content, the more I realize how beneficial it is and how many different perspectives I can gain from it. Additionally, since all the various practice and theoretical materials were well-organized, I feel lucky to have found such a great lecture on Inflearn."
warna · Written after 90% completion
Instructor
Created together by two current developers
It was co-created by Choi, a 12-year veteran developer who develops servers at Kakao headquarters and serves as an interviewer, and Hong, a platform server developer in Pangyo.
KAKAO · BACKEND ENGINEER · 12th Year · Interviewer
Choi
I am a 12th-year backend developer building servers at Kakao headquarters, and I also serve as an interviewer. In interviews, I focus more on whether a candidate can design rather than just knowing programming syntax. I have brought that exact perspective into this lecture.
"It was a shame to see that while their specs were growing, they were getting stuck exactly at the limit of what they knew."
Current Kakao Headquarters Server Developer · Interviewer · Computer Science Major
Knowledge Sharer · Pangyo Platform Server Development
Hong
I am in charge of platform server development in Pangyo. I continue my activities as a knowledge sharer to share the methods I used to study and the problems and solutions I encounter in practice. These lectures are not created alone, but together with several developers currently working in the field.
"In areas where there is no right answer, the reason why you chose that option is what demonstrates your skill."
Platform Server DevelopmentArchitectureMultiple Backend Courses
Frequently Asked Questions
Frequently Asked Questions for the Distributed Environment Course
Q.Do I need to have experience operating an MSA?
⌄
The difficulty level is set to introductory. It starts by comparing monoliths and microservices in Section 2, and instead of splitting them immediately, it first looks at the middle stage called Modular Monolith. You can follow along even if you are currently building a service that is deployed as a single unit.
Q.Is this a theoretical lecture or a practical hands-on lecture?
⌄
This is a lecture that covers design perspectives, with hands-on practice sessions interspersed throughout. We will examine Modular Monolith and Clean·Hexagonal architectures through code, express business problems using DDD, and in the final section, directly write unit, integration, E2E, and contract tests. The practice code is provided in JavaScript.
Q.Which patterns are covered?
⌄
It covers Modular Monolith, Clean/Hexagonal Architecture, DDD, SAGA, CQRS, Service Decomposition, Aggregator, BFF, Service Discovery, CAP, Database per Service, Polyglot, Sharding, Resilience and Observability, Deployment Patterns, and even Serverless. We won't stop at just listing the names; we will also look at what each one sacrifices.
Q.How much of testing is covered?
⌄
In the final section, we summarize testing strategies for distributed environments, followed by hands-on practice ranging from Jest setup to unit testing, integration/E2E testing, and Contract (Pact) testing to verify agreements between services.
Q.Does this help with interview preparation?
⌄
A Kakao developer who actively serves as an interviewer participated in structuring the content based on questions they actually ask. Those questions include debugging in distributed environments, explaining known patterns, and testing according to architecture. A summary file for interview preparation is also included in the materials.
Leave judgment criteria instead of names
In areas where there is no right answer, there is a clear divide between those who can explain their reasoning and those who cannot.
It takes a long time when you're stuck alone. There is a separate space where you can comfortably share everything from parts you get stuck on while taking lectures, questions that arise while applying them to your own service, to stories about your career and the industry.
OPEN CHAT · Developer Community
What do we share?
We discuss real-world problems encountered in practice, the architectures others have chosen, and stories about developer careers. Questions related to the lectures are also welcome.
"The places where you get stuck are usually where others get stuck too. Asking someone who has already been through it is the fastest way."
I started studying development after becoming interested in it while idling at home, and I am currently responsible for platform server development in Pangyo. I am continuing my activities as a knowledge sharer because I want to provide you with the methods I used to study, as well as the various problems and solutions you may encounter in practice.
These lectures are not created solely through my own knowledge. There are others who collaborate on every lecture.
I'm a knowledge sharer who works as both an interviewer and developer at Kakao. This time, together with Hong, I've prepared a course that introduces various perspectives on distributed environments and several patterns you can reference when structuring your projects.
I've tried to incorporate as much as possible the perspectives from which I typically ask questions in interviews.
Representative examples include:
1. How do you debug in a distributed environment??
2. Please explain the patterns you know.
3. How do you conduct testing according to architecture??
If you focus on these topics, you'll find this course even more beneficial.
I hope you gain many insights. Thank you!
I don't think there could be any better content for establishing a theoretical topic. While there is some code writing, it is great for organizing personal knowledge rather than focusing solely on that, and it offers various perspectives that allow for further new learning.
I really enjoyed the great content.
I really enjoyed this very informative lecture. The more I reflect on the content, the more I realize how beneficial it is and how many perspectives I can gain from this lecture. Additionally, you've organized various practical materials and theoretical resources, so I feel very fortunate to have been able to watch such a great lecture on Inflearn.