본문 바로가기

Udo's Code Note

데이터 엔지니어의 기술 블로그

69개의 글

최근 글

전체 보기
Data Engineering·

Row vs Column - 데이터는 왜 구간마다 형태를 바꾸는가

지난 글에서는 Protobuf의 Wire Format을 바이트 단위로 뜯어보며, 필드 이름 대신 숫자 태그를 쓰고 값을 가변 길이 정수(Varint)로 인코딩하는 방식이 JSON 대비 얼마나 효율적인지 확인했습니다. 그리고 Protobuf를 행(Row) 기반 처리의 표...

Data Engineering·

Protobuf - Wire Format과 인코딩 원리 뜯어보기

지난 1편에서는 데이터 시스템이 커질수록 직렬화 비용이 필연적인 병목이 된다는 점을 이야기했습니다. 초당 수백만 건의 이벤트를 처리해야 하는 환경에서, 범용적인 JSON은 '가독성'을 얻는 대신 CPU와 네트워크 비용을 비싸게 치르게 됩니다.

Data Engineering·

직렬화(Serialization)는 왜 비용인가?

데이터 시스템의 규모가 커지면 직렬화(Serialization) 비용이 필연적으로 병목이 됩니다. 초당 수십만~수백만 건의 이벤트를 다루는 환경에서 JSON은 가독성이라는 장점이 있지만, CPU와 네트워크 부하가 빠르게 누적되기 때문입니다.

LLM 프로젝트·

11편. MCP 연결 방식 이해하기 (Stdio vs SSE)

이전 글에서는 MCP(Model Context Protocol)가 무엇인지, 그리고 Python SDK로 간단한 MCP 서버를 만들고 연동하는 방법을 정리했습니다. MCP 서버를 한 번이라도 실행해 보면 자연스럽게 이런 질문이 따라옵니다. “내가 만든 이 파이썬 MCP...

Data Engineering·

메달리온 아키텍처 (Medallion Architecture)

데이터 레이크(Data Lake)가 처음 등장했을 때, 우리는 모든 데이터를 한곳에 모으기만 하면 자연스럽게 가치가 만들어질 것이라고 기대했습니다. 하지만 현실은 조금 달랐습니다. 검증되지 않은 데이터가 무작정 쌓이면서 레이크는 금세 ‘데이터 늪(Data Swamp)’...

Designing Data-Intensive Applications·

1편. 데이터 집약적 애플리케이션

현대의 대부분 소프트웨어는 단순한 웹 페이지를 렌더링하는 수준을 넘어서, 많은 양의 데이터를 지속적으로 저장하고, 조회하고, 전달하고, 변환해야 합니다. SNS 피드, 쇼핑몰 추천, 실시간 분석, 로그 수집, 금융 거래 시스템까지 이 모든 서비스의 근본적인 어려움은 “...

데이터 수집 패턴 (Data Ingestion Patterns)

데이터 엔지니어링은 다양한 요구사항에 맞춰 데이터 파이프라인을 설계합니다. 각 회사가 자주 사용하는 방식은 자사 소스의 특성과 운영 환경에 최적화되어 있으며, 이를 추상화해 다른 요구사항에도 재사용하곤 합니다.

제4회 Airflow 커뮤니티 밋업 후기

2025년 10월 22일에 제4회 Airflow 커뮤니티 밋업이 열렸습니다. 데이터 엔지니어라면 누구나 한 번쯤은 Airflow를 다뤄봤을 겁니다. 다만, 처음 배운 뒤로는 Airflow를 배치 파이프라인 실행기 정도로만 여겨왔고, 점점 발전해온 기능 변화에는 무심했습...