OIDC로 CI 시크릿 없애기: 클라우드 키리스 인증
CI 파이프라인이 클라우드에 배포하려면 인증이 필요하다. 가장 흔한 방식은 콘솔에서 장기 액세스 키를 발급받아 CI 시크릿 저장소에 넣어두는 것이다. 처음엔 간단하지만, 시간이 지나면 “누가 언제 …
서버·CI/CD·AI 개발 최적화 실전 노트 — 파이프라인, 인프라, 모델 서빙까지 현장에서 검증한 방법만 기록합니다.
CI 파이프라인이 클라우드에 배포하려면 인증이 필요하다. 가장 흔한 방식은 콘솔에서 장기 액세스 키를 발급받아 CI 시크릿 저장소에 넣어두는 것이다. 처음엔 간단하지만, 시간이 지나면 “누가 언제 …
왜 kube-proxy가 병목이 되는가 쿠버네티스의 ClusterIP/NodePort 서비스는 기본적으로 kube-proxy가 iptables 규칙으로 구현한다. 문제는 서비스와 엔드포인트가 늘어날…
왜 프로브가 필요한가 컨테이너 프로세스가 살아 있다고 해서 트래픽을 받을 준비가 된 것은 아니다. JVM은 워밍업 중이고, DB 커넥션 풀은 아직 비어 있으며, 마이그레이션이 끝나지 않았을 수 있다…
HOL 블로킹이 왜 문제인가 HTTP/2는 하나의 TCP 연결에서 여러 스트림을 다중화(multiplexing)한다. 애플리케이션 계층에서는 스트림이 독립적이지만, 그 아래 TCP는 바이트 스트림을…
왜 3-way 핸드셰이크가 문제인가 일반적인 TCP 연결은 SYN → SYN-ACK → ACK의 3단계를 거친 뒤에야 데이터를 보낼 수 있다. 즉 실제 요청 바이트를 전송하기 전에 최소 1 RTT(…
왜 ARC가 문제가 되는가 ZFS의 ARC(Adaptive Replacement Cache)는 기본적으로 시스템 물리 메모리를 적극적으로 점유한다. 리눅스에서 ARC는 페이지 캐시와 별개로 커널 슬…
비동기 메시징을 도입하면 거의 필연적으로 “같은 메시지가 두 번 처리됐다”는 사고를 겪습니다. 결제가 두 번 청구되고 재고가 두 번 차감됩니다. 대부분의 브로커가 기본 보장하는 것이 at-least…
CI 파이프라인이 클라우드에 배포하려면 인증이 필요하다. 가장 흔한 방식은 콘솔에서 장기 액세스 키를 발급받아 CI 시크릿 저장소에 넣어두는 것이다. 처음엔 간단하지만, 시간이 지나면 “누가 언제 …
쿠버네티스의 기본 Deployment 는 롤링 업데이트를 제공하지만, 실무에서 배포를 두려워하게 만드는 문제는 여기서 시작된다. 롤링 업데이트는 새 버전 파드를 순차 교체할 뿐 “새 버전이 정말 건…
배포 자동화를 도입하면 코드가 병합되는 순간부터 프로덕션까지 사람 손을 거치지 않고 흘러갑니다. 대부분의 변경에는 이것이 바람직하지만, 결제 로직이나 데이터 마이그레이션처럼 실수의 대가가 큰 배포에…
여러 팀이 각자 프로바이더 SDK를 직접 호출하는 구조로 LLM 애플리케이션이 늘어나면 어느 순간 관리 불가능해집니다. API 키가 코드베이스 곳곳에 흩어지고, 어느 팀이 얼마나 토큰을 쓰는지 아무…
왜 에이전트 디버깅이 어려운가 LLM 에이전트는 같은 입력에도 다른 도구를 다른 순서로 호출한다. 실패가 재현되지 않고, 로그에는 "결과가 이상하다"만 남는다. 근본 원인은 대개 세 가지다. 첫째,…
왜 캐시가 안 맞는가 Anthropic이나 유사한 LLM API의 프롬프트 캐시는 접두사(prefix) 기반 이다. 프롬프트의 맨 앞부터 캐시 브레이크포인트까지의 토큰 열이 바이트 단위로 완전히 동…
왜 kube-proxy가 병목이 되는가 쿠버네티스의 ClusterIP/NodePort 서비스는 기본적으로 kube-proxy가 iptables 규칙으로 구현한다. 문제는 서비스와 엔드포인트가 늘어날…
왜 프로브가 필요한가 컨테이너 프로세스가 살아 있다고 해서 트래픽을 받을 준비가 된 것은 아니다. JVM은 워밍업 중이고, DB 커넥션 풀은 아직 비어 있으며, 마이그레이션이 끝나지 않았을 수 있다…
HOL 블로킹이 왜 문제인가 HTTP/2는 하나의 TCP 연결에서 여러 스트림을 다중화(multiplexing)한다. 애플리케이션 계층에서는 스트림이 독립적이지만, 그 아래 TCP는 바이트 스트림을…