반응형 분류 전체보기921 ArgoCD의 timeout.hard.reconciliation 이란? 이벤트를 놓쳐도 결국 상태를 맞추는 마지막 안전장치Argo CD 를 운영하다 보면 가끔 이런 상황이 발생한다.Git은 정상인데 ArgoCD가 변경을 감지하지 못함실제 리소스가 바뀌었는데 Sync 상태가 그대로임kubectl edit 로 변경했는데 바로 drift 로 안 잡힘selfHeal 이 켜져 있는데도 복구가 늦음이런 현상의 핵심에는ArgoCD의 reconciliation 구조와 cache/informer 기반 동작 방식이 있다.그리고 이를 보완하는 중요한 설정 중 하나가 바로: timeout.hard.reconciliation 이다.reconciliation 이란?ArgoCD에서 reconciliation 은:Git의 desired state 와실제 Kubernetes live state 를 비교하.. 2026. 5. 26. DB 인덱스 완전정복 — 왜 안 만들고, 언제 만들고, 어떻게 만드나 종종 서비스가 느린걸 찾아보면 DB의 테이블에 인덱스가없어서 느린경우가 꽤나 있다.(다중 조인이 문제인경우가 더 많긴하지만)안그런경우도 있는데 DB의 느린이유가 대부분 인덱스 설정을 안한경우가 있어서 그에 대해 포스팅해보려고한다. 개발자들이 인덱스를 안 만드는 이유실무에서 테이블을 만들고 인덱스를 빠뜨리는 일은 생각보다 흔하다. 악의가 있어서가 아니라 몇 가지 구조적인 이유가 있다.1. 기능이 먼저, 최적화는 나중"일단 동작하게 만들고 느려지면 고치자"는 사고방식이 팽배하다. 인덱스는 당장 기능에 영향이 없으니 자연스럽게 뒤로 밀린다. 문제는 "나중"이 잘 오지 않는다는 것.2. 데이터가 적을 때는 체감이 없다10만 건 이하에서는 풀스캔이나 인덱스 스캔이나 응답 속도 차이가 거의 없다. 문제를 겪어.. 2026. 5. 15. GitHub CI/CD 인증 방식 정리 1. 비교표 방식 범위 만료 사용자 의존설정 난이도 주 용도Classic PAT사용자 전체 리포설정 가능 (최대 무제한)강함1분레거시, 빠른 스크립팅Fine-grained PAT선택한 리포만최대 1년강함5분개인 스크립트, 단기 자동화Deploy Key리포 1개영구없음10분단일 서버 ↔ 단일 리포 (read/write)SSH Key (personal)사용자 전체 리포영구강함5분개발자 개인 작업GitHub App설치한 리포 (다수 가능)Installation token 1시간없음1시간+조직 차원 자동화 플랫폼Actions OIDC외부 클라우드 인증 (AWS/GCP 등)단일 workflow 수행시간없음30분GitHub Actions → 외부 클라우드GITHUB_TOKENworkflow가 실행되는 리포단일 .. 2026. 5. 15. 멀티클라우드 리버스 프록시 아키텍처 검토 1. 검토 배경한 클라우드(Azure)의 VPN을 통해 접속한 사용자만 다른 클라우드(AWS)에 배포된 서비스에 접근하도록 제약해야 하는 상황. Site-to-Site VPN은 비용 부담으로 배제. 대안으로 "내부망 리버스 프록시 → 타 클라우드 Public ALB → Private 워크로드" 구조가 제시됨.제안된 구조[사용자 PC] ──(Azure VPN Client)──► [Azure VPN Gateway] │ ▼ [VNet 내부] .. 2026. 4. 20. [Kubernetes]Kyverno 학습 가이드 (처음 시작하는 사람용) 1. Kyverno가 뭔가? (한 줄 답)Kubernetes 클러스터에 "이런 리소스는 허용/금지"를 YAML로 선언하는 경찰관누군가 kubectl apply 하거나 ArgoCD가 sync 하거나 Helm이 install 할 때Kyverno가 "이거 우리 규칙에 맞나?" 검사하고안 맞으면 거부, 맞으면 통과, 필요하면 자동 수정2. 사전 지식: Admission ControllerKyverno를 이해하려면 먼저 k8s가 리소스를 받는 과정을 알아야 합니다.k8s 요청 흐름사용자 kubectl apply ↓kube-apiserver (API 서버) ↓ 1. Authentication (너 누구?) ↓ 2. Authorization (너 이거 할 권한 있어?.. 2026. 4. 20. 면접용 Vault 환경변수 주입 설명 한 문장 요약 (엘리베이터 피치) ▎ "Vault Secrets Operator를 사용해서, Vault에 저장된 시크릿을 자동으로 Kubernetes Secret으로 동기화하고, Pod에 환경변수로 주입하는 구조입니다." --- 단계별 설명 (면접 답변용) "크게 4단계로 동작합니다." 1단계: 시크릿 저장 ▎ "시크릿은 Vault의 KV-v2 엔진에 환경/서비스별로 구조화해서 저장합니다. 예를 들어 secret/prod/myapp/config 경로에 DB 접속정보나 API 키를 넣습니다." 2단계: 동기화 선언 ▎ "VaultStaticSecret이라는 CRD를 선언하면, VSO(Vault Secrets Operator)가 이걸 감시하다가 Vault에서 값을 가져와서 Kub.. 2026. 4. 9. Google TurboQuant 개념 및 원리 정리 1. 왜 TurboQuant가 등장했나LLM이 느려지는 이유는 단순하다.메모리 때문이다 LLM 내부 실제 구조LLM은 토큰을 생성할 때마다KV cache (Key, Value) 를 계속 저장한다.문제토큰 길어질수록 KV cache 증가메모리 사용량 폭증GPU는 계산 못 하고 기다림👉 이걸 “memory wall”이라고 부름 2. 기존 해결 방식의 한계기존에도 압축은 있었다.대표적으로:Vector QuantizationProduct Quantization문제압축하면 → 정확도 깨짐정확도 유지하면 → 메모리 못 줄임 또 하나 중요한 문제:압축하면서 추가 데이터(정규화 값 등)가 필요함 👉 오히려 메모리 다시 증가 3. TurboQuant의 핵심 아이디어“정보를 유지하면서 최소 비트로 표현” 핵심 결과.. 2026. 3. 27. RAG(Retrieval-Augmented Generation) 완벽 이해 — LLM을 실제 서비스에 적용하는 방법 1. 왜 RAG가 필요한가최근 LLM(대형 언어 모델)은 다양한 분야에서 활용되고 있지만, 다음과 같은 한계를 가지고 있다.최신 정보 반영이 어렵다특정 도메인(사내 문서, 제품 정보 등)에 대한 지식 부족그럴듯하지만 틀린 답변을 만드는 환각(Hallucination) 문제이 문제를 해결하기 위한 구조가 바로 RAG다.👉 핵심 개념“모르면 추측하지 말고, 관련 데이터를 찾아서 답하자”2. RAG 정의RAG (Retrieval-Augmented Generation)👉 Retrieval (검색) + Generation (생성)즉,외부 데이터를 검색해서 → 그 데이터를 기반으로 LLM이 답을 생성하는 방식3. 전체 동작 흐름[데이터 준비 단계]문서 → 임베딩 → 벡터 DB 저장[질문 처리 단계]질문 → 임베.. 2026. 3. 17. AWS SDK S3 소켓 누수: Node.js에서 발생하고 Java에서는 안 보이는 이유 들어가며운영 중인 EKS 서비스에서 S3 파일 조회, 이미지 미리보기, 파일 업로드가 동시에 먹통이 되는 장애가 발생했다. Pod 로그를 확인하니 이런 경고가 반복되고 있었다:@smithy/node-http-handler:WARN - socket usage at capacity=50 and 190 additional requests are enqueued.소켓 50개가 전부 점유된 상태에서 190개 요청이 대기열에 갇혀 있었다. 원인은 단 하나의 메서드 — S3 파일 존재 여부를 확인하는 fileExists() 함수였다.이전에 Java로 같은 작업을 했을 때는 이런 문제를 겪은 적이 없었다. 왜 Node.js에서만 이 문제가 발생하는 걸까?문제의 코드// Node.js AWS SDK v3 — 소켓 누수가.. 2026. 3. 9. 200ms latency- 실시간 개인화 시스템 아키텍처 Deep Dive 넷플릭스 앱을 열었다. 화면이 뜨는 순간 "오늘 이거 어때요?"라는 추천이 이미 펼쳐져 있다. 그 0.2초 동안 벌어진 일: 수십만 개의 콘텐츠를 훑고, AI가 점수를 매기고, 결과를 정렬했다. 이 글은 그 0.2초의 비밀에 대한 이야기다.이 글은 NBC유니버설 글로벌 플랫폼 엔지니어링 부사장 Manoj Yerrasani의 ITWorld 기고를 바탕으로, 실전 아키텍처와 코드 레벨의 해설을 더해 구성했다.1. 왜 하필 200ms인가인간의 뇌는 200밀리초 이내의 응답을 "즉각적"으로 인식한다. 이건 UX 감성이 아니라 인지 심리학의 임계값이다. 응답 시간사용자가 느끼는 것 비즈니스 임팩트0~100ms"바로 나왔네"최적의 경험100~200ms"괜찮은데?"수용 가능200~500ms"좀 느린데…"이탈률 증가.. 2026. 2. 26. Azure ACR 이미지 삭제했는데 왜 안 지워질까? — Soft Delete 함정과 스토리지 절약법, 레이어 구조부터 ECR과의 차이 Azure Container Registry의 내부 저장 구조를 이해하고, Soft Delete 함정을 피해 효율적으로 비용을 관리하는 방법들어가며CI/CD 파이프라인을 운영하다 보면 Container Registry에 이미지가 계속 쌓입니다. "일단 빌드 잘 되니까"라고 방치하면, 어느 날 스토리지 비용이 예상보다 높거나, 이미지를 삭제하려는데 CLI가 "성공"이라 하면서 실제로는 삭제되지 않는 황당한 상황을 마주할 수 있습니다.이 글에서는 Azure Container Registry(ACR)를 운영하면서 겪은 실제 경험을 바탕으로:ACR이 이미지를 어떤 구조로 저장하는지*레이어 공유(Layer Deduplication)**가 어떻게 작동하는지Soft Delete 기능이 삭제 작업에 미치는 영향SKU별.. 2026. 2. 25. Docker 사용후 이상하게 용량이 많아 진다? - Docker 컨테이너 로그 관리방법 Docker 컨테이너는 기본적으로 stdout/stderr 출력을 JSON 파일로 저장한다. 별도 설정 없이 운영하면 로그가 무한히 쌓여 디스크를 가득 채우는 주범이 된다.1. Docker 로그 구조로그가 쌓이는 원리컨테이너 stdout/stderr ↓Docker 로그 드라이버 (기본: json-file) ↓/var/lib/docker/containers//-json.log컨테이너 내부에서 console.log(), print(), echo 등으로 출력하는 모든 내용이 이 파일에 JSON 형태로 기록된다.로그 파일 형식{"log":"2026-02-20T07:28:15.123Z INFO Server started on port 8000\\\\n","stream":"stdout","time":".. 2026. 2. 20. 이전 1 2 3 4 ··· 77 다음 반응형