반응형

microservices 8

[WebAssembly] 5. 실전 배포: K8s 클러스터에 Wasm 기반 마이크로서비스 띄우기

안녕하세요! 여러분의 아키텍처 길잡이, 팬돌프입니다. 🐼지난 4편에서 우리는 K8s 워커 노드의 심장부인 containerd의 설정을 조작하여, 무거운 리눅스 컨테이너 대신 깃털처럼 가벼운 Wasm 바이트코드를 띄울 수 있도록 runwasi라는 마법의 다리를 놓아주었습니다.이제 인프라는 모든 준비를 마쳤습니다. 남은 것은 우리가 3편에서 Rust와 Go로 정성껏 구워낸 .wasm 파일을 실제로 K8s 클러스터에 배포하는 것뿐입니다."그런데 K8s는 도커 이미지(Docker Image)를 레지스트리에서 다운로드해서 실행하잖아요? 달랑 .wasm 파일 하나를 어떻게 K8s에 전달하죠?"오늘 5편에서는 순수한 .wasm 파일을 업계 표준인 OCI(Open Container Initiative) 컨테이너 이미..

Backend/Kubernetes 2026.03.26

[OpenTelemetry & Jaeger] 6. [분석] Jaeger UI를 활용한 트러블슈팅과 성능 최적화

1. 범인 색출의 시작: 트레이스 검색 (Search)Jaeger UI에 접속하면 가장 먼저 보이는 것이 왼쪽 사이드바의 검색 메뉴입니다. 수만 개의 요청 중에서 문제가 되는 요청을 빠르게 찾아내는 것이 분석의 첫걸음입니다.단순히 서비스 이름만 선택하고 Find Traces를 누르는 것은 하수입니다. 팬돌프가 추천하는 실무 검색 팁은 바로 태그(Tags)를 활용하는 것입니다.에러난 요청만 보기: error=true 태그를 입력하면 빨간불이 켜진 트레이스만 골라낼 수 있습니다.특정 HTTP 상태 코드: http.status_code=500과 같이 입력하여 서버 오류만 필터링합니다.오래 걸린 요청: Min Duration에 2s 등을 입력하여 2초 이상 걸린 '거북이 요청'들만 조회합니다.2. 시간의 흐름을..

[OpenTelemetry & Jaeger] 4. 실전! 애플리케이션 연동: 코드 한 줄 없이 트레이싱 시작하기 (Java/Python)

1. 자동 계측(Auto-Instrumentation)이란?애플리케이션에 트레이싱 기능을 넣는 방법은 크게 두 가지가 있습니다.자동 계측 (Auto-Instrumentation): 코드를 수정하지 않고, 에이전트(Agent)나 SDK가 애플리케이션 실행 시점에 자동으로 개입하여 데이터를 수집합니다. HTTP 요청, DB 쿼리 등 표준적인 라이브러리 호출을 자동으로 잡아냅니다.수동 계측 (Manual Instrumentation): 개발자가 직접 코드 내에 tracer.startSpan() 같은 로직을 작성합니다. 비즈니스 로직에 특화된 데이터가 필요할 때 사용합니다.우리는 가장 효율적인 '우선 자동 계측 적용 후, 필요시 수동 계측 추가' 전략을 사용할 것입니다.2. [Java] 코드 수정 0(Zero)..

[OpenTelemetry & Jaeger] 3. Jaeger: 분산 트레이싱의 시각화와 분석의 핵심

1. Jaeger(예거)란 무엇인가요?Jaeger는 우버(Uber) 테크놀로지스에서 개발하여 오픈소스로 공개한 분산 트레이싱 시스템입니다. 현재는 CNCF(Cloud Native Computing Foundation)의 졸업(Graduated) 프로젝트로, 쿠버네티스(Kubernetes)나 프로메테우스(Prometheus)와 어깨를 나란히 하는 신뢰성 높은 도구입니다.OpenTelemetry가 데이터를 '수집'하는 데 집중한다면, Jaeger는 수집된 데이터를 '저장'하고, 우리가 보기 좋게 '시각화(UI)'하여 분석을 돕는 백엔드 플랫폼입니다.2. Jaeger의 핵심 아키텍처 : 데이터는 어떻게 흐르는가?Jaeger의 구조를 이해하는 것은 안정적인 모니터링 시스템 구축을 위해 필수적입니다. Jaeger..

[Kafka] 14. [특별편] 카프카, 언제 사용하고 언제 사용하지 말아야 할까?

