인프라 용어집

인프라 분야의 개념 58개를 한 장에 모았습니다. 검색 노드 메모리 · 구성 드리프트 · 노드 자원 경합 · 덜 찬 색인 라이브 등 — 코드베이스에서 뽑아 뜻과 관계를 정리했습니다.

검색 노드 메모리
한도 = JVM 힙 + 힙 밖 네이티브(~1 GB) + 색인 한 벌의 페이지 캐시. 캐시가 0 이 되면 벡터 파일이 질의마다 디스크에서 올라와 kNN 만 100초대가 된다
구성 드리프트 (configuration drift)
클러스터의 실제 상태가 선언한 파일과 어긋난 상태. 손으로 고친 값이 다음 배포에 사라지거나, 파일만 보고 판단하면 틀린다
노드 자원 경합 (noisy neighbor)
한 노드의 CPU · 메모리를 여러 파드가 동시에 다투는 상태. 단일 노드에서 전 서비스가 한꺼번에 롤아웃되면 부하가 치솟아 프로브와 터널 같은 다른 파드가 굶는다
덜 찬 색인 라이브
재색인 벌크가 도중에 죽었는데 별칭이 새 인덱스로 넘어가 일부 문서만 든 색인이 서비스되는 상태
동기화 소요 시간
동기화 작업이 시작해서 끝나기까지 걸린 시간. 평소 수 분이고, 워치독 기준(20분)을 넘으면 정지로 본다
동기화 워치독
동기화 작업이 정해진 시간 넘게 Running 이면 끊는다. 재시도와 진행 기한은 「실패」만 다루고 「안 끝남」은 못 다뤄서 시간으로 자른다. 막힌 것에 막히지 않게 Argo 가 아니라 설치 스크립트가 직접 배포한다
동기화 정지
동기화 작업이 끝나지도 실패하지도 않고 Running 에 머무는 상태. 한 앱당 작업이 하나라 롤백을 포함한 모든 리비전이 그 뒤에서 기다린다
라이브 인코딩
요청 경로에서 임베딩 모델을 부른다. 지연 예산의 대부분을 먹고, 단건 지연은 파라미터 수보다 토큰 수가 정한다
롤링 업데이트 (rolling update, RollingUpdate, maxSurge, maxUnavailable)
파드를 몇 개씩 새 버전으로 바꿔 끼운다. maxSurge 로 먼저 띄울 수, maxUnavailable 로 먼저 내릴 수를 정하고, 새 파드가 Ready 가 된 뒤에만 다음으로 넘어간다
롤아웃
옛 버전에서 새 버전으로 트래픽을 넘긴다. 넘기는 동안 요청이 실패하지 않게 하는 것, 잘못됐을 때 빨리 되돌리는 것이 핵심이다
배포 순단 (deployment downtime)
버전을 바꾸는 동안 요청을 받을 파드가 비어 503 이 나는 상태. 옛 파드를 먼저 내리거나, 새 파드가 준비되기 전에 트래픽을 받을 때 생긴다
배포 중 오류율
롤아웃 동안 짧은 간격으로 보낸 요청 중 200 이 아닌 응답의 비율. 무중단이면 0 이어야 한다
배포 파이프라인
커밋마다 검사 · 테스트 · 이미지 빌드 · 레지스트리 푸시 · 매니페스트 갱신을 자동으로 돌린다
블루-그린 배포 (blue-green deployment)
같은 크기의 두 환경을 두고, 새 버전을 대기 환경에 다 올린 뒤 트래픽을 한 번에 전환한다. 되돌리기도 전환 한 번이지만 자원이 두 벌 든다
빌드 · 패키징
소스를 모아 실행 가능한 컨테이너 이미지로 만든다. 서브모듈을 먼저 받아야 빌드가 성립하는 모듈이 있다
서비스 메시 (service mesh, Istio, Linkerd, sidecar)
서비스마다 사이드카 프록시를 붙여 재시도·타임아웃·서킷 브레이커·mTLS 를 애플리케이션 코드 밖에서 건다. 이 레포는 쓰지 않고 애플리케이션 라이브러리로 같은 일을 한다
선언형 구성
클러스터가 가져야 할 상태를 파일로 적고, 도구가 실제 상태를 그 파일에 맞춘다. 명령을 순서대로 치는 대신 결과를 선언한다
오버레이 (overlay)
공통 베이스 매니페스트 위에 환경별 차이만 패치로 겹친 층. 배포 형태(k3s-lite · oci-arm · prod-k8s)마다 하나다
오토 스케일러 (HPA, Horizontal Pod Autoscaler, autoscaling)
지표를 보고 인스턴스 수를 자동으로 늘리고 줄인다. 쿠버네티스 HPA 는 '현재 레플리카 × 현재값 / 목표값' 으로 원하는 레플리카 수를 계산하고, behavior 로 늘리고 줄이는 속도를 제한한다
오프라인 배치
실시간 경로 밖에서 미리 계산한다
운영 관측
운영 중 검색이 느려지거나 벡터 레그가 꺼지는지, 노드 메모리가 한도에 닿는지 지표로 지켜본다
원하는 상태 (desired state, 선언 상태)
파일로 선언한, 클러스터가 가져야 할 상태. 컨트롤러는 실제 상태를 이것에 맞추는 루프를 끝없이 돈다
이미지 레지스트리 (container registry, OCIR, imagePullSecrets)
이미지를 올리고 받는 저장소. 이 레포는 OCI 레지스트리(OCIR)에 arm64 이미지를 올리고, 비공개 레지스트리라 파드마다 끌어오기 자격(imagePullSecrets)이 필요하다
인프라 · 배포 (infrastructure, deployment, DevOps)
코드를 이미지로 굽고, 선언한 상태대로 클러스터에 올리고, 트래픽을 받아 살아 있게 유지하는 일. 이 레포는 GitHub Actions 가 Jib 으로 이미지를 굽고 Argo CD 가 단일 노드 k3s 에 GitOps 로 올린다
재색인 건수 게이트
새 인덱스의 문서 수와 벌크 오류율이 하한을 넘을 때만 별칭을 옮긴다
지연 · P99
상위 백분위 지연. 평균은 꼬리를 숨긴다
카나리 배포 (canary release)
새 버전에 트래픽 일부만 보내 오류율 · 지연을 보고, 괜찮으면 비율을 늘린다. 문제가 생겨도 일부 사용자만 영향을 받는다
캐시 적중률 (cache hit ratio, hit rate)
캐시 조회 중 캐시에서 바로 답한 비율. 낮으면 캐시가 비용만 더한다
컨테이너 (containerization, 컨테이너화)
애플리케이션과 의존성을 한 이미지로 묶고, 커널을 공유한 채 프로세스를 격리해 실행한다. 컨테이너는 namespace(보이는 것) 와 cgroup(쓸 수 있는 양) 을 가진 프로세스일 뿐 VM 이 아니다
컨테이너 오케스트레이션 (container orchestration, 쿠버네티스 운영)
여러 컨테이너를 노드에 배치하고, 죽으면 다시 띄우고, 부하에 맞춰 수를 조절한다. 쿠버네티스는 이 일을 선언한 상태와 실제 상태를 맞추는 컨트롤러 묶음으로 한다
컨테이너 이미지 (container image, OCI image)
실행에 필요한 파일 시스템과 실행 명령을 읽기 전용 레이어로 쌓은 산출물. 태그로 버전을 가리키고, 같은 태그를 덮어쓰지 않아야 롤백이 된다
쿠버네티스 (Kubernetes, K8s)
선언한 상태대로 컨테이너를 배치 · 재시작 · 확장하는 오케스트레이터. 이 레포의 managed K8s 배포 형태(prod-k8s)가 표준 쿠버네티스를 전제한다
파드 (Pod)
쿠버네티스가 배치하는 가장 작은 단위. 네트워크와 볼륨을 공유하는 컨테이너 묶음이고, 교체될 때 주소가 바뀐다
페이지 캐시 밀림
힙 밖 익명 메모리가 컨테이너 한도를 채워 색인 파일의 페이지 캐시가 밀리는 상태. 벡터 탐색이 매 질의 디스크를 읽어 수십 초로 느려진다
폴백률
벡터 레그가 꺼져 BM25 만 돈 비율
프로브 (probe, readinessProbe, livenessProbe, startupProbe)
kubelet 이 컨테이너 상태를 묻는 규칙. startup(기동 완료) · readiness(트래픽 수신 가능) · liveness(살아 있음) 셋이고, 주기 · 타임아웃 · 연속 실패 허용치를 갖는다
헬스 체크 (health check, probe)
인스턴스가 살아 있는지(liveness), 요청을 받을 준비가 됐는지(readiness)를 주기적으로 묻는다. 준비 안 된 인스턴스는 트래픽에서 빼고, 죽은 것은 다시 띄운다
호출 한도
원천이 정한 상한. 화면 표기와 실제 한도가 다를 수 있다
Argo CD (ArgoCD)
Git 의 매니페스트를 클러스터에 동기화하는 GitOps 컨트롤러. 이 레포는 main 의 k8s/overlays/oci-arm 을 자동 동기화하고, 변경분만 적용한다
CI/CD (continuous integration, continuous delivery, 지속적 통합, 지속적 배포)
지속적 통합(CI)은 커밋마다 빌드와 테스트를 돌려 깨진 변경을 바로 잡고, 지속적 배포(CD)는 통과한 산출물을 사람 손 없이 배포 대상까지 옮긴다. 이 레포는 바뀐 서비스만 테스트 · 이미지 빌드하고 매니페스트의 이미지 태그를 커밋한다
Cloudflare
사이트 앞단의 DNS · 엣지 프록시 · CDN · WAF. proxied 레코드는 방문자 TLS 를 엣지에서 끝내고 Origin CA 인증서로 오리진에 다시 붙는다. 원래 방문자 IP 는 CF-Connecting-IP 헤더로 넘기고, 터널(cloudflared)로 인바운드 포트 없이 오리진을 붙인다
CPU 사용률
요청한 CPU 대비 실제로 쓴 비율. HPA 의 목표값이자 노드 경합의 신호다
Docker (도커, Dockerfile)
Dockerfile 로 이미지를 굽고 컨테이너를 실행하는 도구. 이 레포는 FE(nginx 정적 서빙)와 비 JVM 이미지를 Dockerfile 로 굽는다
Git 서브모듈 (submodule)
한 저장소 안에 다른 저장소를 커밋 SHA 포인터로 끼워 넣는다. 부모는 파일 내용이 아니라 포인터만 추적하므로, 서브모듈을 먼저 푸시하지 않으면 부모 커밋이 없는 SHA 를 가리킨다
GitHub Actions
저장소 이벤트로 워크플로를 돌리는 CI 러너. 이 레포는 arm64 러너에서 구조 게이트 · 컴파일 · 테스트 · Jib 빌드를 돌린다
GitOps
Git 브랜치를 배포의 단일 원본으로 두고, 클러스터 안의 에이전트가 Git 과 실제 상태를 비교해 끌어와 맞춘다. 배포는 커밋이고 롤백은 되돌리기 커밋이다
IaC (Infrastructure as Code, 코드형 인프라)
인프라 구성을 코드 파일로 정의하고 버전 관리한다. 리뷰 · 되돌리기 · 재현이 코드와 같은 방식으로 된다
Jib
Dockerfile 과 Docker 데몬 없이 Gradle 에서 JVM 이미지를 굽는 플러그인. 의존성 · 리소스 · 클래스를 레이어로 갈라 바뀐 레이어만 다시 올린다
k3s
바이너리 하나로 도는 경량 쿠버네티스 배포판. etcd 대신 kine(sqlite)을 상태 저장소로 쓸 수 있다. 이 레포 운영(oci-arm)은 OCI Ampere A1 무료 범위(4 OCPU · 24GB) 단일 노드 k3s 위에서 돈다
Kafka (Apache Kafka)
파티션 단위로 순서를 지키는 로그형 메시지 브로커. 이 레포는 로컬에서 KRaft 단일 노드로 띄우고(운영 설계안은 Strimzi 3 브로커), 서비스 간 이벤트·명령을 모두 여기로 주고받는다
Kafka Streams
Kafka 토픽을 입력·출력으로 쓰는 JVM 스트림 처리 라이브러리. 별도 클러스터 없이 애플리케이션 안에서 돈다. analytics 가 실시간 지표 집계에 쓴다
Kustomize
템플릿 없이 베이스 매니페스트에 오버레이 패치를 겹쳐 환경별 구성을 만든다. 이 레포는 base → k3s-lite → oci-arm 순으로 겹친다
nori
Lucene 한국어 형태소 분석기. mecab-ko-dic 을 바이너리 사전으로 구워 격자를 깔고 비터비로 최소 비용 분해를 고른다
OpenSearch
검색 엔진. BM25 역인덱스와 HNSW 벡터 색인을 한 색인에 함께 든다
Resilience4j
JVM 장애 내성 라이브러리. 서킷 브레이커·재시도·벌크헤드·레이트 리미터·타임 리미터를 모듈로 나눠 제공하고, 코틀린 suspend 함수도 감싼다. 이 레포는 서킷 브레이커와 레이트 리미터를 쓴다
Spring Boot (Spring, 스프링 부트)
자동 구성과 내장 서버로 Spring 애플리케이션을 바로 띄우는 프레임워크. 이 레포의 모든 JVM 서비스와 폴드 호스트가 이것으로 기동한다
Spring Cloud Gateway
WebFlux 위에서 도는 API 게이트웨이 라이브러리. 라우트 DSL 로 경로 · 필터를 조립하고 WebSocket Upgrade 도 프록시한다
Spring WebFlux (WebFlux)
Reactor 위의 논블로킹 웹 스택. 적은 이벤트 루프 스레드로 많은 연결을 처리한다. 이 레포의 게이트웨이(Spring Cloud Gateway)가 이 위에서 돌고, 서비스의 WebClient 호출도 이것을 쓴다

다른 분류