0x06. Lakehouse 아키텍처 심화 - 오픈 테이블 포맷과 설계 원칙
Lakehouse 아키텍처의 핵심 설계 원칙인 스토리지-컴퓨팅 분리, 오픈 테이블 포맷 삼국지(Iceberg vs Delta Lake vs Hudi), 그리고 실무 선택 기준을 정리한다.
AI, Data Engineering, 그리고 개발에 대한 기록
Lakehouse 아키텍처의 핵심 설계 원칙인 스토리지-컴퓨팅 분리, 오픈 테이블 포맷 삼국지(Iceberg vs Delta Lake vs Hudi), 그리고 실무 선택 기준을 정리한다.
Lakehouse에서 데이터 품질을 점진적으로 향상시키는 Medallion Architecture의 세 계층과 설계 원칙을 정리한다.
Apache Iceberg의 계층적 메타데이터 아키텍처, Hidden Partitioning, 스키마 진화, 타임 트래블, ACID 트랜잭션의 동작 원리를 깊이 파헤친다.
Delta Lake의 Transaction Log 아키텍처, Change Data Feed, UniForm 호환성, Z-ORDER 최적화, 그리고 Iceberg와의 차이를 정리한다.
ETL 성공인데 데이터는 틀렸다? Data Downtime, Silent Failure, 그리고 5 Pillars 프레임워크까지 Data Observability의 핵심을 정리한다.
데이터 처리의 두 축인 배치와 스트리밍 아키텍처를 비교하고, Lambda/Kappa 아키텍처의 설계 원리와 선택 기준을 알아본다.
데이터 레이크와 데이터 웨어하우스의 차이점, 각각의 장단점, 그리고 두 패러다임을 통합하는 Lakehouse 아키텍처를 알아본다.
CDC(Change Data Capture)의 원리와 구현 방식, Debezium 아키텍처, 그리고 실전 CDC 파이프라인 패턴을 알아본다.
Apache Flink와 Apache Spark를 아키텍처, 스트리밍, 배치, 상태 관리, 운영 관점에서 비교하고 선택 기준을 제시한다.
Elasticsearch의 매핑 정의와 필드 타입, 동적 매핑 제어, 인덱스 설계 전략을 알아본다.
Elasticsearch의 텍스트 분석 파이프라인을 이해하고, 한국어 형태소 분석기 Nori를 활용한 커스텀 Analyzer를 구성한다.
Kibana를 활용한 데이터 탐색, 시각화 생성, 대시보드 구성, 그리고 운영 모니터링 활용법을 알아본다.
Flink의 Kafka Source/Sink 커넥터를 활용한 실시간 파이프라인 구축과 End-to-End Exactly-once 보장 메커니즘을 알아본다.
Flink의 배치 처리 지원 방식, DataStream API에서의 배치/스트리밍 통합, 그리고 실행 모드 설정을 알아본다.
Kafka Connect의 아키텍처와 Source/Sink 커넥터 구성, 그리고 Debezium을 활용한 CDC 파이프라인을 알아본다.
Kafka Streams의 핵심 개념인 KStream/KTable, 상태 저장소, 윈도우 연산, 그리고 Exactly-once 처리를 알아본다.
Spark에서 다양한 데이터 소스(파일, DB, Kafka, Delta Lake)를 읽고 쓰는 방법과 I/O 최적화 전략을 알아본다.
Apache Airflow의 핵심 개념인 DAG와 Task를 이해하고, 워크플로 오케스트레이션의 기본 구조를 알아본다.
Airflow의 다양한 Operator 종류와 스케줄링 메커니즘, 분기 처리와 Trigger Rule을 알아본다.
Airflow에서 Task 간 데이터를 공유하는 XCom, 설정을 관리하는 Variable, 외부 시스템 연결을 위한 Connection과 Hook, 그리고 TaskGroup을 알아본다.
Airflow 2.0에서 도입된 TaskFlow API의 사용법과 프로덕션 환경에서의 DAG 작성 모범 사례, 성능 최적화 전략을 알아본다.
배치와 실시간 처리의 차이, 스트리밍 아키텍처의 핵심 개념, 그리고 Data Mesh와 Data Fabric까지 데이터 파이프라인의 전체 그림을 그려본다.
Elasticsearch의 핵심 구조인 인덱스, 매핑, 샤드와 복제를 이해하고, 역색인(Inverted Index)의 원리를 알아본다.
Elasticsearch의 텍스트 분석기(Analyzer), Query DSL을 활용한 검색, 그리고 Aggregation을 통한 데이터 분석을 알아본다.
Elasticsearch 클러스터의 노드 구성, ILM을 통한 데이터 생명주기 관리, 그리고 마이그레이션과 모니터링을 알아본다.
Apache Flink의 아키텍처와 스트림 우선(Stream-first) 철학을 이해하고, DataStream API의 기본 사용법을 알아본다.
Flink의 기본 및 고급 Transformation 연산자를 알아보고, 배치 처리와 스트림 처리의 통합 모델을 이해한다.
Flink의 윈도우 개념(Tumbling, Sliding, Session)과 Watermark, Trigger, Evictor를 통한 시간 기반 스트림 처리를 알아본다.
Flink의 상태 관리(Keyed/Operator State), Checkpoint와 Savepoint를 통한 내결함성, 그리고 Spark와의 비교를 알아본다.
Apache Kafka의 핵심 구성 요소인 Topic, Partition, Broker, Producer, Consumer를 이해하고 분산 메시지 스트리밍의 원리를 알아본다.
Kafka Producer의 전송 보장 수준과 파티셔닝 전략, Consumer의 Offset 관리와 Rebalancing 메커니즘을 심층적으로 알아본다.
Kafka 클러스터의 고가용성을 보장하는 복제 메커니즘, KRaft 모드, 그리고 프로덕션 운영 전략을 알아본다.
RNN의 한계를 넘어선 Transformer 아키텍처의 핵심 구성 요소를 알아본다.
텍스트를 컴퓨터가 이해할 수 있는 숫자 벡터로 변환하는 Embedding 기술을 살펴본다.
Transformer Encoder를 활용해 양방향 문맥을 이해하는 BERT의 구조와 학습 방법을 정리한다.
Transformer Decoder 기반으로 텍스트를 생성하는 GPT의 구조와 발전 과정을 알아본다.
Encoder-Decoder 구조를 활용하는 BART와 T5 모델의 특징과 차이점을 비교한다.
대형 언어 모델(LLM)의 핵심 특징, 작동 원리, 그리고 왜 Decoder-Only 구조가 주류가 되었는지 알아본다.
RAG 시스템의 핵심인 Chunking 전략들을 비교하고, 최적의 청크 설계 방법을 정리한다.
사전 학습된 LLM을 특정 작업에 맞게 조정하는 Fine-tuning 기법들을 정리한다.
전체 파라미터를 건드리지 않고도 LLM을 효율적으로 파인튜닝하는 PEFT 기법들을 알아본다.
신경망이 새로운 지식을 학습할 때 기존 지식을 급격히 잊어버리는 Catastrophic Forgetting 현상과 해결책을 정리한다.
LLM이 인간의 선호에 맞는 응답을 생성하도록 정렬하는 RLHF와 DPO 기법을 비교한다.
RAG의 기본 파이프라인(문서 로딩 → 청킹 → 임베딩 → 검색 → 생성)을 이해하고, CSV 데이터와 신뢰성 있는 RAG 구현까지 알아본다.
RAG 성능을 좌우하는 청크 전략을 비교한다. 고정 크기, 의미 기반, 명제 기반 청킹의 원리와 최적화 방법을 알아본다.
사용자 질문을 변환하여 검색 품질을 높이는 기법들을 살펴본다. Query Rewriting, Multi-Query, HyDE, HyPE의 원리와 차이를 비교한다.
검색된 청크에 문맥 정보를 추가하여 LLM의 이해를 돕는 기법들을 알아본다. CCH, Context Window Enhancement, RSE를 비교한다.
검색 결과를 압축하거나 문서를 사전 증강하여 RAG 품질을 높이는 두 가지 접근법을 살펴본다.
키워드 검색과 의미 검색을 결합하는 하이브리드 전략과 Reranking을 통한 검색 정확도 향상 기법을 알아본다.
메타데이터 필터링, 계층적 인덱스, Dartboard Retrieval 등 구조화된 검색 전략으로 RAG의 정밀도를 높이는 방법을 알아본다.
이미지를 포함한 멀티모달 RAG와 반복적·적응적 검색 전략으로 RAG를 고도화하는 방법을 알아본다.
모델이 스스로 검색 필요성을 판단하고 결과를 검증하는 Self-RAG와 Corrective RAG의 원리를 비교한다.
지식 그래프와 그래프 데이터베이스를 활용한 Graph RAG의 원리를 알아보고, Microsoft GraphRAG, RAPTOR, LangChain 구현까지 살펴본다.
Apache Spark의 아키텍처와 핵심 추상화인 RDD를 이해하고, Transformation과 Action의 차이를 알아본다.
Spark의 고수준 API인 DataFrame과 Spark SQL을 알아보고, 데이터 읽기/쓰기와 최적화 엔진 Catalyst를 이해한다.
Spark의 스트리밍 처리 모델인 Structured Streaming의 원리와 Kafka 연동, 윈도우 연산을 알아본다.
Spark 애플리케이션의 성능을 좌우하는 Shuffle, 파티셔닝, 캐싱 전략과 Catalyst Optimizer, AQE 등 최적화 메커니즘을 알아본다.
투 포인터 알고리즘의 개념과 수 고르기, 부분합 문제 풀이를 정리한다.
이분탐색의 개념과 구현, STL, Parametric Search를 정리한다.
해시 자료구조의 개념, 충돌 회피(Chaining, Open Addressing), STL 사용법을 정리한다.
이진 탐색 트리의 개념과 STL set, multiset, map 사용법을 정리한다.
KMP 알고리즘의 개념과 실패 함수, 구현을 정리한다.
플로이드 알고리즘의 개념과 구현, 경로 복원 방법을 정리한다.
다익스트라 알고리즘의 개념과 우선순위 큐를 활용한 최적화 구현을 정리한다.
최소 신장 트리의 개념과 크루스칼/프림 알고리즘 구현을 정리한다.
소수 판별, 에라토스테네스의 체, 최대공약수(유클리드 호제법), 이항계수를 정리한다.
위상 정렬의 개념과 구현, 줄 세우기 문제 풀이를 정리한다.
비밀번호 없이 로그인? OAuth 2.0의 동작 원리와 Authorization Code Flow
비밀번호부터 Kerberos까지, 사용자 인증의 모든 것
네트워크 경계 방어의 핵심, 방화벽의 종류와 동작 원리
웹 브라우저와 서버 간 안전한 통신을 책임지는 SSL/TLS 프로토콜의 동작 원리를 알아본다
키를 안전하게 분배하는 방법: KDC, Diffie-Hellman, 디지털 인증서, CA의 역할
RSA 알고리즘, 해시 함수, MAC, HMAC, 디지털 서명까지 - 공개키 암호화의 핵심 원리
시저 암호부터 대칭키/비대칭키까지, 암호화의 핵심 원리를 정리한다
대칭키 암호의 핵심 구성요소부터 DES, AES 알고리즘, 그리고 ECB/CBC/CFB/OFB/CTR 모드까지
기밀성, 무결성, 가용성의 개념부터 공격 유형과 악성코드까지, 컴퓨터 보안의 핵심 개념을 정리한다.
Linux 권한 체계의 핵심인 Set-UID 프로그램의 동작 원리와 환경 변수를 통한 공격 기법을 다룬다
버퍼 오버플로우의 원리부터 Shellcode 작성, Return-to-libc, ROP까지 공격 기법과 대응책을 정리한다
Race Condition 취약점의 원리와 TOCTTOU 공격, 그리고 9년간 숨어있던 Dirty COW 취약점까지
그리디 알고리즘의 개념과 동전, 회의실 배정, 로프, 보물 문제 풀이를 정리한다.
네트워크 보안의 원칙, 암호화 기법, 메시지 무결성, TLS, IPsec, 방화벽과 침입 탐지 시스템을 정리한다.
무선 링크의 특징, WiFi(802.11), 셀룰러 네트워크(4G/5G), 이동성 관리의 원칙과 실제를 정리한다.
링크 계층의 소개, 오류 검출/정정 기술, 다중 접속 프로토콜, 스위치 LAN, 데이터 센터 네트워킹을 정리한다.
네트워크 계층의 제어 평면을 다룬다. 라우팅 알고리즘, OSPF, BGP, SDN 제어, ICMP, 네트워크 관리를 정리한다.
네트워크 계층의 데이터 평면을 다룬다. 라우터 내부 구조, IP 프로토콜, 주소 체계, SDN, 미들박스를 정리한다.
전송 계층의 다중화/역다중화, UDP, 신뢰적 데이터 전송(rdt/GBN/SR), TCP 연결 관리, 흐름 제어, 혼잡 제어를 정리한다.
애플리케이션 계층의 원리, HTTP 프로토콜의 발전(1.0~3), 이메일/DNS/P2P/CDN의 동작 원리를 정리한다.
인터넷의 구성 요소, 네트워크 코어의 패킷 스위칭과 회선 스위칭, 지연과 손실, 프로토콜 계층 구조를 정리한다.
문자열 매칭 알고리즘(Naive, Rabin-Karp, FA, KMP)을 비교 분석한다.
퀵 정렬의 원리, 분할 전략, 랜덤화 기법을 정리한다.
비교 기반 정렬의 하한과 선형 시간 정렬(Counting, Radix, Bucket)을 다룬다.
순서 통계량과 선형 시간 선택 알고리즘을 정리한다.
단일 출발점 최단 경로 알고리즘(Dijkstra, Bellman-Ford, DAG)을 정리한다.
최소 신장 트리의 개념과 Kruskal, Prim 알고리즘을 다룬다.
그래프의 기본 개념과 BFS, DFS, 위상 정렬, 강연결 요소를 정리한다.
고전 동기화 문제(Bounded-Buffer, Readers-Writers, Dining Philosophers)의 해법과 POSIX, Windows, Linux, Java에서의 동기화 구현을 정리한다.
메모리 관리의 기초부터 페이징, 세그멘테이션까지. 프로세스가 메모리를 어떻게 할당받고, 주소가 어떻게 변환되는지 정리한다.
프로그램 전체를 메모리에 올리지 않고도 실행하는 가상 메모리의 원리와, 요구 페이징, 페이지 교체 알고리즘, 스래싱 방지 전략까지 정리한다.
SQL의 Join 유형별 차이, View의 활용과 한계, Window Function의 다양한 사용법, 그리고 Key의 종류를 정리한다.
데이터베이스 설계의 핵심 도구인 E-R 모델을 다룬다. Entity, Relationship, Attribute의 개념부터 Mapping Cardinality, Weak Entity, 그리고 E-R 모델을 Relation Schema로 변환하는 방법까지 정리한다.
데이터 중복과 이상 현상을 제거하기 위한 정규화의 원리와 1NF부터 4NF까지의 단계별 과정을 정리한다.
Database는 왜 파일 시스템이 아닌 DBMS로 관리해야 하는가? 관계형 데이터 모델의 핵심 개념을 정리한다.
SQL의 이론적 기반이 되는 Relational Algebra의 핵심 연산들을 정리한다.
왜 수많은 데이터베이스 중 MySQL이 가장 널리 쓰이는지, 그 특징과 장점을 정리한다.
SQL의 핵심인 DML을 다룬다. SELECT, INSERT, UPDATE, DELETE 문법부터 중첩 서브쿼리, 집합 연산까지 예제와 함께 정리한다.
CREATE, ALTER, DROP으로 테이블을 만들고, 바꾸고, 지우는 SQL DDL의 핵심을 정리한다.
Insertion Sort, Merge Sort, 그리고 알고리즘 분석의 기초를 다룬다.
알고리즘의 수행 시간을 표현하는 점근적 표기법(O, Ω, Θ)을 정리한다.
분할 정복 패러다임과 점화식 풀이 방법(치환법, 재귀 트리, 마스터 정리)을 다룬다.
동적 프로그래밍의 원리와 Rod Cutting, LCS 등 핵심 문제를 정리한다.
그리디 알고리즘의 설계 전략과 Activity Selection, Huffman Coding을 다룬다.
0-1 배낭 문제(DP)와 분할 가능 배낭 문제(Greedy)를 비교 분석한다.
힙 자료구조와 힙 정렬, 우선순위 큐를 다룬다.
운영체제가 제공하는 서비스, 시스템 콜의 동작 원리, 다양한 커널 구조(모놀리식, 계층형, 마이크로커널, 모듈), 그리고 가상 머신의 개념을 정리한다.
프로세스의 개념과 상태, 스케줄링, 프로세스 생성/종료, IPC(공유 메모리, 메시지 패싱), 클라이언트-서버 통신(소켓, RPC, 파이프)까지 정리한다.
프로세스보다 가볍고 빠른 실행 단위, 스레드의 개념과 멀티스레딩 모델, 스레드 라이브러리, 그리고 스레드 사용 시 주의할 이슈들을 정리한다.
CPU 스케줄링의 기본 개념부터 FCFS, SJF, 우선순위, 라운드 로빈 등 주요 알고리즘, 다중 프로세서 및 실시간 스케줄링까지 정리한다.
공유 자원을 두고 벌어지는 경쟁 상태를 해결하기 위한 임계 구역 문제와 Peterson 알고리즘, 하드웨어 명령어, 뮤텍스, 세마포어, 모니터까지 정리한다.
운영체제의 정의와 역할, 인터럽트 기반 동작 원리, 컴퓨터 시스템 구조, 멀티프로그래밍과 가상 메모리, 그리고 OS의 핵심 구성 요소를 정리한다.
다이나믹 프로그래밍의 개념과 테이블 정의/점화식/초기값 설정 방법, 경로 추적을 정리한다.
Counting Sort, Radix Sort, STL Sort 사용법과 비교함수 작성법을 정리한다.
기초정렬(선택, 버블), Merge Sort, Quick Sort의 개념과 구현, Stable Sort를 정리한다.
시뮬레이션 문제 풀이 - 감시, 스티커 붙이기, 2048 (Easy), 치킨 배달을 정리한다.
시간/공간 복잡도, 정수/실수 자료형, STL과 함수 인자, 표준 입출력까지 PS의 기초를 다진다.
배열의 정의와 성질, Insert/Erase 구현, STL vector 사용법을 정리한다.
연결 리스트의 정의와 성질, 배열과의 비교, Insert/Erase 구현, STL list 사용법을 정리한다.
스택의 정의와 성질, Push/Pop/Top 구현, STL stack 사용법을 정리한다.
큐의 정의와 성질, Push/Pop/Front/Back 구현, STL queue 사용법을 정리한다.
덱의 정의와 성질, Push/Pop 구현, STL deque 사용법을 정리한다.
스택을 활용한 괄호 쌍 검사 문제 해결 방법을 정리한다.
너비 우선 탐색(BFS)의 개념과 거리 측정, 시작점이 여러 개인 경우, 1차원 BFS까지 다양한 응용을 정리한다.
깊이 우선 탐색(DFS)의 개념과 BFS와의 차이점을 정리한다.
재귀 함수의 개념과 귀납적 사고, 거듭제곱/하노이탑/Z 문제 풀이를 정리한다.
백트래킹의 개념과 N과M, N-Queen, 부분수열의 합 문제 풀이를 정리한다.