네이버 면접관이 사용하는 실시간 초저지연 Platform Apache Flink
개발 · 프로그래밍 · 데이터 엔지니어링
아직도 배치와
크론잡에 머물러 있다면
데이터는 끊임없이 들어오는데 처리는 정해진 시각에만 돕니다. 그 사이의 지연이 쌓이면 병목이 되고 정합성 문제가 됩니다. Apache Flink는 그 흐름을 들어오는 대로 처리하는 엔진입니다. 이 강의는 그 구조를 처음부터 잡습니다.
- 아키텍처부터 구현까지클러스터 구조 · 상태 관리 · 예제 작성
- Event Time · Watermark스트림 처리에서 가장 먼저 막히는 개념을 정면으로
- 현직 개발자 2인네이버 본사 10년차 · 판교 플랫폼 서버 개발
Flink는 끊이지 않고 들어오는 데이터를 실시간으로 처리하는 분산 스트림 처리 엔진입니다. 배치가 정해진 시각에 모아서 처리한다면, 스트림은 도착하는 대로 처리합니다
이 강의가 출발하는 자리
Kafka까지는 왔는데 그다음이 없습니다
배치 · 크론잡
모아서 나중에
정해진 시각에 한꺼번에 돕니다. 그 사이에 들어온 데이터는 기다립니다. 지연이 그대로 쌓입니다.
다르다
스트림
도착하는 대로
이벤트 하나가 들어오면 그 자리에서 처리합니다. 끝이 없는 데이터를 다루는 방식입니다.
Kafka로 이벤트를 흘려보내는 데까지는 많이들 옵니다. 그 흐름 위에서 집계하고 상태를 들고 가는 단계에서 막힙니다. 이 강의가 그 자리를 다룹니다.
이 강의가 시작된 자리
실제로 오간 대화입니다
NATS 강의를 마치고 얼마 지나지 않아 다시 연락이 왔습니다. 그 대화에서 이 강의가 시작됐어요.
NATS 강의를 마치고 연휴에 다시 연락이 왔습니다.
무엇을 배우나
개념 · 구조 · 상태 · 구현 순서로
- 왜 스트림인가전통적인 시스템의 한계부터 봅니다. 배치와 스트림의 패러다임 차이를 예시 코드로
- 클러스터 구조Flink가 어떻게 나뉘어 도는지, 실행 계층이 어떻게 구성되는지
- Task Slot과 병렬 처리처리량을 어떻게 확보하는가. 데이터 교환과 성능 최적화까지
- Event Time과 Watermark늦게 도착한 이벤트를 어떻게 다룰 것인가. 스트림에서 가장 어려운 개념
- DataStream API와 Window실무에서 실제로 쓰는 API. 가장 비중이 큰 섹션입니다
- 상태 관리스트림 처리가 상태를 들고 가는 방법
- 직접 구현마지막 섹션에서 예제를 함께 작성하고 돌려 봅니다
어디에 놓이나
Flink는 데이터가 지나가는 길 위에 있습니다
Flink는 저장소가 아닙니다. 데이터를 어딘가에서 받아(Source) 처리하고 다시 어딘가로 내보내는(Sink) 자리에 놓입니다. 흔히 앞뒤에 붙는 시스템들입니다.
- Apache Flink
- Apache Kafka
- Apache Pulsar
- RabbitMQ
- Amazon Kinesis Data Streams
- Elasticsearch
- Amazon S3
- Apache Cassandra
- Amazon DynamoDB
- Apache Hadoop
- Apache NiFi
이 강의에서 다루는 것은 개별 커넥터 사용법이 아니라 Source와 Sink라는 개념 자체입니다. 섹션 4의 첫 강의가 그 자리이고, 개념을 잡고 나면 어느 쪽에 무엇이 붙든 같은 방식으로 읽힙니다.
커리큘럼
무엇을 어떤 순서로 다루나
앞쪽에서 개념과 구조를 잡고, 뒤쪽에서 API와 상태 관리를 거쳐 직접 구현까지 갑니다.
01
강의 소개 및 자료
- 강의 소개
- Source Code 및 Skeleton
- Apache Flink Site
02
Apache Flink 소개 및 아키텍처
- Apache Flink의 개요와 정의 및 전통적인 시스템의 한계
- Apache Flink의 분산 스트림 처리 엔진으로서의 역할
- [예시 코드] 스트림 처리 vs 배치 처리 패러다임
- [예시 코드] Apache Flink의 실시간 통신을 위한 핵심 요인들
03
스트림 처리를 위한 기본부터 핵심 개념
- Apache Flink의 Cluster 구성 요소 및 실행 계층 구조
- Apache Flink의 Task Slot과 병렬 처리를 통한 처리량 확보 전략
- Task Slot을 통한 데이터 교환과 성능 최적화
- [예시 코드] Flink에서의 Time Semantics과 Watermark 기법
04
실무 적용을 위한 데이터 스트림 API와 Window
- [예시 코드] 가장 자주 사용하고 기본이 되는 Stream 연산자 [ Sink와 Source ]
- [예시 코드] 가장 자주 사용하고 기본이 되는 Stream 연산자 [ Transformations, Aggregation, Combination ]
- [예시 코드] 모든 상황을 대비하기 위한 고급 연산자 [ Process, KeyedProcess, CoProcess, ProcessWindow ]
- [예시 코드] 모든 상황을 대비하기 위한 고급 연산자 [ Side Output, CEP ]
- [예시 코드] 실무에서 가장 많이 사용하는 상태 저장을 위한 Window Type [ Tumbling, Sliding ]
- [예시 코드] 실무에서 가장 많이 사용하는 상태 저장을 위한 Window Type [ Session, Global ]
- [예시 코드] Window Function [ Process With Aggregate ]
05
상태 관리 (State Management)
- [예시 코드] 누구나 무조건 이해하는 복잡한 Flink의 상태 객체들
- State Backend를 통한 저장 및 접근 성능 Tradeoff
- 외부 상태 조회를 지원하는 Queryable State
06
함께 작성하며 동작시켜보는 Example
- Docker Compose를 활용한 경량 환경 구축 Deep Dive
- [실습] WordCount Example Guide
- [실습] Windowing Example Guide
- [실습] State Management Example Guide
- [실습] Checkpoint Example Guide
- [실습] Event Time vs Processing Time Example Guide
이런 분께
이 강의는 누구를 위한 강의인가요
- 배치와 크론잡의 한계를 느끼는 백엔드 개발자
- Kafka까지는 썼는데 그다음 단계를 모르는 개발자
- 실시간 추천·과금·집계 시스템의 구조를 이해하고 싶은 분
- Event Time과 State 개념이 어려운 스트림 입문자
- 실시간 데이터 처리로 커리어를 차별화하고 싶은 중·시니어 개발자
지금 시장
AI가 개발자를 대체한다는 이야기
신입 채용은 줄고, 기업은 검증된 사람만 뽑으려 합니다. 최근 몇 달 사이 나온 기사들입니다.
- 사상 최대 실적을 낸 크래프톤이 인력 감원에 나섰습니다. 'AI 퍼스트' 기업으로 전환하겠다는 이유였습니다.
- SW 전문기업들이 신입 개발자 채용을 중단하고 있습니다. 초급 개발자 채용이 77% 급감할 것이라는 전망도 나왔습니다.
- 게임 디자이너의 53%가 "AI가 내 일을 대체할 것"이라고 답했습니다. 권고사직 사례도 보고됐습니다.
기업이 불안한 만큼, 뽑히는 쪽은 더 분명한 차이를 보여줘야 합니다. 공부는 결국 스스로 하는 것이지만, 무엇을 어떤 관점으로 보느냐에 따라 같은 시간을 쓰고도 설명할 수 있는 깊이가 달라집니다. 이 강의는 그 관점을 넘기려고 만들었습니다.
수강평
먼저 들은 분들의 이야기
인프런 수강평에서 그대로 옮겼습니다.
"인프런에서 봤던 강의 중에 손에 꼽는 강의라고 생각합니다. 이론적인 부분도 전혀 부족하지 않고 예시 코드와 그에 따른 실습까지 전반적으로 많은 부분을 배울 수 있다고 생각합니다. Source라는 개념을 알려 주실 때 굳이 외부 저장소나 메시지 큐를 쓰지 않고 구현한 게 더 인상 깊었습니다."
에이미 · 89% 수강 후 작성
"공유자님 강의 보면서 저 최근에 네이버 클라우드로 이직했습니다. 진짜 너무 감사드립니다. 유명하지는 않지만 짧은 시간에 진짜 많은 개념을 알려 주고 시간을 효율적으로 쓰려고 노력하시는 모습이 강의마다 다 보여서 너무 좋은 강의인 것 같습니다."
warna · 85% 수강 후 작성
강사
현직 개발자 둘이 함께 만들었습니다
네이버 본사 10년차 백엔드 개발자 Ande와, 판교 플랫폼 서버 개발자 Hong이 함께 만들었습니다.
Ande
네이버 본사에서 서버를 개발하는 10년차 백엔드 개발자입니다. 강의에서 다루는 구조와 판단 기준은 대부분 현장에서 실제로 겪으며 정리한 것들이에요. 질문은 편하게 남겨주세요.
"배치로 버티다 한계가 오는 지점이 있습니다. 그때 구조를 바꿔야 합니다."
現 네이버 서버(본사) 개발자 · 前 신세계 그룹 백엔드 개발자 · 前 헬스케어 스타트업 서버 개발자 · 컴퓨터공학 전공
Hong
판교에서 플랫폼 서버 개발을 담당하고 있습니다. 직접 공부한 방법과 실무에서 마주치는 문제·해결책을 나누려고 지식공유자 활동을 이어가고 있어요. 강의는 혼자가 아니라 현업의 여러 개발자와 함께 만듭니다.
"실시간이라는 말은 멋있는데, 막상 짜려면 시간부터 어렵습니다. 거기서 시작합니다."
자주 묻는 질문
Apache Flink 강의 자주 묻는 질문
Q.스트림 처리를 처음 접해도 되나요?
⌄
Q.Kafka를 알아야 하나요?
⌄
Q.Event Time과 Watermark가 왜 어렵나요?
⌄
Q.직접 코드를 짜 보나요?
⌄
Q.어디에 쓰는 기술인가요?
⌄
함께 이야기 나눠요
개발자 오픈채팅 커뮤니티
혼자 막히면 오래 걸립니다. 강의를 듣다 걸리는 부분, 자기 서비스에 적용하면서 생기는 질문, 커리어와 현업 이야기까지 편하게 나누는 공간이 따로 있습니다.
무엇을 나누나요
실무에서 실제로 겪는 문제, 다른 분들이 어떤 구조를 골랐는지, 그리고 개발자 커리어에 대한 이야기를 나눕니다. 강의 관련 질문도 환영합니다.
"막히는 자리는 대체로 남들도 막힙니다. 먼저 지나간 사람에게 물어보는 게 제일 빠릅니다."