E2E 테스트를 CI에 안정적으로 붙이기: Playwright 병렬 실행
E2E 테스트는 로컬에서는 잘 도는데 CI에 붙이는 순간 무너지는 경우가 유독 많다. 어제까지 초록불이던 파이프라인이 오늘은 같은 코드로 빨간불이 뜨고, 재실행하면 통과한다. 이 “가끔 실패(flaky)”가 쌓이면…
서버·CI/CD·AI 개발 최적화 실전 노트 — 파이프라인, 인프라, 모델 서빙까지 현장에서 검증한 방법만 기록합니다.
E2E 테스트는 로컬에서는 잘 도는데 CI에 붙이는 순간 무너지는 경우가 유독 많다. 어제까지 초록불이던 파이프라인이 오늘은 같은 코드로 빨간불이 뜨고, 재실행하면 통과한다. 이 “가끔 실패(flaky)”가 쌓이면…
쿠버네티스에서 클러스터 외부 트래픽을 서비스로 흘려보내는 표준은 오랫동안 Ingress였습니다. 그런데 조금만 요구사항이 복잡해져도 Ingress의 한계에 부딪혀 컨트롤러별 애너테이션 지옥에 빠지곤 했습니다. 카나리 배포, 헤더 기반 라우팅,…
추론 서비스를 운영하다 보면 GPU 청구서와 실제 사용률 사이의 간극에 놀라게 됩니다. nvidia-smi는 GPU 사용률 90%를 찍는데 정작 텐서 코어는 놀고 처리량은 기대의 절반에도 못 미치는…
CI 파이프라인이 클라우드에 배포하려면 인증이 필요하다. 가장 흔한 방식은 콘솔에서 장기 액세스 키를 발급받아 CI 시크릿 저장소에 넣어두는 것이다. 처음엔 간단하지만, 시간이 지나면 “누가 언제 발급했는지…
비동기 메시징을 도입하면 거의 필연적으로 “같은 메시지가 두 번 처리됐다”는 사고를 겪습니다. 결제가 두 번 청구되고 재고가 두 번 차감됩니다. 대부분의 브로커가 기본 보장하는 것이 at-least-once(최소…
여러 팀이 각자 프로바이더 SDK를 직접 호출하는 구조로 LLM 애플리케이션이 늘어나면 어느 순간 관리 불가능해집니다. API 키가 코드베이스 곳곳에 흩어지고, 어느 팀이 얼마나 토큰을 쓰는지 아무도…
쿠버네티스의 기본 Deployment는 롤링 업데이트를 제공하지만, 실무에서 배포를 두려워하게 만드는 문제는 여기서 시작된다. 롤링 업데이트는 새 버전 파드를 순차 교체할 뿐 “새 버전이 정말 건강한가”를 판단하지…
E2E 테스트는 로컬에서는 잘 도는데 CI에 붙이는 순간 무너지는 경우가 유독 많다. 어제까지 초록불이던 파이프라인이 오늘은 같은 코드로 빨간불이 뜨고, 재실행하면 통과한다. 이 “가끔 실패(flaky)”가 쌓이면…
CI 파이프라인이 클라우드에 배포하려면 인증이 필요하다. 가장 흔한 방식은 콘솔에서 장기 액세스 키를 발급받아 CI 시크릿 저장소에 넣어두는 것이다. 처음엔 간단하지만, 시간이 지나면 “누가 언제 발급했는지…
쿠버네티스의 기본 Deployment는 롤링 업데이트를 제공하지만, 실무에서 배포를 두려워하게 만드는 문제는 여기서 시작된다. 롤링 업데이트는 새 버전 파드를 순차 교체할 뿐 “새 버전이 정말 건강한가”를 판단하지…
추론 서비스를 운영하다 보면 GPU 청구서와 실제 사용률 사이의 간극에 놀라게 됩니다. nvidia-smi는 GPU 사용률 90%를 찍는데 정작 텐서 코어는 놀고 처리량은 기대의 절반에도 못 미치는…
여러 팀이 각자 프로바이더 SDK를 직접 호출하는 구조로 LLM 애플리케이션이 늘어나면 어느 순간 관리 불가능해집니다. API 키가 코드베이스 곳곳에 흩어지고, 어느 팀이 얼마나 토큰을 쓰는지 아무도…
RAG(검색 증강 생성)를 붙이면 환각(hallucination)이 저절로 사라진다는 기대는 대체로 배신당합니다. 검색으로 관련 문서를 넣어 줘도 모델이 그 문서만 근거로 답한다는 보장은 없기 때문입니다. 모델은 검색된 근거와…
쿠버네티스에서 클러스터 외부 트래픽을 서비스로 흘려보내는 표준은 오랫동안 Ingress였습니다. 그런데 조금만 요구사항이 복잡해져도 Ingress의 한계에 부딪혀 컨트롤러별 애너테이션 지옥에 빠지곤 했습니다. 카나리 배포, 헤더 기반 라우팅,…
비동기 메시징을 도입하면 거의 필연적으로 “같은 메시지가 두 번 처리됐다”는 사고를 겪습니다. 결제가 두 번 청구되고 재고가 두 번 차감됩니다. 대부분의 브로커가 기본 보장하는 것이 at-least-once(최소…
단일 리전에서 안정적으로 돌아가던 서비스도 리전 전체 장애 앞에서는 무력합니다. 가용 영역(AZ) 하나가 죽는 상황은 멀티 AZ 배치로 흡수할 수 있지만, 특정 리전 전체가 네트워크·전원·컨트롤 플레인…