목록DevOps (158)
나의 잡다한 노트 및 메모
Cloud-Native Edge Router’라는 표현을 구성하는 두 단어용어 Traefik이 뜻하는 바핵심 포인트 Cloud-nativeDocker, Kubernetes, Nomad, Consul 같은 클러스터/서비스 레지스트리 API를 실시간 감시해 라우팅 규칙을 자동 생성·갱신한다. 설정 파일을 수작업으로 배포할 필요가 없다. 또한 단일 Go 바이너리로 배포-컨테이너화가 쉽고, 상태(state)가 거의 없어 수평 확장이 용이하다. GitHub Edge router플랫폼의 ‘입구(EntryPoint)’에 서서 모든 외부(North-South) 트래픽을 가로채고, 규칙(Router)·미들웨어·서비스 객체를 적용해 내부 마이크로서비스로 전달하는 컴포넌트이다. 클러스터 안쪽(..
서비스 메쉬(Service Mesh)는 마이크로서비스 아키텍처에서 서비스 간 통신을 표준화·관리·보안·관측하기 위해 설계된 전용 인프라 계층입니다.애플리케이션 코드에 통신 로직을 직접 구현하는 대신, 데이터 플레인(Data Plane) 과 컨트롤 플레인(Control Plane) 으로 분리해 관리합니다.1. 서비스 메쉬의 필요성마이크로서비스 환경에서는 서비스가 많아질수록 다음 문제가 커집니다:서비스 간 호출 시 서비스 검색(Service Discovery) 필요TLS 암호화, 인증·인가 등 보안 요구트래픽 제어 (리트라이, 타임아웃, rate limit)장애 격리 및 Failover 처리관측성 (Metrics, Logs, Traces)전통적으로 이런 로직을 각 서비스 코드에 직접 넣었지만, 서비스 메쉬는..
로드 테스트란?정의: 서비스·시스템에 예상 동시 사용자 수 혹은 요청량을 부하(로드)로 가해, 성능 한계와 안정성을 검증하는 성능 테스트의 한 유형입니다.목적: 실제 운영 환경에서의 트래픽 패턴을 모방해처리량(Throughput)응답 시간(Response Time)시스템 자원(CPU, 메모리, I/O) 사용률에러 발생율등을 측정·분석하여, 병목 지점과 최대 용량을 파악하고 SLA(Service Level Agreement) 준수 여부를 확인합니다. 주요 테스트 유형 비교테스트 유형 설명 로드 테스트정상 예상 트래픽(peak load)을 가정해 시스템이 요구사항을 만족하는지 확인스트레스 테스트한계 이상 과부하를 걸어 어떻게 장애가 발생·복구되는지 확인스파이크 테스트..
Loki에서 “인덱싱”이란, 결국 “어떤 로그 라인이 어떤 레이블(label) 조합(stream)에 속하고, 언제(타임스탬프 범위) 수집되었는지”를 빠르게 조회할 수 있도록 메타데이터를 별도의 구조(인덱스)로 저장하는 과정을 말합니다. Loki가 실제로 사용하는 인덱싱 방식을 단계별로 풀어보면 다음과 같습니다. 1. 로그는 “스트림(stream)” 단위로 취급한다Loki에서 하나의 “스트림”이란, 동일한 레이블(예: {job="app", instance="host1"} 같은 키=값 쌍) 을 가진 로그들의 묶음을 뜻합니다.Promtail(혹은 다른 Loki 클라이언트)이 로그를 Push API로 보낼 때, 각 로그 라인은 반드시 하나 이상의 레이블 셋(label set)을 동반합니다.예: {job="sy..
스트림(stream): Loki에서 스트림은 동일한 레이블(label) 조합을 가진 로그들의 집합 Loki는 로그를 내부적으로 “스트림(stream)”별로 모아서, 일정 크기(또는 일정 시간)가 지나면 하나의 청크(chunk) 파일로 디스크(또는 오브젝트 스토리지)에 저장 청크 파일은 크게 두 가지 정보를 담고 있습니다. 인덱스(Index) 정보: 해당 청크에 어떤 레이블(label) 조합을 가진 로그가, 어떤 타임스탬프 범위에 걸쳐 들어 있는지에 대한 메타데이터. 청크(chunk) 본문: 실제 로그 라인들의 바이너리 압축 데이터. 스키마 및 인덱스 주기(period)schema_config 설정에서 index.period: 24h(기본값)처럼 지정하면,“하루 단위”(예: midnight to midn..
API 게이트웨이(API Gateway)는 마이크로서비스 아키텍처나 분산 시스템 환경에서 클라이언트(웹/모바일 등)와 백엔드 서비스(마이크로서비스) 사이의 단일 진입점(Entry Point) 으로 동작하는 컴포넌트입니다. 전통적인 모놀리식(단일 애플리케이션)에서는 클라이언트가 곧바로 애플리케이션의 엔드포인트(예: /login, /orders/{id} 등)를 호출하면 되었지만, 마이크로서비스처럼 기능별로 서비스가 분리된 환경에서는 클라이언트가 수십~수백 개의 서비스 주소를 일일이 알아서 호출하기 어려워지고, 보안·인증·로깅·버전 관리 같은 공통 기능을 모든 서비스에 중복 구현하기도 복잡해집니다.API 게이트웨이는 이 문제를 “중앙 집중화된 관문”을 통해 해결하며, 크게 다음과 같은 역할과 이점을 제공합니다..
request_id정의: 개별 클라이언트 요청(HTTP API 호출, gRPC 호출, 메시지 큐 메시지 처리 등)에 부여되는 고유 식별자입니다.주 용도:로그 상관관계(Correlation): 특정 클라이언트 요청이 들어왔을 때, 그 요청과 관련된 모든 로그(예: 로드밸런서 단계, 웹서버 단계, 애플리케이션 단계, DB 쿼리 단계 등)에 동일한 request_id를 붙여서 “이 로그들이 모두 같은 요청에 속한다”라는 것을 쉽게 파악할 수 있도록 해 줍니다.디버깅 & 트래블스루(Flow-Through) 파악: 여러 레이어(프록시, 리버스 프록시, API 게이트웨이, 어플리케이션 서버) 를 거치더라도, 최상단에서 생성된 request_id 를 헤더(예: X-Request-ID)로 넘겨주면, 모든 레이어가 같은..
{ "timestamp": "2025-05-31T18:42:15.123Z", "level": "ERROR", "service": "order-service", "environment": "production", "instance_id": "order-service-3fd8b6c4", "host": "app-node-12.mofl.internal", "trace_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "span_id": "a7d1c2e3", "request_id": "9f1c3b2e-4d5f-6a7b-8c9d-0e1f2a3b4c5d", "user_id": "alice", "http": { "method": "POST", "path": ..