반응형

전체 글 181

[Go 언어 학습기 #1] Go 언어(Golang) 시작하기: 설치, 환경 설정, 그리고 첫 번째 'Hello, World!

Go 언어 공부하게 된 계기회사에서 AI Gateway를 사용하게 되어서 Bifrost 라는 AI Gateway 플랫폼을 살펴보던 와중,해당 플랫폼이 Go 언어로 작성이 되어서 Go 언어를 공부하게 되었습니다.Go 언어 설치(Mac 환경)터미널에서 아래의 명령어로 설치해주면 됩니다.# 설치 명령어brew install go# 설치확인go versionHello World 찍어보기어떤 언어든 맨 처음 배울 때, Hello World 찍어보는 것은 국룰 인 것 같습니다.우선 터미널에서 hello 폴더를 생성해주고 해당 폴더로 이동해줍니다.mkdir hellocd hello그리고 hello.go 파일을 생성하고 아래와 같이 적어줍니다.vi hello.go---package mainimport "fmt"func..

스터디/Go 15:46:50

AWS Lambda Layer란? Node.js 기반으로 직접 만들어보고 Lambda에서 적용하기

이번엔 Lambda Layer에 대해 알아보겠습니다.Lambda Layer 란 무엇인가?AWS Lambda Layer는 여러 Lambda 함수에서 공통으로 사용하는 라이브러리·패키지·코드·실행 바이너리 등을 분리하여 재사용할 수 있는 기능 입니다.🔥 Layer를 사용하는 이유여러 Lambda에서 같은 패키지를 중복 포함하지 않아도 됨Lambda 함수 ZIP 파일이 가벼워짐배포 속도 개선공통 라이브러리를 한 곳에서 관리 가능아키텍처가 정리되며 유지보수가 쉬워짐💡 Layer가 Lambda에서 로딩되는 경로Node.js의 경우 Layer는 Lambda 실행 환경에서 다음과 같은 경로로 마운트 됩니다./opt/nodejs/node_modules/따라서, Layer ZIP 파일을 만들 때 내부 구조도 node..

AWS 2025.11.13

Github Action에서 Docker Build 시간 줄이기

기존 문제 상황Github Repository에 코드를 올리고 Github Action을 사용해서 Docker 이미지 빌드하고 ECR에 Push 해서 사용을 했는데,매 번 이미지 빌드를 할 때 마다 시간이 너무 오래걸렸음.이에 따라 어떻게 하면 시간이 줄일 수 있는 지 방법을 찾아보다가BuildKit + buildx + GitHub Actions 캐시사용하는 방법을 알게되어 적용 해봤습니다.왜 BuildKit + buildx 캐시를 적용하면 빌드 속도가 빨라질까?Docker 빌드는 내부적으로 여러 단계로 나뉘어 실행이 됩니다.Dockerfile의 각 명령어(FROM, RUN, COPY, ENV 등)는 "레이어(layer)" 라는 형태로 쌓이고,이 레이어들은 모두 해시(hash) 값으로 관리됩니다.기존 빌..

Pipeline 2025.11.12

Kubernetes에 Bitnami PostgreSQL 배포 가이드

이번엔 Bitnami PostgreSQL-HA 설치를 해보겠습니다.사전 준비k8s 클러스터Helm 설치HA(PostgreSQL High Availability)란 무엇인가?PostgreSQL은 기본적으로 단일 노드로 동작하지만, 운영 환경에서는 장애 발생 시 서비스 중단이 발생할 수 있습니다.이를 방지하기 위해 Primary(주 서버)와 Replica(보조 서버)를 구성하여, 장애 시 자동으로 Replica가 Primary로 승격되는 고가용성(High Availability, HA) 구성이 필요합니다.Bitnami의 postgresql-ha 차트는 이러한 HA 구성을 손쉽게 구현할 수 있도록 도와주는 Helm Chart입니다.설치이제부터 설치해보도록 하겠습니다.https://artifacthub.io/p..

쿠버네티스 2025.11.10

S3에 백업된 Prometheus 데이터를 Thanos Query와 Grafana로 조회하기

이전 글에서 Thanos 사용하여 Prometheus가 수집한 데이터를 s3 버킷으로 백업을 시켯습니다.[https://ksh-cloud.tistory.com/184](Prometheus 가 수집한 메트릭 장기간 보관하기 — s3, Thanos)그런데, 이 백업 시킨 과거의 데이터는 그냥 쿼리를 해서 사용을 할 수가 없습니다.이러한 문제를 해결하기 위해, 아래 과정을 거칩니다.Thanos Store Gateway가 S3 블록을 읽어들이도록 설정Querier가 Store Gateway(+Sidecar) 를 “store API”로 붙도록 설정Grafana 데이터 소스를 Querier 로 교체Thanos Store Gateway 란?🎯 “과거 데이터를 다시 쿼리하기 위한 리더(reader)”Thanos St..

Monitoring 2025.11.08

Prometheus 가 수집한 메트릭 장기간 보관하기 — s3, Thanos

Prometheus로 수집한 데이터를 s3로 전송시키려면 Thanos 라는 사이드카를 사용해야 합니다.저는 kube-prometheus-stack Helm 차트를 사용해서 설치를 했기 때문에,Thanos 사이드카를 사용하기 위해 values.yaml 파일에서 내용을 수정해주도록 하겠습니다.사전 준비먼저 prometheus와 연결 시킬 pv가 필요하기 때문에 저는 EKS 클러스터에 ebs-csi-driver를 추가하여 스토리지 클래스를 생성해주었습니다.Prometheus가 수집한 데이터를 저장하기 위한 s3 버킷 생성설정Thanos 사이드카를 포함하도록 values.yaml 설정 변경prometheus: prometheusSpec: disableCompaction: true storage..

Monitoring 2025.11.07

AWS MSK 메트릭 수집 및 모니터링

MSK도 Prometheus와 연결을 하여 메트릭 수집을 할 수 있습니다. 그러기 위해선 먼저 해주어야 할 과정이 있습니다.MSK 모니터링 편집에서 오픈 모니터링 Enable 입니다. AWS 콘솔에 접속해서 MSK 클러스터에 들어 간 후, 우측 상단의 작업 박스를 클릭하고 모니터링 편집 을 클릭해서,아래와 같이 오픈 모니터링 활성화를 해주면 됩니다.그리고 이제 Prometheus 설정에 아래와 같이 추가를 해준 후 적용을 해주면 됩니다.(저 같은 경우 Helm 차트를 이용하여 kube-prometheus-stack을 설치하여 values.yaml 파일에서 설정을 변경해주었습니다.)prometheus: prometheusSpec: additionalScrapeConfigs: - job_na..

스터디/Kafka 2025.11.06

Tempo를 사용하여 Service Graph 만들기

Tempo로 서비스 간 호출 관계(Service Graph)를 시각화 하려면 단순히 Tempo 하나만 설치하면 끝이 아닙니다.Trace → Metric 변환 → Grafana 시각화 의 전체 파이프라인을 이해해야 합니다.아키텍처를 살펴보면 아래와 같습니다.Tempo가 하는 일Tempo는 Trace 저장소 입니다.각 서비스(ex: API 서버, 프론트 등) 에서 발생한 Trace / Span 데이터를 OLTP 포맷으로 받아 저장합니다.Trace = 한 요청의 전체 호출 흐름 (예: Front → API → DB)Span = 각각의 단계 (예: API → DB 호출)Tempo는 이 데이터들을 시계열로 저장하고,Grafana에서 TraceQL로 검색하거나 트리뷰로 볼 수 있습니다.👉 이것이 “분산 트레이싱..

Monitoring 2025.11.05

AI 트래픽을 관리하는 방법: APISIX로 AI Gateway 만들기 - 2편 (설치 및 Custom Plugin 개발)

이전 글을 보고 오시면 이해하기 수월 합니다.AI 트래픽을 관리하는 방법: APISIX로 AI Gateway 만들기 - 1편이번에는 APISIX를 설치해보고 Custom Plugin 만드는 방법에 대해 알아보겠습니다.APISIX 설치저는 쿠버네티스 위에 설치를 진행하여서 Helm 차트로 설치를 하였습니다.설치 명령어helm repo add apisix https://charts.apiseven.comhelm repo updatehelm install apisix apisix/apisix --create-namespace --namespace apisix -f values.yamlvalues.yaml 설정# apisix 파드의 리소스 사용량 설정resources: requests: cpu: 10..

네트워크/APISIX 2025.11.03

Kafka 리플리케이션 완벽 이해: 동작 원리부터 토픽 설정까지

카프카는 브로커 한두 대에서 장애가 발생하더라도 중앙 데이터 허브로서 안정적인 서비스가 운영될 수 있도록 구상되었습니다.이 때 안정성 확보를 위해 카프카 내부에서는 리플리케이션 이라는 동작을 하게 됩니다.리플리케이션 동작 개요카프카에서 데이터는 토픽(topic) → 파티션(partition) 단위로 저장됩니다.각 파티션은 하나의 리더(Leader)와 여러 개의 팔로워(Follower) 복제본으로 구성됩니다.리더(Leader): 실제로 프로듀서와 컨슈머가 읽고 쓰는 주체팔로워(Follower): 리더의 데이터를 동기화(Replication) 하는 복제본, 리더가 장애나면 팔로워 중 하나가 리더로 승격 하게 됩니다.리더와 팔로워가 하는 역할에 대해 좀 더 자세히 알아보면,카프카는 모두 동일한 리플리케이션들을..

스터디/Kafka 2025.10.31
반응형