배운 것을 현장에서 따져 묻고 고치는 마지막 단계. 지연과 대역폭의 차이, RTT·처리량·버퍼블로트가 체감 속도를 가르는 법, tcpdump·Wireshark로 패킷을 읽는 법, CDN과 캐싱으로 지연을 줄이는 법, 그리고 네트워크를 관측하는 지표·도구까지.
평문으로 흐르던 통신 위에 신뢰를 얹는 단계입니다. TLS 핸드셰이크·인증서·PKI의 원리, 대칭·비대칭 암호의 결합, 패킷 필터·상태 기반·L7 방화벽, VPN 터널링, 그리고 무엇을 누구로부터 지키는지를 묻는 위협 모델의 사고법.
우리가 매일 마주하는 서비스가 실제로 굴러가는 응용 계층. HTTP/HTTPS의 메서드·상태 코드·헤더, HTTP/1.1·2·3의 진화, 이름 해석의 계층 구조 DNS, 접속 시 IP를 자동으로 배정하는 DHCP, 그리고 URL 입력부터 페이지 렌더까지의 전체 여정.
호스트가 아니라 프로세스와 프로세스를 잇는 전송 계층을 다룹니다. 포트와 소켓으로 다중화, TCP의 3-way 핸드셰이크와 흐름·혼잡 제어, UDP의 경량성, 그리고 QUIC이 UDP 위에 다시 신뢰성을 얹은 이유까지.
패킷이 네트워크의 경계를 넘어 목적지 IP까지 도달하는 법을 다룹니다. IPv4/IPv6 주소, CIDR과 서브네팅, 라우팅 테이블·기본 게이트웨이·최장 프리픽스 매칭, NAT, 그리고 ping·traceroute의 정체인 ICMP까지.
같은 네트워크(로컬 세그먼트) 안에서 프레임이 어떻게 전달되는지를 다룹니다. MAC 주소와 Ethernet 프레임 구조, 스위치의 학습·포워딩·VLAN, IP↔MAC을 잇는 ARP의 원리와 보안 이슈(ARP 스푸핑)까지 다룹니다.
네트워크의 모든 문제 진단은 '지금 어느 계층인가'에서 출발합니다. OSI 7계층과 TCP/IP 4계층의 대응, 데이터가 아래로 내려가며 헤더가 겹겹이 감싸지는 캡슐화, 그리고 송신·수신의 대칭을 그림으로 잡습니다.
OSI/TCP-IP 계층 모델에서 출발해 링크·네트워크·전송 계층, 응용 프로토콜(HTTP·DNS), 보안(TLS), 그리고 성능·운영·트러블슈팅까지 7단계로 컴퓨터 네트워크를 정복하는 학습 로드맵입니다. 도장깨기 방식으로 진행 상황을 추적합니다.
Stream-Processing-Essential 시리즈의 6단계. 1~5단계에서 다룬 무한 스트림·워터마크·상태·체크포인트·exactly-once·윈도·조인·CEP를 선언적 SQL 표면으로 끌어올립니다. 스트림을 계속 변하는 테이블로 보는 dynamic table, stream과 table의 이원성, changelog 모드(append·retract...
Stream-Processing-Essential 시리즈의 5단계. 스트림 처리의 표현력 — 무한한 이벤트를 시간 구간으로 자르는 윈도잉(WindowAssigner·Trigger·Evictor·ProcessFunction), 두 스트림을 시간과 키로 잇는 조인(window join·interval join·temporal join), 그리고 'A 다음...
Stream-Processing-Essential 시리즈의 4단계. '장애가 나도 결과가 정확한가'에 답하는 단계입니다. 정확성 없는 스트림 처리는 재처리가 불가능해 비즈니스 손실로 직결됩니다. at-most-once·at-least-once·exactly-once 세 가지 전달 의미를 실패 시나리오로 해부하고, 'exactly-once 처리(oper...
Stream-Processing-Essential 시리즈의 3단계. 스트림 처리가 '지금까지 본 것'을 기억해야 하는 이유 — 집계·조인·중복 제거·CEP 모두 상태가 있다 — 를 짚고, 상태의 두 분류(keyed state의 Value/List/Map/Reducing/AggregatingState와 operator state의 Raw/List/Uni...
Stream-Processing-Essential 시리즈의 2단계. 1단계가 잡은 무한 스트림의 실행 모델 위에 '시간의 기준'을 얹습니다. 처리 시간이 아닌 이벤트 시간을 써야 하는 이유 — 재처리·백필·장애 복구에서도 결과가 일관되는가 — 를 짚고, 워터마크가 '이 시각까지의 데이터는 사실상 다 왔다'는 단조 증가 선언이라는 점을 깊게 다룹니다. ...
Stream-Processing-Essential 시리즈의 1단계. 배치가 다루는 '끝이 있는 데이터'와 스트림이 다루는 '끝이 없는 데이터'의 경계를 잡고, Flink가 무한 스트림을 어떤 실행 모델로 표현하는지 — 데이터플로우 그래프(StreamGraph → JobGraph → ExecutionGraph), 연산자 체이닝과 슬롯 공유, 파티션·병렬...
배운 것을 하나로 꿰는 피날레. 비정형 코퍼스 → LLM 추출 → 그래프 DB → GraphRAG·추론 → 에이전트 write-back으로 이어지는 end-to-end 파이프라인을 개념과 핵심 코드 스니펫으로 조립하고, 헬스케어·금융·보안·엔터프라이즈·추천·법률·개인 메모리까지 도메인별 활용 사례를 아키텍처 변주로 집대성합니다. 확장성·최신성·환각·거...
시리즈의 심장 — 지금까지 만든 그래프를 에이전트가 스스로 쓰는 단계. 그래프를 도구(tool)로 삼아 자연어를 Cypher로 번역하고 질의를 계획하며, 그래프를 기억(memory)으로 삼아 새로 알게 된 사실을 write-back해 시간과 함께 자라는 시간적 지식 그래프(temporal KG)를 만듭니다. 검색–추론–행동 루프, 사실의 유효 기간·무...
그래프를 읽는 데서 예측·추론으로 넓히는 단계. 노드와 관계를 벡터로 옮기는 그래프 임베딩(node2vec·TransE)으로 유사 개체를 찾고, 아직 그래프에 없는 관계를 예측하는 링크 예측으로 추천·신약 후보·리스크 연결을 발견하며, 규칙·경로 기반 다중 홉 추론과 그래프 신경망(GNN)이 어떻게 쓰이는지를 개념 수준에서 잡습니다. 이 예측·추론 능...
벡터 RAG는 의미가 비슷한 조각은 잘 찾지만, 여러 문서에 흩어진 사실을 연결해야 하는 다중 홉 질문이나 '코퍼스 전체의 핵심은?' 같은 전역 질문에 약합니다. GraphRAG는 문서에서 뽑은 지식 그래프에 community detection으로 주제 클러스터를 만들고 그 요약을 미리 구워 두어, 지역(local)과 전역(global) 질문 모두에 ...
지식 그래프 부흥의 첫 번째 엔진 — LLM으로 그래프를 짓는 법. 스키마를 프롬프트로 유도해 구조화 출력(JSON·함수 호출)으로 트리플을 뽑고, LLMGraphTransformer·프로퍼티 그래프 인덱스 같은 도구로 파이프라인을 세운 뒤, 환각·중복·불일치를 검증하고 휴먼인더루프로 교정합니다. LLM은 추출의 문턱을 낮추지만, 3단계의 스키마·엔티...
그래프를 실제로 짓기 시작하는 단계. 텍스트에서 개체를 찾는 개체명 인식(NER)과 관계를 뽑는 관계 추출(RE), 그래프가 담을 개념을 정하는 스키마·온톨로지 설계, 그리고 여러 소스에 흩어진 같은 실체를 하나로 묶는 엔티티 해소까지 — LLM 이전의 전통 파이프라인을 먼저 이해해야 4단계에서 LLM이 무엇을 대체하고 무엇을 못 하는지가 보입니다.
지식 그래프를 실제로 저장하고 물어보는 손을 푸는 단계. 실무 주류인 속성 그래프(Neo4j)와 Cypher로 노드·엣지·가변 길이 경로를 질의하고, 시맨틱 웹 계열의 RDF·SPARQL과 대비하며, property graph vs RDF를 언제 고를지, GQL 표준과 그래프 DB 지형도까지 실용 관점에서 정리합니다.
지식 그래프는 세상을 노드와 관계로 표현한 사실의 망입니다. 관계형 DB가 관계를 조인으로 그때그때 계산한다면 그래프는 관계를 데이터 그 자체로 저장하고, 벡터 DB가 '의미가 비슷한 조각'을 찾는다면 그래프는 '명시적으로 연결된 사실'을 따라갑니다. 다중 홉·전역·설명가능성이 필요한 순간 왜 그래프가 빛나는지, 세 렌즈를 나란히 놓고 Agentic-...
지식 그래프가 무엇이며 왜 그래프인가(vs 관계형·vs 벡터 DB)에서 출발해, 그래프 DB·질의, 엔티티/관계 추출로 그래프를 짓고, LLM 기반 구축·GraphRAG·그래프 추론으로 지능을 얹은 뒤, 그래프를 도구·기억으로 쓰는 Agentic Knowledge Graph를 직접 구축하는 8단계 학습 로드맵. 헬스케어·금융·보안·엔터프라이즈 등 도메...
온톨로지와 DDD는 '도메인의 의미를 명시하고 조직이 공유하게 한다'는 같은 뿌리에서 자라지만, 사는 층이 다릅니다. 유비쿼터스 언어↔의미 계층, 엔티티↔객체 타입, 애그리거트·바운디드 컨텍스트의 대응과 어긋남을 개념 대 개념으로 매핑하고, 둘을 어떻게 함께 쓰는지 정리합니다.
Ontology-Essential 시리즈의 마지막 7단계 — 만든 온톨로지를 조직 안에서 오래 살리는 법을 다룹니다. 객체·링크·스키마의 버전 관리와 하위 호환·마이그레이션 전략, 의미 계층 위의 접근 제어·보안 마킹·계보·감사, 그리고 도메인 워크숍에서 배포·피드백 루프까지 이어지는 Forward Deployed Engineer의 실제 워크플로를 정...
잘 만든 온톨로지의 진짜 가치는 읽는 데 있지 않습니다. 객체를 통제된 방식으로 바꾸는 액션(action), 그 변경이 모델과 원천 시스템으로 되돌아 쓰이는 write-back 고리, 검증·권한·감사를 품은 함수 기반 액션까지 — read-only 의미 계층을 '행동의 시스템(system of action)'으로 바꾸는 운영 계층을 재고 부족 → 발주...
우아한 객체·링크 모델도 실제 데이터와 이어지지 않으면 그림일 뿐입니다. 파이프라인 산출물인 백킹 데이터셋을 객체 타입의 물리적 뒷받침으로 삼는 속성 매핑, 여러 소스에 흩어진 같은 실체를 하나의 객체로 묶는 엔티티 해소(결정적·확률적 매칭, 매칭 신뢰도, 골든 레코드), 그리고 중복·불일치·누락이라는 지저분한 현실 위에서 신뢰할 만한 객체 그래프를 ...
온톨로지의 힘은 객체가 아니라 관계에서 나옵니다. 관계형 DB에서 외래키·조인 테이블로 흩어져 있던 관계를 링크 타입이라는 일급 개념으로 끌어올리는 법 — 링크의 이름·방향·의미 설계, 1:1·1:N·N:M 카디널리티와 외래키→링크 번역 규칙, 그리고 조인 사고를 탐색 사고로 바꾸는 그래프 탐색까지, SQL 조인과 나란히 대비하며 관통합니다.
온톨로지를 손으로 짓기 시작하는 첫 단계 — 도메인의 명사를 객체 타입으로 승격하는 판단 기준(독립 생명주기·참조 필요성·링크 대상 여부), 속성의 데이터 타입·파생 속성·표시용 이름, 그리고 기본키와 객체 그래프의 밑그림까지. 주문·고객·제품·설비 도메인으로 ER 모델을 온톨로지로 번역하는 과정을 시연합니다.
온톨로지라는 개념의 학문적 뿌리를 다집니다. 시맨틱 웹의 계보 위에서 RDF의 트리플(주어-술어-목적어)과 RDFS/OWL의 클래스·프로퍼티·표현력, 이를 질의하는 SPARQL을 익히고, 실무 그래프 DB가 쓰는 속성 그래프 모델(노드·엣지·속성, Cypher)과 RDF의 차이를 비교합니다. 마지막으로 택소노미 vs 온톨로지, 기술논리(Descript...
스키마는 데이터를 '어떻게 저장하는가'에 답하고, 온톨로지는 그 데이터가 '무엇을 의미하는가'에 답합니다. 데이터 모델·스키마·온톨로지 세 층위를 주문 도메인 예제로 가르고, 조인과 컬럼만으로는 잃어버리는 도메인 의미를 공유 어휘로 되살리는 의미 계층의 필요성, 그리고 read-only 분석 모델을 넘어 '행동의 시스템'이 되는 온톨로지 — 디지털 트...
Palantir 같은 회사의 Forward Deployed Engineer(FDE)가 갖춰야 할 핵심 역량 — 온톨로지 기반(시맨틱) 데이터 모델링 — 을 7단계로 정복하는 마스터 로드맵. 의미 계층의 개념과 형식 기반부터 객체·링크·데이터 매핑, 액션·운영 계층, 거버넌스와 FDE 워크플로까지 도장깨기 방식으로 추적합니다.
여러 tmux 세션에서 돌아가는 Claude Code · Codex 에이전트를 한눈에 관제하는 로컬 CLI 대시보드, Orc Camp를 소개한다. tmux 세션을 캠프로, 에이전트 세션을 오크로 그리는 도트 픽셀 대시보드의 컨셉과 아키텍처, 그리고 기획 문서에서 v0.2.0 릴리스까지의 개발 여정을 정리했다.
Spark-Essential 시리즈의 완결편(심화). 앞 단계에서 갈고닦은 Spark를 2026 레이크하우스 스택에 얹습니다. Iceberg·Delta 오픈 테이블 포맷이 오브젝트 스토리지의 파일 더미 위에 메타데이터·스냅샷으로 ACID·시간여행을 세우는 원리를 Spark 관점에서 짚고, 카탈로그 설정·MERGE/업서트·스키마·파티션 진화로 읽고 쓰며...
현실의 Spark 코드 대부분을 차지하는 PySpark를 파고듭니다. Python↔JVM 경계(Py4J)와 왜 대부분 내장 함수로 충분한지, UDF의 종류(느린 Python UDF vs Arrow 기반 벡터화 Pandas UDF)와 직렬화 비용, 내장 함수 우선 원칙, 그리고 기존 pandas 코드를 최소 수정으로 분산 실행하는 pandas API o...
무한 스트림을 계속 자라는 테이블로 보는 Spark Structured Streaming을 파고듭니다. 배치와 통합된 DataFrame API와 마이크로배치 모델, 이벤트 시간 집계에서 언제 윈도를 닫고 지각 데이터를 버릴지 정하는 워터마크와 윈도잉, 그리고 상태 관리·체크포인트·출력 모드로 exactly-once를 보장하는 방식까지 다룹니다.
Spark에서 가장 비싼 연산인 셔플을 줄이고 다스리는 성능 튜닝을 파고듭니다. 파티션 수·repartition/coalesce·파티션 프루닝, 한 키 쏠림이 부르는 데이터 스큐(salting·AQE skew join)와 메모리를 넘겨 디스크로 흘리는 스필(spill) 진단, 그리고 broadcast·sort-merge·shuffle-hash 조인 전...
DataFrame이 RDD보다 빠른 이유를 파고듭니다. Catalyst가 쿼리를 논리 계획 → 분석 → 최적화된 논리 계획 → 물리 계획으로 변환하며 조건 푸시다운·컬럼 프루닝을 적용하는 과정, Tungsten의 off-heap 바이너리 메모리 관리와 whole-stage code generation, 그리고 런타임 통계로 계획을 다시 짜는 AQE까지...
Spark가 데이터를 다루는 세 얼굴 — 계보 기반 내결함성의 저수준 RDD, 스키마로 Catalyst 옵티마이저가 개입하는 DataFrame, 타입 안전을 더한 Dataset — 의 차이와 선택 기준을 정리합니다. 나아가 변환은 계획만 쌓고 액션에서 실행하는 lazy evaluation과, 노드 안에서 끝나는 narrow와 셔플을 부르는 wide 트...
Spark-Essential 시리즈의 1단계. 실행 계획을 세우는 Driver와 task를 수행하는 Executor의 역할·통신, 자원을 배분하는 클러스터 매니저(YARN·Kubernetes·Standalone)와 client/cluster 배포 모델, 그리고 액션→Job→Stage→Task 분해에서 스테이지 경계가 곧 셔플 지점이 되는 실행 흐름을 ...
Lakehouse-Essential의 마지막 7단계. 앞선 여섯 단계에서 익힌 축(메타데이터 구조·트랜잭션·진화·유지보수·카탈로그)으로 Iceberg·Delta Lake·Hudi·Paimon을 나란히 비교합니다. _delta_log 로그 리플레이, Hudi timeline과 COW/MOR, Paimon의 LSM·changelog까지 각 포맷의 내부를 ...
Iceberg 테이블의 '현재'를 쥐고 있는 카탈로그를 파고듭니다. 테이블 이름을 metadata.json 포인터로 매핑하고 커밋의 원자적 CAS를 실제로 수행하는 카탈로그의 역할, Hive·Hadoop·JDBC·Glue·Nessie로 파편화됐던 구현을 HTTP API 스펙 하나로 표준화한 REST Catalog와 그 커밋 프로토콜, 그리고 RBAC·...
돌아가는 Iceberg 테이블과 건강한 Iceberg 테이블을 가르는 운영 지식을 다룹니다. 스트리밍 쓰기가 양산하는 작은 파일을 rewrite_data_files(bin-pack·sort·z-order)로 합치고, 커밋마다 쌓이는 스냅샷을 expire_snapshots로 만료시켜 파일 삭제로 잇고, 고아 파일 정리와 매니페스트 리라이트까지 포함한 정...
Iceberg가 Hive 테이블과 결정적으로 갈라지는 지점 — 재작성 없는 진화를 파고듭니다. 컬럼을 이름이 아닌 고유 ID로 추적해 add/drop/rename/reorder/타입 승격을 안전하게 만드는 스키마 진화, 파티션을 물리 경로가 아닌 컬럼에서 유도되는 메타데이터로 만드는 숨은 파티셔닝(transform), 그리고 월→일 같은 파티션 스펙 ...
Iceberg의 커밋은 새 metadata.json을 쓰고 카탈로그의 포인터를 compare-and-swap으로 교체하는 한 동작입니다. 파일은 불변이고 포인터만 상태이기에 이 교체 하나가 원자성의 전부이며, 그 위에서 스냅샷 격리·시간여행(VERSION AS OF)·롤백·optimistic concurrency의 충돌 감지와 재시도가 성립하는 원리를...
Iceberg의 모든 능력이 나오는 뿌리를 해부합니다. 카탈로그가 가리키는 메타데이터 파일(vN.metadata.json)에서 매니페스트 리스트(snap-*.avro), 매니페스트(*.avro), 데이터 파일로 이어지는 계층 구조와, 커밋이 새 스냅샷을 만들며 매니페스트를 재사용하는 방식, 그리고 파티션 요약과 컬럼 min/max 통계가 파일 list...
오브젝트 스토리지에 Parquet를 쌓는 것만으로는 테이블이 되지 않습니다. 디렉터리와 파일 목록에 의존하는 Hive 테이블 모델이 원자성·일관성·성능에서 무너지는 지점을 구체적인 실패 시나리오로 짚고, 파일 집합 위에 스냅샷·스키마·통계라는 메타데이터 계층을 얹어 '테이블'을 만드는 오픈 테이블 포맷의 발상, 그리고 그것이 레이크하우스를 성립시키는 ...
Kafka-Essential 시리즈의 완결편. 별도 클러스터 없이 라이브러리만으로 토픽을 변환·집계·조인하는 Kafka Streams를 파고듭니다. KStream/KTable 이원성과 토폴로지, RocksDB state store와 changelog 토픽의 내결함성, 이벤트 시간 윈도잉과 exactly_once_v2, 그리고 언제 Flink 같은 전용...
여러 팀이 오래 공유하는 로그에서 데이터의 형태는 곧 시스템 간 계약입니다. 스키마를 중앙에 등록하고 메시지에는 매직 바이트 + 스키마 ID만 실어 보내는 Schema Registry의 wire format과 serializer 흐름, Avro/Protobuf/JSON Schema 비교와 reader/writer 스키마 해석, 그리고 BACKWARD/...
프로듀서·컨슈머를 매번 직접 짜는 대신, 선언적 설정만으로 외부 시스템과 Kafka를 잇는 Kafka Connect를 파고듭니다. worker·connector·task의 분산 실행 모델, Debezium이 PostgreSQL WAL·MySQL binlog를 읽어 변경 이벤트로 바꾸는 로그 기반 CDC의 원리, 그리고 replication slot 방...
Kafka에서 가장 자주 오해되는 주제, 전달 보장을 파고듭니다. '유실 없음'과 '중복 없음'을 분리해 at-most-once·at-least-once·exactly-once 세 전달 의미를 실패 시나리오로 해부하고, 멱등 프로듀서(PID·시퀀스 번호)가 재시도 중복을 걸러내는 원리와 그 한계, 그리고 트랜잭션(transactional.id·send...
Kafka의 읽기·쓰기 경로를 파고듭니다. 프로듀서의 send 경로(serializer → partitioner → 배치 → Sender)와 acks로 조율하는 처리량 vs 내구성, pull 기반 컨슈머의 poll 루프와 오프셋 커밋(자동 vs 수동), 그리고 컨슈머 그룹의 파티션 분배와 리밸런싱 — eager vs cooperative, static...
Kafka의 1층인 분산 커밋 로그를 파고듭니다. 큐가 아니라 append-only 로그라는 관점에서 세그먼트 파일·순차 I/O·zero-copy·retention과 compaction·재생(replay)의 힘을 잡고, 토픽·파티션·오프셋이 병렬성과 순서를 어떻게 가르는지, 파티셔닝 키와 핫 파티션·파티션 수 결정의 트레이드오프, 그리고 리더/팔로워 ...
dbt-Essential 시리즈의 마지막 6단계 — 대시보드마다 다르게 계산되는 '매출'의 지표 파편화 문제를, MetricFlow의 semantic model·metric 선언과 조회 시점 SQL 생성으로 해결하고, BI·노트북·API가 하나의 정의를 소비하는 지표 표준화까지 완성합니다.
dbt를 팀의 것으로 만드는 5단계 — packages.yml과 dbt hub 패키지·사내 공통 모듈 전략, manifest 기반 state:modified와 --defer로 바뀐 모델만 검증하는 Slim CI, 그리고 GitHub Actions 배포 파이프라인과 오케스트레이터 연동까지 팀 규모 배포의 전부를 다룹니다.
매번 전체를 다시 만드는 대신 바뀐 행만 병합하는 incremental 모델의 동작 원리(is_incremental() 분기, unique_key, 전략별 차이)와, 원천이 덮어쓰는 값의 변화 이력을 SCD Type 2로 보존하는 snapshot을 재실행 안전성의 관점으로 꿰어냅니다.
dbt SQL이 사실은 Jinja 템플릿이라는 것 — 컴파일 시점에 변수·if·for가 순수 SQL로 펼쳐지는 실행 모델부터, 반복 로직을 함수처럼 묶는 매크로, run_query로 SQL을 생성하는 SQL, adapter.dispatch, 그리고 dbt_utils·codegen 같은 매크로 패키지와 과도한 매크로화의 경계까지 다룹니다.
내장 제네릭 테스트 4종이 컴파일되는 SQL부터 커스텀 테스트·severity 설정, docs 블록과 데이터 카탈로그, ref가 만든 lineage 그래프와 exposure까지 — '이 숫자를 믿어도 되는가'에 코드로 답하는 dbt의 테스트·문서화 체계를 해부합니다.
dbt의 심장인 모델·ref·source를 파고듭니다. SELECT 하나가 뷰·테이블로 구체화되는 materialization 전략, ref()가 하드코딩된 테이블명 대신 의존성 그래프를 세우는 원리, source() 선언과 freshness 검사, 그리고 staging → intermediate → marts 계층형 모델링까지 jaffle-shop ...
Airflow를 프로덕션에 올리는 마지막 단계 — 스케줄러·웹서버·triggerer·메타데이터 DB의 배포 구성과 KubernetesExecutor의 task-per-pod 실행, 원격 로깅·메트릭·SLA 경보, 그리고 Secrets 관리·스케줄러 HA·장애 대응까지 운영 견고성의 전부를 다룹니다.
Airflow의 시간 모델인 논리적 실행 구간(data interval)을 뿌리부터 이해하고, catchup·backfill로 과거 구간을 다시 채우는 법과 그 재실행이 데이터를 오염시키지 않도록 태스크를 멱등하게 설계하는 패턴(파티션 덮어쓰기·업서트·결정적 경로)을 하나의 설계 원칙으로 꿰어냅니다.
파일 도착·외부 잡 종료 같은 외부 상태를 기다리는 센서의 poke/reschedule 모드부터, 대기를 triggerer의 비동기 이벤트 루프로 넘겨 워커 슬롯을 해방하는 deferrable 오퍼레이터까지 — '기다림'을 자원 낭비 없이 설계하는 법을 다룹니다.
격리된 프로세스에서 도는 Airflow 태스크 사이로 데이터를 넘기는 XCom의 push/pull 메커니즘과 크기 한계, @task 데코레이터로 XCom을 암묵화하는 TaskFlow API, 그리고 큰 데이터는 외부 스토리지에 쓰고 참조만 넘기는 패턴과 custom XCom backend까지 다룹니다.
DAG processor의 파싱·직렬화부터 스케줄러의 스케줄링 루프, Local·Celery·Kubernetes Executor의 아키텍처와 선택 기준, 그리고 task 상태 전이·재시도·zombie까지 — 'DAG가 안 돈다'를 구조적으로 진단할 수 있는 Airflow 실행 내부를 해부합니다.
Airflow의 출발점인 DAG·오퍼레이터·태스크를 파고듭니다. 파이프라인을 방향성 비순환 그래프로 모델링하는 이유, 오퍼레이터(템플릿)와 태스크(인스턴스)의 관계와 의존성 정의, 그리고 파이프라인을 파이썬 코드로 선언하는 configuration as code 철학과 동적 DAG 생성까지 다룹니다.
Data-Engineering-Essential 오버뷰의 '오케스트레이션' 단계에서 예고된 Apache Airflow 심화 스핀오프. DAG·오퍼레이터·태스크부터 스케줄러/Executor 내부, XCom·TaskFlow, 센서·deferrable, 백필·catchup·멱등, K8s 배포·운영까지 6단계로 정복하는 학습 로드맵입니다. 도장깨기 방식으로 ...
Data-Engineering-Essential 오버뷰의 '처리' 단계에서 예고된 dbt(변환·애널리틱스 엔지니어링) 심화 스핀오프. 모델·ref·소스부터 테스트·문서화, 매크로·Jinja, incremental·snapshot, 패키지·CI, 세만틱 레이어까지 6단계로 정복하는 학습 로드맵입니다. 도장깨기 방식으로 진행 상황을 추적합니다.
Data-Engineering-Essential 오버뷰의 '수집' 단계에서 예고된 Apache Kafka 심화 스핀오프. 분산 로그·토픽·파티션부터 프로듀서/컨슈머, 전달 보장(exactly-once), Kafka Connect(CDC), Schema Registry, Kafka Streams까지 6단계로 정복하는 학습 로드맵입니다. 도장깨기 방식으로...
Data-Engineering-Essential 오버뷰의 '저장' 단계에서 개념만 소개한 오픈 테이블 포맷을 Apache Iceberg 중심으로 파고드는 심화 스핀오프. 문제의식부터 메타데이터·매니페스트 구조, ACID·스냅샷·시간여행, 파티션/스키마 진화, compaction·유지보수, REST Catalog·거버넌스, 그리고 Iceberg vs D...
Data-Engineering-Essential 오버뷰의 '처리' 단계에서 예고된 Apache Spark 심화 스핀오프. 아키텍처(Driver/Executor)부터 RDD/DataFrame/Dataset, Catalyst·Tungsten, 셔플·튜닝, Structured Streaming, PySpark 실무, Iceberg/Delta 연동까지 7단계...
Data-Engineering-Essential 오버뷰의 '처리' 단계에서 개념만 소개한 이벤트 시간·워터마크·윈도잉을 Apache Flink 중심으로 파고드는 심화 스핀오프. 스트림 처리 모델부터 이벤트 시간·워터마크, 상태·체크포인트, exactly-once, 윈도잉·조인·CEP, Flink SQL까지 6단계로 정복하는 학습 로드맵입니다. 도장깨기...
RL을 언어 모델에 실제로 돌리는 법 — 정책 경사의 유도, 분산을 줄이는 baseline과 advantage, 그리고 GRPO를 한 줄씩 구현하며 'raw reward로는 왜 안 되는가'를 눈으로 본다. CS336 시리즈의 마지막 강.
학습된 보상 대신 정답을 검증하는 보상(RLVR) — 수학·코드에서 규칙 기반 보상으로 reward hacking을 줄이고, 이 단순한 전환이 긴 사고사슬을 스스로 학습하는 추론 모델(o1·DeepSeek R1)과 GRPO를 낳았다.
사전학습된 원석을 어시스턴트로 — SFT는 사전학습 행동을 추출할 뿐 새로 더하지 않고(모르는 사실을 학습하면 환각), 선호 데이터로 보상 모델(Bradley-Terry)을 세워 RLHF(PPO·KL 제약)로 사람 선호에 맞추고, 그 보상 모델마저 없애 버리는 DPO까지.
Stanford CS336 14강 정리. raw 웹을 좋은 학습 코퍼스로 바꾸는 세 기술 — 품질 필터링(KenLM·fastText·DSIR), 중복 제거(MinHash·LSH·Bloom filter), 데이터 믹스. 핵심 과제는 목표와 닮은 부분집합을 극도로 빠르게 골라내기.
데이터가 아키텍처보다 모델을 결정한다 — Common Crawl을 학습 코퍼스로 바꾸는 파이프라인(WARC/WET·HTML→텍스트), 사전학습 데이터셋의 계보(C4·The Pile·RefinedWeb·FineWeb·Dolma·DCLM), 그리고 저작권·공정 이용.
Stanford CS336 12강 정리. '하나의 참된 평가는 없다' — 무엇을 알고 싶은가에 따라 달라지는 평가. perplexity 같은 내재적 지표, MMLU·GPQA 등 지식 벤치마크, LM-as-judge와 Chatbot Arena, 에이전트·안전 벤치마크, 그리고 현실성·오염(contamination)·타당성이라는 평가의 함정까지.
Stanford CS336 11강 정리. 실전 LLM 빌더가 스케일링 법칙을 쓰는 법 — Cerebras·MiniCPM·DeepSeek 사례, WSD 학습률로 Chinchilla를 한 번에, '20토큰/파라미터는 출발점일 뿐', 그리고 하이퍼파라미터를 스케일에 불변으로 만드는 muP의 유도와 한계.
Stanford CS336 10강 정리. 추론은 왜 메모리 한계인가 — prefill vs generation, KV 캐시의 정체, 그것을 줄이는 아키텍처(GQA·MLA·local attention)와 트랜스포머 너머(SSM·diffusion), 그리고 양자화·speculative decoding·PagedAttention까지.
Stanford CS336 9강 정리. 손실이 데이터·모델·연산의 거듭제곱으로 줄어드는 스케일링 법칙 — 왜 멱법칙이 자연스러운가, 작은 모델로 아키텍처·하이퍼파라미터를 정하는 법, 그리고 컴퓨트 최적 배분을 알려주는 Chinchilla(파라미터당 20토큰)와 추론을 생각한 over-training.
Stanford CS336 8강 정리. 모델을 쪼개 활성화만 주고받기 — 너비로 자르는 텐서 병렬, 깊이로 자르는 파이프라인 병렬(과 버블), 활성화·시퀀스 병렬, 그리고 셋을 합치는 3D 병렬화의 실전 규칙과 사례(Megatron·DeepSeek·Llama 3).
Stanford CS336 7강(전반) 정리. 한 GPU를 넘어 데이터센터로 — 네트워킹 계층과 집합 통신(all-reduce = reduce-scatter + all-gather), 데이터 병렬의 파라미터당 16바이트 메모리 문제, 그리고 그 중복을 단계적으로 걷어내는 ZeRO 1·2·3(=FSDP).
Stanford CS336 6강 정리. GPU 코드를 빠르게 만드는 실전 — 벤치마킹(warm-up·cuda.synchronize)과 프로파일링(CPU/GPU 비동기 모델)으로 병목을 찾고, GELU 커널을 수동 PyTorch·내장·CUDA C++·Triton·torch.compile 다섯 가지로 써 보며 커널 퓨전의 효과를 잰다.
Stanford CS336 5강 정리. GPU를 마법이 아니라 구조로 이해하기 — SM·메모리 계층·SIMT 실행 모델, 루프라인과 산술 강도, 그리고 정밀도·퓨전·재계산·코얼레싱·타일링이라는 6가지 도구로 메모리 병목을 줄여 Flash Attention에 이르는 길.
Stanford CS336 4강 정리. Dense FFN을 라우터 + 여러 전문가로 바꿔 FLOPs는 그대로 두고 파라미터만 키우는 MoE — token-choice top-k 라우팅, fine-grained·shared 전문가, 부하 분산 손실과 DeepSeek V3의 보조손실 없는 균형, 그리고 MLA·MTP까지.
Stanford CS336 3강 정리. 2017~2025년 약 19개 모델의 '수렴 진화'에서 배운 현대 트랜스포머의 합의 — Pre-norm·RMSNorm·bias 제거·SwiGLU·RoPE, 그리고 d_ff 비율·aspect ratio 같은 하이퍼파라미터 규칙과 z-loss·QK-norm·MQA/GQA까지.
Stanford CS336 2강 정리. 모델을 '느낌'이 아니라 숫자로 다루는 자원 회계 — 메모리(부동소수점 타입·AdamW의 16바이트/파라미터)와 연산(행렬곱 2mnp → 학습 6ND), 그리고 MFU까지 냅킨 한 장으로 계산합니다.
Stanford CS336 1강 정리. 코스를 관통하는 한 단어 '효율'에서 출발해, 텍스트를 토큰으로 바꾸는 토크나이제이션을 문자·바이트·단어 방식의 한계부터 BPE(Byte Pair Encoding) 밑바닥 구현까지 따라갑니다.
Stanford CS336 'Language Modeling from Scratch'(2025 봄) 17개 강의를 토크나이저·아키텍처·시스템·스케일링·데이터·정렬의 5개 유닛, 17단계로 재구성한 종합 학습 로드맵입니다. 도장깨기 방식으로 LLM을 밑바닥부터 직접 만드는 여정을 추적합니다.
데이터 파이프라인에 버전 관리·자동 테스트·환경 분리·자동 배포(DataOps/CI-CD)를 입히고, SLA/SLO/SLI와 경보·장애 대응·FinOps로 신뢰성을 지키며, 최소 권한·마스킹·암호화·규정 준수로 데이터를 안전하게 운영하는 법을 다룹니다. 시리즈의 마지막 10단계.
품질 차원과 검증(Great Expectations·dbt tests·데이터 계약), 리니지·카탈로그(DataHub·OpenMetadata), 그리고 관측가능성의 5축(신선도·볼륨·스키마·분포·리니지)을 통해 '파이프라인이 돈다 ≠ 데이터가 맞다'는 간극을 어떻게 메우는지 다룹니다.
실시간 분석·로그/이벤트·ML 피처·CDC 리포팅이라는 네 가지 대표 시나리오를 요구사항(지연·정확성·규모) → 설계(수집·저장·처리·오케스트레이션 선택) → 트레이드오프의 순서로 풀어, 앞 단계에서 배운 개념을 실제 파이프라인 설계로 연결합니다.
Lambda·Kappa의 배치/스트림 경로 설계부터 Bronze→Silver→Gold로 품질을 끌어올리는 Medallion, 그리고 Modern Data Stack과 도메인 중심의 Data Mesh까지 — 데이터 시스템을 떠받치는 대표 아키텍처 패턴을 그 트레이드오프와 함께 정리합니다.
수많은 데이터 작업을 DAG로 모델링하고 의존성·스케줄에 따라 실행하는 오케스트레이션의 원리, Airflow와 Dagster·Prefect의 철학 차이, 그리고 멱등성·재시도·백필·체크포인트로 견고한 파이프라인을 만드는 법을 다룹니다.
MapReduce에서 인메모리·DAG 실행의 Spark로 이어진 분산 처리 모델, 이벤트 시간·워터마크·윈도잉으로 무한 스트림을 다루는 Flink/Kafka Streams, 그리고 SQL 변환을 소프트웨어처럼 관리하는 dbt까지 — 저장된 데이터를 가치로 바꾸는 처리 엔진을 정리합니다.
OLTP와 OLAP, 행 지향과 열 지향 저장의 차이부터 데이터 웨어하우스·레이크·레이크하우스의 선택 기준, Parquet/ORC/Avro 같은 파일 포맷과 Iceberg/Delta/Hudi 같은 테이블 포맷까지 — 데이터를 '어디에 어떤 형태로' 쌓을지를 한 층씩 풀어냅니다.
원천에서 데이터를 가져오는 수집 단계 — 배치 vs 스트리밍의 트레이드오프, 로그 기반 vs 쿼리 기반 CDC, Kafka·Kinesis 같은 스트리밍 플랫폼의 버퍼·디커플링 역할, 그리고 Airbyte·Fivetran 같은 수집 도구의 build vs buy 판단까지 다룹니다.
데이터 웨어하우스에서 Hadoop·데이터 레이크, ETL에서 ELT로의 전환, 그리고 Modern Data Stack과 레이크하우스·스트리밍까지 — 데이터 파이프라인이 각 시대의 한계를 어떻게 풀어 왔는지 그 진화의 맥락을 짚습니다.
데이터 엔지니어링의 정의와 데이터 엔지니어의 역할, 그리고 모든 데이터 작업을 꿰뚫는 데이터 엔지니어링 수명주기(생성→수집→저장→변환→서빙)와 저류(Undercurrents)를 깊이 있게 다룹니다.
데이터 엔지니어링의 정의와 역사부터 수집·저장·처리·오케스트레이션 기술 오버뷰, 사례별 파이프라인 설계, 품질·거버넌스·DataOps까지 10단계로 정복하는 종합 학습 로드맵입니다. 도장깨기 방식으로 진행 상황을 추적합니다.
Red-Green-Refactor 사이클, mockall을 이용한 모킹, 그리고 tests 디렉토리 통합 테스트까지 Rust에서 TDD를 실천하는 방법을 다룹니다.
dbg! 매크로와 gdb/lldb 디버깅, criterion 벤치마킹과 flamegraph 프로파일링으로 Rust 코드를 추적하고 성능을 측정하는 방법을 다룹니다.
스마트 포인터(Box, Rc, RefCell), 동시성(스레드·채널·Mutex/Arc), 자동화 테스트, 그리고 미니 grep CLI 프로젝트로 지식을 통합합니다.
Rust의 핵심 추상화 도구인 제네릭(Generics), 트레이트(Trait), 라이프타임(Lifetime)을 코드 예제와 함께 깊이 있게 다룹니다.
Rust의 표준 컬렉션(Vec, String, HashMap)과 Result·panic!·? 연산자를 활용한 견고한 에러 처리 방식을 다룹니다.
Rust의 구조체(Struct), 열거형(Enum)과 Option, 그리고 match·if let 패턴 매칭으로 데이터를 안전하게 모델링하는 방법을 다룹니다.
Rust의 핵심 기능인 소유권, 빌림, 그리고 슬라이스에 대해 깊이 있게 다룹니다.
Rust 개발 환경 설정부터 Hello World, 그리고 변수와 제어문 등 기초 문법을 다룹니다.
Rust 프로그래밍 언어에 대한 개요와 핵심 특징을 알아봅니다.
Rust를 기초 문법부터 소유권, 트레이트, 동시성, TDD까지 8단계로 정복하는 종합 학습 로드맵입니다. 도장깨기 방식으로 진행 상황을 추적합니다.
PostgreSQL의 내부 아키텍처를 심층적으로 분석합니다. 프로세스 구조, 메모리 구조, 스토리지 구조를 이해하고 각 구성 요소가 어떻게 상호작용하는지 학습합니다.
Python asyncio 이벤트 루프의 작동 원리를 이해하고, 동시성 처리 성능을 극대화하는 최적화 기법을 학습합니다. 실전 웹 크롤러 최적화 프로젝트 포함.
Django와 Celery를 활용하여 대규모 작업을 효율적으로 분산 처리하는 방법과 AMQP 메시지 브로커를 통한 비동기 작업 관리 기법을 다룹니다.
Python 애플리케이션의 메모리 사용량을 최적화하는 필수 기법과 모범 사례를 학습합니다. 메모리 프로파일링, 데이터 구조 선택, 가비지 컬렉션 관리 등을 다룹니다.
PostgreSQL 기초부터 고급 주제까지 체계적으로 학습할 수 있는 종합 커리큘럼입니다. 아키텍처, 쿼리 최적화, 성능 튜닝을 포함합니다.
PostgreSQL을 다양한 플랫폼에서 설치하고 설정하는 방법을 단계별로 학습합니다. 개발 환경 구축부터 기본 설정까지 다룹니다.
Python 애플리케이션의 성능 병목 지점을 찾고 최적화하기 위한 프로파일링 도구와 기법을 알아봅니다.
Python의 예외 처리 내부 구조와 로깅 메커니즘, 그리고 Stack trace 분석 방법을 상세히 다룹니다.
Python이 코드를 효율적으로 실행하기 위해 사용하는 중간 표현인 바이트코드에 대해 알아봅니다.
Python의 import 시스템 내부 동작 원리를 깊이 있게 탐구합니다. sys.modules, importlib, meta path finder, 그리고 lazy import까지 상세히 다룹니다.
Python GIL의 작동 원리, Thread/Process/Async 비교, 그리고 Python 3.14 free-threaded 공식 지원(PEP 779)과 실전 벤치마크를 코드 예제와 함께 상세히 설명합니다.
Python 메모리 구조, 참조 카운팅, 가비지 컬렉션, __slots__, weakref 등 CPython의 메모리 관리 메커니즘을 6개의 다이어그램과 함께 상세히 설명합니다.
10년차 백엔드 엔지니어를 위한 Python 심화 커리큘럼. Internals, 성능 최적화, 아키텍처, 테스팅, 운영 자동화, 코드 품질까지 실전 중심으로 구성했습니다.