반응형

전체 글 160

📡 SSE(Server-Sent Events) 완벽 가이드 — DevOps 관점에서 본 실시간 통신

1. 왜 이 글을 쓰게 되었나현업에서 DevOps 겸 클라우드 엔지니어로 일하다 보면, 개발팀이 “실시간”이라는 요구사항이 있을 때 대부분 SSE(Server-Sent Event)을 쓰거나, 혹은 실시간 양방향 통신을 원할 때는 WebSocket 를 선택하는 경우가 있습니다.따라서, 애플리케이션의 특성과 통신 방식의 장단점을 맞춰야 효율적인 아키텍처를 만들 수 있습니다.최근 우리 팀도 SSE(Server-Sent Events) 통신 방식를 쓰고 있었는데, 정작 개발자들이 “왜 SSE를 쓰는지”, “어떻게 동작하는지” 정확히 몰라서 아키텍처 논의가 힘들었습니다.그래서 이번 글에서는 SSE의 개념, 동작 원리, 장단점, 아키텍처 설계 시 고려사항까지 정리하려 합니다.SSE란 무엇인가?SSE(Server-Se..

Terraform 파일 분리 기반 구조에서 모듈화 구조로 변경

파일 분리 기반에서 모듈화 구조로 바뀌게 된 계기원래는 이미지에 나와있는 것 처럼 모듈을 사용하지 않고, 한 워크스페이스 안에서 리소스별, 기능별로 .tf 파일을 나눠서 관리 하였습니다.그런데 이번에, AWS Secret Manager 리소스를 1개가 아닌 여러개를 사용해야 해서, 변수를 구분하고자, AWS Secret Manager 부분만 모듈화로 변경하였습니다.관련해서 제가 겪었던 경험을 적어보겠습니다.모듈화 파일구조로 변경이전에는 10_secretmanager.tf 파일로 관리를 해주었다면,현재는 파일 구조를 아래와 같이 설정을 해주었습니다./modules ㄴ / ㄴ / main.tf ㄴ / variables_.tfmain.tf 구조 예시resource "aws_secretsmana..

Terraform 2025.08.13

Strimzi Kafka 설치

사전 준비k8s 클러스터helm 설치1. Strimzi-Kafka-Operator 설치저 같은 경우 Helm 차트를 사용해서 Operator 설치를 해주었습니다.설치가 완료되면, Strimzi Operator와 CRD 모두 설치가 됩니다.다만, 업그레이드가 필요한 경우 CRD는 수동으로 적용 시켜주어야 합니다.helm install my-strimzi-kafka-operator oci://quay.io/strimzi-helm/strimzi-kafka-operator --version 0.47.0현재는 최신 버전인 0.47.0 버전으로 설치를 했지만, 이전 버전으로 설치를 했다면 아래와 같이 업그레이들 해주어야 합니다.번외, Upgrade 과정CRD 수동 갱신 (0.35 -> 0.47)kubectl app..

Kafka 2025.08.13

Strimzi kafka 란?

이번 회사에서 Kafka를 사용하게 되어서 알아보게 되었습니다.참고 문서https://strimzi.io/docs/operators/latest/overviewKafka 란?Apache Kafka는 대규모 실시간 데이터 스트리밍 처리 시스템으로, LinkedIn에서 개발되어 현재는 Apache Software Foundation의 오픈소스로 관리되고 있습니다.Kafka는 분산형 메시지 브로커 시스템으로, 실시간 로그 수집, 데이터 파이프라인, 스트리밍 분석 등 다양한 곳에서 사용됩니다.Kafka를 사용하게 된 계기문제 상황현재 Chat 기반 문서 분석 Ai-Agent를 개발하고 있는데, Backend 서버에서 fetch를 통해 AI 분석 서버와 직접 통신이 통신 구조에서 Backend의 힙 메모리 사용량..

Kafka 2025.08.11

Alertmanager <-> Googlechat 으로 알람 보내기

기본적으로 Alertmanager는 기본적으로 Google-chat으로 알림을 보낼 수 없습니다.그러나 현재 회사에서 Google-chat을 사용하고 있어서, Alertmanager에서 발생하는 alert 페이로드를 받아서 설정된 Google-chat 웹훅 엔드포인트로 메시지를 전달해주는 애플리케이션을 생성하였습니다.이제 제가 했던 방법을 설명드리겠습니다.사전 준비k8s 클러스터kube-prometheus-stack 설치Google-chat 스페이스의 webhook 주소1. 코드 clone먼저 calert git clone 해줍니다.git clone https://github.com/mr-karan/calert.git2. go build 실행clone한 디렉터리로 이동 한 후 go build 명령어 실행..

Monitoring 2025.08.11

파드의 실시간 사용량에 따른 오토 스케일링 (KEDA)

사전 준비Prometheus 설치저 같은 경우 helm 차트를 사용하여 kube-prometheus-stack을 설치 해두었습니다.KEDA 설치KEDA 란?KEDA(Kubernetes-based Event Driven Autoscaling)는 Kubernetes에서 이벤트 기반 자동 스케일링(Event-Driven Autoscaling) 을 제공하는 오픈소스 컴포넌트입니다.일반적인 HPA(Horizontal Pod Autoscaler)로는 대응하기 어려운 메시지 큐, Kafka, 데이터베이스 등의 외부 이벤트를 기반으로 파드의 수를 자동 조절할 수 있게 해줍니다.이제 Helm을 사용하여 설치 해보겠습니다.Helm repo 등록helm repo add kedacore https://kedacore.gith..

쿠버네티스 2025.08.06

Apache Kafka 에 대해 알아보기

Apache Kafka 란?Apache Kafka는 고성능의 분산 메시징 시스템으로, 대규모의 데이터를 실시간으로 처리하고 전달하는 데 최적화된 플랫폼 입니다.흔히 실시간 로그 수집, 이벤트 스트리밍, 데이터 파이프라인 구성 등에 사용됩니다.Kafka 구성Kafka는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버 와 클라이언트 로 구성된 분산 시스템입니다. 서버 : Kafka는 하나 이상의 서버로 구성된 클러스터로 실행됩니다. 서버 중 일부는 브로커라고 하는 스토리지 계층을 구성합니다. 다른 서버는 Kafka Connect를 실행하여 이벤트 스트림으로 데이터를 지속적으로 가져오고 내보내 Kafka를 관계형 데이터베이스 및 다른 Kafka 클러스터와 같은 기존 시스템과 통합합니다. Kafka 클러스..

Kafka 2025.08.06

Istio ingressgateway 와 ALB 연결

AWS ALB와 istio의 ingressgateway와 연결해서 사용할 수 있도록 해주겠습니다.방법은 간단합니다. 저 같은 경우에는 istio-ingressgateway를 helm 차트에서 설치를 해주었습니다.helm repo add istio-official https://istio-release.storage.googleapis.com/chartshelm install my-gateway istio-official/gateway -f values.yaml다만, values.yaml 에서 서비스 타입을 기본 LoadBalancer가 아닌 ClusterIP로 설정을 해주었습니다.values.yaml--- service: # Type of service. Set to "None" to disabl..

Monitoring 2025.07.24

Istio, Kiali 설치 및 Prometheus, Grafana 연결 (Using Helm)

Istio는 수 많은 파드와 파드 사이의 트래픽을 관찰 할 수 있는 서비스 메쉬 툴 입니다.https://istio.io/latest/docs/setup/install/helm/https://kiali.io/docs/installation/installation-guide/install-with-helm/Helm 설치 (Mac 사용자)brew install helmhelm 저장소 구성helm repo add istio-official https://istio-release.storage.googleapis.com/charts helm repo updateistio-base 설치helm install my-base istio-official/base --version 1.26.0istiod 설치helm i..

Monitoring 2025.07.24

트래픽 조절하면서 Canary 배포 해보기 (used by Istio)

이번엔 트래픽을 조절하면서 Canary 배포를 해보겠습니다.왜 Canary 배포 + 헤더 기반 트래픽 분기를 도입했는가?기존 방식 (RollingUpdate)의 한계기존 배포 방식(RollingUpdate)은 새 버전의 파드를 조금씩 올리면서 기존 파드를 내림이 과정에서 사용자가 기존 파드에 연결되어 작업 중이면, 세션 끊김/진행 중인 요청 실패/예상치 못한 오류가 발생할 수 있음Canary 배포 전략 도입이러한 문제를 최소화하기 위해, 새 버전의 파드를 일부 트래픽에만 점진적으로 적용초기에 적은 비율만 새 버전으로 넘기고, 문제가 없는지 충분히 관찰→ 장애/버그가 발생해도 전체 서비스에는 영향이 최소화헤더 기반 트래픽 분기 활용추가로, 트래픽에 특정 조건(예: 헤더)을 걸어내부 테스트, 운영자, 베타 ..

Monitoring 2025.07.24
반응형