반응형

전체 글 166

“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (3편: Preview 환경 배포하기)”

“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (1편: 아키텍처)”“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (2편: Helm 차트 구성)”앞선 글과 이어지는 내용 입니다.3편 글에서는 Helm 차트로 만들어준 Preview 환경을 PR이 발생하였을 때, 어떻게 만들어지는지 설명해보겠습니다.Github에서 PR이 발생하면 Argo ApplicationSet 리소스가 해당 PR을 감지하고 Helm 차트를 배포 하는 방식으로 진행 해보겠습니다.Argo ApplicationSet 이란 ?ArgoCD의 Application을 자동화해서 관리할 수 있도록 도와주는 컨트롤러 리소스 입니다.Prview 환경에서 App..

Pipeline 2025.09.16

“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (2편: Helm 차트 구성)”

“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (1편: 아키텍처)”앞선 글과 이어지는 내용 입니다.2편 글에서는 Preview 환경을 Helm 차트로 어떻게 만들었는지 설명해보도록 하겠습니다.Helm 차트를 왜 선택했는가?PR 마다 네임스페이스가 달라지고, 각 어플리케이션 파드 별로 이미지가 달라지는 상황에서 k8s yaml을 일일히 변경하면 비효율적이고, 실수를 하게될 위험이 큽니다.Helm은 템플릿화가 가능해서, PR 번호나 이미지 태그 같은 값을 변수로 넘길 수 있어 변화가 잦은 Preview 환경에 적합하다 생각되어 선택하였습니다.이제 Helm 차트를 어떻게 생성하고 구성했는지 알아보겠습니다.Helm 차트 생성Helm 차트 생성 명령어helm cre..

Pipeline 2025.09.12

“Helm + ArgoCD + ApplicationSet으로 구축하는 PR Preview 환경 (1편: 아키텍처)”

PR Preview 환경을 구성하게 된 이유보통은 Prod / Dev / Test 이렇게 3개 환경을 두고 개발을 하죠.하지만 제가 있는 곳은 스타트업이다 보니 비용 압박 때문에 Prod / Test 딱 두 개만 있었습니다.문제는 여기서 시작됐습니다.Dev 환경이 없다 보니, 개발자분들이 기능을 테스트하려면 Test 환경을 뺏어 써야 했습니다.그러다 보니, QA 팀도 쓰고, 다른 팀도 쓰는데… 개발자가 자기 브랜치 테스트를 위해 올려버리면 Test 환경으로 사용하던 다른 팀원 분들의 동작이 멈추게 됩니다..“이거 왜 안 되지?” 하고 보면, 다른 사람이 방금 테스트 중이던 API가 바뀌어 있던 경험… 다들 해보셨을 겁니다.그러다 알아보던 중, 다른 회사들은 개발자가 PR 올리면 자동으로 Preview 환..

Pipeline 2025.09.11

Karpenter로 EKS에서 Spot 인스턴스 자동 프로비저닝하기

사전 준비EKS 클러스터EKS의 노드그룹Helm1. Karpenter 설치먼저 Karpenter를 설치하기 전, Karpenter-Controller가 사용할 IRSA가 필요합니다.1-1. IRSA 생성을 위한 IAM Role 생성먼저 EKS의 ID 제공업체 확인해줍니다.# 클러스터 정보 확인aws eks describe-cluster \ --name \ --query "cluster.identity.oidc.issuer" \ --output text이제 Role 생성할 때 필요한 신뢰 관계를 json 파일로 만들어 줍니다.cat > role.json :oidc-provider/oidc.eks..amazonaws.com/id/" }, "Action": "sts:AssumeRole..

AWS 2025.09.03

OpenTelemetry Collector 샘플링 튜닝: 원하는 트레이스를 잡아내는 방법

이전 글에서 분산 트레이싱 을 확인하기 위해 OpenTelemetry, Tempo 를 사용해서 구성을 했었습니다.그런데 샘플링 비율을 10%로 설정을 해서 Trace 를 확인하다 보니, 실제로 제가 원하는 Trace 가 보이질 않아서 방법을 찾아보았더니, OpenTelemetry-Collector 에서 원하는 정보는 무조건 Trace 가 찍히도록 하는게 있어서 적용 해보았습니다.이제 실제로 제가 했던 적용 했던 내용을 설명드리겠습니다.원하는 Trace 조건저 같은 경우, 아래와 같은 경우 무조건 Trace가 찍히도록 설정하였습니다.ERROR400, 500 번대 ERROR 발생11초 이상 걸린 작업개발자의 도움 없이 분산 Trace 추적:OpenTelemetry Auto-Instrumentation과 Te..

Monitoring 2025.08.26

개발자의 도움 필요 없이 분산 Trace 추적: OpenTelemetry Auto-Instrumentation과 Tempo 활용법

분산 트레이싱이 필요해진 계기일을 하다보니, K8s 클러스터에서 파드끼리 통신도 하고, 파드 Kafka, SQS에서 message를 받아서 처리하기도 하는데, 실제로 어디서 지연이 발생했는지 파악하기 힘들어서 분산 트레이싱을 통해 원인 파악이 필요하게 되었습니다.아키텍처주요 컴포넌트들을 소개 하자면,OpenTelemetry OperatorKubernetes Operator로서, Collector와 auto-instrumentation(자동 계측)을 관리 합니다.이는 Custom Resource(CRD)를 통해 다양한 언어(Java, Python, Go, Node.js, .NET 등)에 자동 계측을 주입할 수 있습니다.현재 아키텍처에서는 Instrumentation CRD를 이용해 계측 설정을 정의하고,..

Monitoring 2025.08.21

📡 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
반응형