Apache Flink, a real-time ultra-low-latency platform used by Naver interviewers
Most developers still think in terms of Batch and CronJob when discussing data processing. However, in real-world service environments, data is generated continuously, and failing to process that flow immediately leads to delays, bottlenecks, and data consistency issues. I have also repeatedly faced the question, “Is batch processing really the right approach?” while dealing firsthand with real-time recommendations, state synchronization, and event delays in high-traffic environments. This course starts from that very question. It explores, from a practical perspective, how to use Apache Flink to perform computations as data flows in, manage state safely, and produce accurate results based on Event Time. Rather than simply explaining theory, it allows you to experience how real-time stream processing systems are designed and operated through actual source code and architectures. For those who have found real-time processing vague or wondered what lies beyond messaging, this course will provide a clear direction.
I'm already opening my second course!! Personally, I have a strong desire to share knowledge, so I wanted to freely share everything I know with you.
The topic I want to cover this time is Apache Flink, which I've selected as a subject that you should definitely know about.
Let me be honest!! If you don't have knowledge about real-time communication, this content might be difficult for you to understand. (Of course, I'll teach you everything, and honestly, I think the course is structured really well. haha)
But you absolutely must learn this. Even though it's difficult, I want to guarantee and tell you that you must learn it.
Real-time communication seems to be becoming extremely important in today's era. I think we need to provide more content to generate more traffic and collect more data.
In fact, this aspect is reflected in numerous large corporations and unicorn startups. Netflix's recommendation system that you know, Uber's real-time fare calculation, and recommendation systems like Musinsa
I haven't seen any platform or service that you use that doesn't include this real-time communication.
So please, I really hope many people learn through this video. You really must learn this. Please, I'm begging you for the sake of your career hahaha
5.0
에이미
89% enrolled
I think this is one of the best courses I've seen on Inflearn..!!
The theoretical parts are not lacking at all, and I think you can learn a great deal across the board, from example code to hands-on practice.
When explaining the concept of Source, I found it even more impressive that you implemented it without using external storage or MSQ. If you had covered that part, it probably would have deviated somewhat from the course objectives.
I really enjoyed the course. I'm learning so much from it.
5.0
warna
85% enrolled
I recently got a job at Naver Cloud while watching your lectures!! I'm truly so grateful.
You're my favorite instructor on Inflearn, and although you may not be famous, I think these are excellent lectures because every course shows how you teach so many concepts in a short time and make efforts to use time efficiently.
This time too, I enrolled right as soon as you opened the new course... and as expected, the content is really beneficial. It was content I could learn a lot from.
What you will gain after the course
A design that processes data based on real-time streams rather than batches
Accurately process delayed data using Event Time·Watermark
Implementing Stateful Real-Time Applications with Stateful Processing
A stream processing pipeline with Apache Flink that can be applied directly in practice
Architecture for designing real-time recommendation, billing, and aggregation systems
Development · Programming · Data Engineering
If you’re still relying on batch processing and cron jobs
Data keeps arriving continuously, but processing only runs at scheduled times. When the delays in between accumulate, they become bottlenecks and lead to consistency issues. Apache Flink is an engine that processes that flow as it comes in. This course builds an understanding of its architecture from the ground up.
From architecture to implementationCluster structure · state management · example development
Event Time · WatermarkDirectly tackle the concept that trips people up first in stream processing
Two current developers10 years at Naver headquarters · Platform server development in Pangyo
Flink is a distributed stream processing engine that processes continuously arriving data in real time. While batch processing collects data at scheduled times and processes it, streams process data as it arrives.
Where This Course Begins
You’ve made it as far as Kafka, but there’s nothing after that.
Batch · Cron job
Collect it and process it later
It runs all at once at a set time. Data that comes in between waits. The delays accumulate as they are.
The paradigm is different
Stream
As soon as they arrive
When an event comes in, it is processed right there. This is how you handle data with no end.
Many people get as far as streaming events through Kafka. They get stuck at the stage of aggregating data and maintaining state on top of that flow.
This course addresses that gap.
Where this course began
This is an actual conversation that took place.
Not long after finishing the NATS course, I was contacted again. This course began with that conversation.
After completing the NATS course, I was contacted again during the holiday.
NNaver developerI wanted to cover one more thing—are you busy, Hong?
HHongHow did you end up looking for me over the holiday… What suddenly inspired you?
NNaver developerAfter covering NATS, I wanted to explore more real-time communication. I was thinking we could take a look at Apache Flink—what do you think?
HHongI'm all for taking on anything new, but I haven't used it.
NNaver developerIt's okay. I'll prepare all the materials and everything. Apache Flink is really great, but it seems people don't know much about it. From a career perspective, real-time data collection is really important, so I don't understand why they don't work with it.
NNaver developerAren’t you curious about things like real-time recommendations or real-time fare calculation…
HHongI'm always up for it. Let's prepare it together sometime. I'll make it by sacrificing my vacation days.
What will you learn?
In the order of concepts, architecture, state, and implementation.
Why streamsWe start by examining the limitations of traditional systems. We illustrate the paradigm differences between batch and stream processing with example code.
Cluster architectureHow Flink is divided and runs, and how its execution layers are structured
Task Slots and parallel processingHow to ensure throughput, including data exchange and performance optimization.
Event Time and WatermarksHow to handle late-arriving events. The most difficult concept in stream processing.
DataStream API and WindowsThe API actually used in practice. This is the most substantial section.
State ManagementHow stream processing carries state along
Implement it yourselfIn the final section, we will write and run an example together.
Where is it placed?
Flink sits along the path that data travels.
Flink is not a storage system. It sits between a place where it receives data (Source), processes it, and sends it back out somewhere else (Sink). These are the systems commonly connected before and after it.
Apache Flink
Apache Kafka
Apache Pulsar
RabbitMQ
Amazon Kinesis Data Streams
Elasticsearch
Amazon S3
Apache Cassandra
Amazon DynamoDB
Apache Hadoop
Apache NiFi
This course does not cover how to use individual connectors, but rather the concepts of Source and Sink themselves. The first lecture of Section 4 is where those concepts are introduced; once you understand them, it reads the same way regardless of what is connected to either side.
Curriculum
What will be covered, and in what order?
We establish the concepts and structure up front, then move through APIs and state management before implementing it ourselves.
01
Course Introduction and Materials
Course Introduction
Source Code and Skeleton
Apache Flink Site
02
Introduction to Apache Flink and Its Architecture
Overview and Definition of Apache Flink and the Limitations of Traditional Systems
Apache Flink’s Role as a Distributed Stream Processing Engine
[Example Code] Stream Processing vs. Batch Processing Paradigms
[Example Code] Key Factors for Real-Time Communication in Apache Flink
03
Fundamentals and Core Concepts for Stream Processing
Apache Flink’s Cluster Components and Execution Layer Architecture
Strategies for Ensuring Throughput through Apache Flink’s Task Slots and Parallel Processing
Data Exchange and Performance Optimization Using Task Slots
[Example Code] Time Semantics and Watermark Techniques in Flink
04
Data Stream API and Windows for Practical Application
[Example Code] The Most Frequently Used and Fundamental Stream Operators [ Sink and Source ]
[Example Code] The Most Frequently Used and Fundamental Stream Operators [Transformations, Aggregation, Combination]
[Example Code] Advanced operators for handling all situations [ Process, KeyedProcess, CoProcess, ProcessWindow ]
[Example Code] Advanced operators for every situation [ Side Output, CEP ]
[Example Code] The most commonly used Window Types for stateful processing in practice [ Tumbling, Sliding ]
[Example Code] Window Types for State Storage Most Commonly Used in Practice [ Session, Global ]
[Example Code] Window Function [Process With Aggregate]
05
State Management
[Example Code] Complex Flink State Objects That Anyone Can Understand
Storage and Access Performance Trade-offs with State Backends
Queryable State Supporting External State Queries
06
Example We Write and Run Together
Deep Dive into Building a Lightweight Environment Using Docker Compose
[Hands-on] WordCount Example Guide
[Hands-on] Windowing Example Guide
[Hands-on] State Management Example Guide
[Hands-on] Checkpoint Example Guide
[Hands-on] Event Time vs Processing Time Example Guide
For those who...
Who is this course for?
Backend developers who feel the limitations of batch processing and cron jobs
Developers who have used Kafka but don’t know what to do next
Those who want to understand the architecture of real-time recommendation, billing, and aggregation systems
Stream beginners who find the concepts of Event Time and State difficult
Mid- to senior-level developers who want to stand out in their careers through real-time data processing
The Market Now
The story that AI will replace developers
Entry-level hiring is declining, and companies are trying to hire only proven talent. These are articles published over the past few months.
Krafton, which achieved record-high results, has begun reducing its workforce. The reason was its plan to transition into an 'AI-first' company.
Software companies specializing in SW are stopping the hiring of entry-level developers. There are also forecasts that hiring for junior developers will plummet by 77%.
53% of game designers answered, "AI will replace my job." Cases of recommended resignations have also been reported.
As companies grow more uncertain, those seeking to be hired need to demonstrate even clearer differentiation. Ultimately, studying is something you do yourself, but the depth of what you can explain after spending the same amount of time varies depending on what you look at and from what perspective. This course was created to pass on that perspective.
Course Reviews
Stories from those who listened first
Copied directly from an Inflearn course review.
"I think this is one of the best courses I’ve taken on Inflearn. The theoretical content is more than sufficient, and I feel that I was able to learn a great deal overall, from the example code to the hands-on exercises based on it. When you explained the concept of a Source, I found it even more impressive that you implemented it without using an external repository or message queue."
Amy · Written after completing 89% of the course
"Gongyooja, I recently moved to Naver Cloud after watching your lectures. Thank you so much. You may not be famous, but you teach so many concepts in such a short amount of time, and your efforts to use time efficiently are evident in every lecture, so I think it’s a really excellent course."
warna · Written after completing 85% of the course
Instructor
Created together by two current developers
Created together by Ande, a 10-year backend developer at NAVER’s headquarters, and Hong, a platform server developer in Pangyo.
NAVER · BACKEND ENGINEER · 10 years of experience
Ande
I’m a backend developer with 10 years of experience developing servers at NAVER headquarters. Most of the architectures and decision-making criteria covered in the course are things I’ve actually encountered and organized through my experience in the field. Feel free to leave any questions.
"There comes a point where batch processing reaches its limits. That’s when you need to change the architecture."
Current Naver server (headquarters) developer · Former Shinsegae Group backend developer · Former healthcare startup server developer · Computer Science major
Real-time data processingHigh-volume trafficBackend architectureStream
pipeline
Knowledge Sharer · Pangyo Platform Server Development
Hong
I’m responsible for platform server development in Pangyo. I continue my activities as a knowledge sharer to share how I studied on my own, as well as the problems and solutions I encounter in practice. Rather than creating courses alone, I make them together with various developers working in the field.
"The term ‘real-time’ sounds impressive, but when you actually try to build it, time itself is difficult. That’s where we start."
Platform server developmentData pipelinesNumerous backend courses
Frequently Asked Questions
Frequently Asked Questions About the Apache Flink Course
Q.Can I take this course even if I’m new to stream processing?
⌄
The difficulty level is set for beginners. In Section 2, we start with the limitations of traditional systems, demonstrate the differences between batch and stream processing with example code, and then move on to Flink’s architecture. It is designed on the assumption that you may be hearing the concept of streams for the first time.
Q. Do I need to know Kafka?
⌄
It is not essential. However, if you have experience streaming events through Kafka, you will grasp what comes “next” much more quickly. That is why the recommended audience includes “developers who do not know what comes after Kafka.”
Q.Why are Event Time and Watermark difficult?
⌄
Because the time an event occurs and the time it arrives at the system are different. If the network is delayed, something that happened first may arrive later. The mechanism for handling this discrepancy is the Watermark, and without understanding it, you cannot explain why the aggregation results are strange. It is covered in Section 3 along with example code.
Q.Do we write the code ourselves?
⌄
The final section is devoted entirely to hands-on work. You’ll build a lightweight environment with Docker Compose and write and run examples one by one covering WordCount, Windowing, State Management, Checkpointing, and a comparison of Event Time and Processing Time. The source code and skeletons are included as materials in Section 1, so you can download them and get started.
Q.Where is this technology used?
⌄
Places where data must be reflected immediately as it comes in, such as real-time recommendations, billing, and aggregation. In other words, tasks where any delay from collecting and processing the data at set times is directly visible to users.
Let's talk about it together.
Developer Open Chat Community
When you get stuck on your own, it can take a long time. There’s a separate space where you can comfortably discuss anything from questions that come up while taking a course and issues that arise when applying it to your own service to career and real-world work experiences.
OPEN CHAT · Developer Community
What do we share?
We share real-world problems encountered in practice, the structures others have chosen, and discussions about developer careers. Questions related to the course are also welcome.
"The places where you get stuck are usually where others get stuck too. The fastest way is to ask someone who has already been through it."
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 really enjoyed the lecture. The structure is excellent. I think I've clearly understood what real-time communication is through just this one lecture.
It wasn't simply about covering the Flink platform, but also content where I could get a glimpse of that senior developer's perspective.
Hello, developer born in '02!! Thank you for leaving such a positive review!! As you mentioned, I wanted to provide a perspective that allows you to see things from a broader viewpoint rather than just simple usage methods.
I'll continue to provide more beneficial lectures in the future. Thank you for your review, and have a great day!!
At first I was like, "Do I really need to know this?? Is it right for my career to study this??" But wow, this is really so beneficial. It's not just a simple lecture - you learn about the service called Flink, but it seems like a lecture that lets you see beyond that.
I really enjoyed the lecture.
Hello Boosta!! It's a difficult platform, but I tried my best to explain and share things as simply as possible. Thank you for your encouraging review!!
I'm already opening my second course!! Personally, I have a strong desire to share knowledge, so I wanted to freely share everything I know with you.
The topic I want to cover this time is Apache Flink, which I've selected as a subject that you should definitely know about.
Let me be honest!! If you don't have knowledge about real-time communication, this content might be difficult for you to understand. (Of course, I'll teach you everything, and honestly, I think the course is structured really well. haha)
But you absolutely must learn this. Even though it's difficult, I want to guarantee and tell you that you must learn it.
Real-time communication seems to be becoming extremely important in today's era. I think we need to provide more content to generate more traffic and collect more data.
In fact, this aspect is reflected in numerous large corporations and unicorn startups. Netflix's recommendation system that you know, Uber's real-time fare calculation, and recommendation systems like Musinsa
I haven't seen any platform or service that you use that doesn't include this real-time communication.
So please, I really hope many people learn through this video. You really must learn this. Please, I'm begging you for the sake of your career hahaha
LOL I've never seen someone so passionate before. I also think that real-time communication as a career is truly a huge help from a developer's perspective. I really resonate with what this person said, and I hope many people recognize and take note of the parts we're relating to.
It's always an honor to create great courses together~~! Looking forward to continuing to work with you!!
I think this is one of the best courses I've seen on Inflearn..!!
The theoretical parts are not lacking at all, and I think you can learn a great deal across the board, from example code to hands-on practice.
When explaining the concept of Source, I found it even more impressive that you implemented it without using external storage or MSQ. If you had covered that part, it probably would have deviated somewhat from the course objectives.
I really enjoyed the course. I'm learning so much from it.
Hello Amy!! Thank you so much for leaving this review. To say it's one of the best lectures ㅠㅠ that's such an encouraging comment.
I'll prepare the next lecture with even more useful content that can help you, Amy. Have a great day!
I recently got a job at Naver Cloud while watching your lectures!! I'm truly so grateful.
You're my favorite instructor on Inflearn, and although you may not be famous, I think these are excellent lectures because every course shows how you teach so many concepts in a short time and make efforts to use time efficiently.
This time too, I enrolled right as soon as you opened the new course... and as expected, the content is really beneficial. It was content I could learn a lot from.
Hello warna! Naver Cloud, wow!!! You really made it there haha I'm so jealous!! If I get the chance, maybe I could too...? lol Just kidding. I'll continue to cover more useful and interesting content and become an instructor who connects with all of you.
Have a great day and I hope only good things come your way!!