안녕하세요! 여러분의 기술적 고민을 함께 나누는 IT 러닝메이트, 팬돌프입니다.지난 13편의 긴 여정 동안, 우리는 아파치 카프카의 내부 구조부터 설치, 개발, 운영, 그리고 보안까지 숨 가쁘게 달려왔습니다. 이제 기술적인 "How(어떻게)"에 대해서는 충분히 익히셨으리라 생각합니다.하지만 엔지니어에게 가장 중요한 질문은 "Why(왜)"와 "When(언제)"입니다. 망치를 들었다고 해서 모든 것이 못으로 보여서는 안 되니까요. 카프카는 강력하지만, 모든 상황에 정답은 아닙니다.오늘 [14편]에서는 카프카를 도입하려고 고민 중인 분들을 위해 카프카가 반드시 필요한 순간과 절대 쓰면 안 되는 순간을 명확하게 정리해 드립니다. 의사결정에 큰 도움이 되실 겁니다.[14편] [특별편] 카프카, 언제 사용하고 언제..

[Kafka] 11. 데이터 거버넌스의 핵심 - 스키마 레지스트리 (Schema Registry)

안녕하세요! 여러분의 IT 지식 파트너, 팬돌프입니다.지난 [10편]에서는 '정확히 한 번(Exactly-Once)' 전송을 통해 데이터의 유실과 중복을 막는 법을 배웠습니다. 이제 데이터가 안전하게 전달되는 것은 보장되었죠.하지만 데이터 파이프라인에는 또 다른 무시무시한 적이 숨어 있습니다. 바로 '데이터 구조의 변경'입니다.어제까지 숫자(int)로 들어오던 고객 ID가 오늘 갑자기 문자열(String)로 들어온다면? 혹은 필수값이었던 '가격' 필드가 갑자기 사라진다면? 아마 여러분의 컨슈머 애플리케이션은 에러를 뱉으며 줄줄이 멈춰 설 것입니다.오늘 [11편]에서는 이러한 '데이터 재앙'을 막고, 프로듀서와 컨슈머 사이의 평화를 지키는 스키마 레지스트리(Schema Registry)에 대해 깊이 있게 ..

[Kafka] 8. 카프카 생태계 확장 (2) - 실시간 처리의 시작, 카프카 스트림즈 (Kafka Streams)

안녕하세요! 여러분의 기술 성장을 돕는 IT 러닝메이트, 팬돌프입니다.지난 [7편]에서는 카프카 커넥트(Kafka Connect)를 통해 코딩 없이 데이터를 카프카로 가져오고 내보내는 법을 배웠습니다. 이제 데이터 파이프라인은 완성되었습니다.하지만 단순히 데이터를 A에서 B로 옮기는 것만으로는 부족할 때가 많습니다. 데이터가 흐르는 그 순간에, 불필요한 데이터를 걸러내거나(Filter), 포맷을 변경하거나(Map), 실시간으로 집계(Count)를 해야 한다면 어떻게 해야 할까요?오늘 소개해 드릴 카프카 스트림즈(Kafka Streams)가 바로 그 해답입니다. 별도의 무거운 클러스터 없이도 강력한 실시간 분석 애플리케이션을 만들 수 있는 비결, 지금 바로 공개합니다![8편] 카프카 생태계 확장 (2) -..

[Docker] 1. Docker 개요 및 아키텍처 이해

안녕하세요! 데이터 엔지니어링과 AI의 세계를 탐험하는 여러분의 친절한 가이드, 팬돌프입니다. 🤓새로운 IT 전문 블로그의 첫 페이지를 열게 되어 정말 기쁩니다. 앞으로 이곳에서 데이터와 인공지능에 관한 흥미롭고 유용한 이야기들을 쉽고 상세하게 풀어가려고 합니다. 그 대장정의 첫걸음으로, 오늘날 개발자라면 반드시 알아야 할 핵심 기술, 바로 도커(Docker)에 대해 이야기해 보겠습니다."제 컴퓨터에서는 잘 되는데요?"라는 말을 한 번이라도 해보셨다면, 오늘 포스팅이 분명 큰 도움이 될 겁니다. 자, 그럼 함께 Docker의 세계로 깊이 빠져볼까요? 🚀🐳 Docker 개요 및 아키텍처 이해1. 도커(Docker)란 무엇일까요? 컨테이너 기술이 필요한 이유혹시 해외로 이사할 때 사용하는 '해상 운송..

Backend/Docker 2025.09.23
반응형