GitOps를 운영하며 다시 생각해 본 브랜치 전략과 디렉토리 전략
GitOps를 처음 도입하면 자연스럽게 고민하게 되는 것이 있다. DEV, STG, PRD 환경을 Git 저장소에서 어떻게 관리할 것인가? 그리고 어떤 방식이 우리 조직의 운영 방식에 더 적합할까? 처음에는 환경별 브랜치를 사용하는 구조가 가장 직관적으로 보인다. 실...
Thoughts, stories and ideas.
53 posts
GitOps를 처음 도입하면 자연스럽게 고민하게 되는 것이 있다. DEV, STG, PRD 환경을 Git 저장소에서 어떻게 관리할 것인가? 그리고 어떤 방식이 우리 조직의 운영 방식에 더 적합할까? 처음에는 환경별 브랜치를 사용하는 구조가 가장 직관적으로 보인다. 실...
학습이 끝난 LLM 모델을 실시간 추론 요청에 응답할 수 있도록 serving하는 런타임이다. 단순히 를 호출하는 것과 달리, 다수의 동시 요청을 높은 처리량(throughput)과 낮은 지연시간(latency)으로 처리하는 것이 핵심 목적이다. 왜 별도 엔진이 필요한...
왜 로컬 STT가 필요했나 면접을 준비하면서 STAR 기법으로 답변을 작성하고, 실제로 소리 내어 말하는 연습을 하고 있었다. 문제는 녹음한 내 답변을 텍스트로 확인하고 싶을 때 생겼다. 클로바노트나 다글로 같은 SaaS STT 서비스를 쓸 수도 있었지만, 몇 가지 이...
최근 로컬에서 돌릴 수 있는 Vision-Language(VL) 모델들이 빠르게 발전하면서, 내 맥북 한대에서 영수증 OCR을 완전히 로컬로 처리하는 것이 현실적인 선택지가 되었다. 특히 알리바바 모델인 Qwen3-VL-8B는 80억 파라미터의 멀티 모달 모델로, 이미...
1. 왜 Video를 이해하는 AI모델이 필요한가? OTT, 숏폼, 라이브 스트리밍 등 플랫폼이 늘어나면서 제작되는 비디오 양이 폭발적으로 증가하고 있습니다. 이에 따라 현장에서는 세 가지 현실적인 문제가 생깁니다. - 플랫폼별 편집 및 재가공 시간 증가 - 검색과...
1. 왜 '시끄러운 이웃'은 필연적으로 발생하는가? 쿠버네티스 운영의 핵심은 자원 공유(Resource Sharing)입니다. 하지만 공유는 필연적으로 경합(Contention)을 부릅니다. - 발생의 인과관계: 1. 물리 노드 하나에 여러 파드를 배치(Bin Pack...
1. 컨트롤러가 왜 필요한가? 쿠버네티스는 선언적(Declarative) 시스템이다. 사용자는 "nginx 3개를 띄워줘"라고 원하는 상태(Desired State)만 선언하고, 어떻게 할지는 말하지 않는다. API Server는 이 Desired State를 etcd...
--- 개념맵 - 핵심 키워드 연결 --- 1. 인프라 컨테이너 (pause container)란? 정의 - 각 Pod마다 자동 생성되는 숨겨진 컨테이너 - 앱 로직 없이 시스템 콜로 무한 대기만 수행 - Pod 내 컨테이너들이 공유하는 Linux Namespace의...
--- 1. 출발점: 쿠버네티스의 핵심 동작 (Starting point) 쿠버네티스는 오케스트레이션 엔진이다. 핵심 동작은 선언적 모델 — 사용자가 매니페스트(YAML)에 "이런 상태가 되어야 한다"고 선언하면, 시스템이 알아서 맞춰준다. 이 선언은 를 통해 API...
--- 나는 AI와 책 한 권을 놓고 토론했다. 존 아사라프의 『Having It All』. 끌어당김의 법칙에 대한 책이다. 읽고 나서 "이 법칙이 정말 유효한가?"라는 질문이 남았다. 예전이었으면 서평을 찾아보거나 유튜브 해설 영상을 봤을 거다. 이번에는 AI에게 물...
나는 존 아사라프(John Assaraf)의 『Having It All』이라는 책을 읽었다. "더 시크릿"에 출연했던 저자가 쓴 자기계발서. 끌어당김의 법칙. 긍정적인 생각이 긍정적인 현실을 만든다. 솔직히 처음에는 그런 류의 책이라고 생각했다. 우주가 당신의 편이라느...
1. 도커 이미지는 레이어의 스택이다 레이어란? Dockerfile의 명령어(instruction) 하나 = 레이어 하나다. 각 레이어는 이전 레이어와의 차이(diff)만 저장한다. Git 커밋과 유사한 개념이다. 레이어의 크기 레이어의 크기에 상한선은 없다. 으로 5...
AS-IS → TO-BE AS-IS: 기존 훅 () > ❌ 문제: 에 명령어가 직접 노출되어 Claude가 없이 우회 가능 --- TO-BE: 수정된 훅 + 로컬 skill 1. 훅 메시지 수정 2. — Phase 4 추가 > ✅ 결과: 훅 메시지에 우회 방법 없...
1. VM vs 컨테이너: 격리 방식의 차이 | 구분 | VM (가상 머신) | 컨테이너 | | --------- | ---------------------- | ----------------------...
bookmark 페이스북에서 부사장으로 일했던 차마스 팔리하피티야의 인터뷰 영상을 보게 되었다. 거기서 얻은 인사이트가 꽤 강렬했기에, 이 글을 통해 정리하고 공유하고자 한다. 그가 말한 원칙은 다음과 같다. 이 열 가지 원칙은 서로 맥락이 겹치는 부분도 있다. 끊임없...
이력서는 항상 준비를 해야만 하는 것이라고 생각한다. 나중에 몰아서 쓰려고 하면 어떤 것들을 했는지 기억하기 어려우며 자세한 사항을 키워드별로 정리해놓지 않으면 말하는 사람도, 이 것을 보는 사람도 뭘 했다는건지 전달하기 어렵다. 그래서 나는 이력서를 ‘결과물’이 아...
폐쇄망 환경을 미니쿠베에서 구현하기 위하여, 아래와 같은 환경을 구축하였다. 1. 미니쿠베 시작 (Calico CNI) 2. calicoctl 설치 (버전 맞춤) 3. 환경변수 설정 4. GlobalNetworkPolicy 생성 및 적용 5. 테스트 6. 정책 관리 예...
jEnv를 이용한 Java 버전 관리 메뉴얼 1. 개요 는 여러 Java 버전을 시스템에 설치해두고, 전역(global), 디렉터리별(local), 셸 세션별(shell)로 버전을 전환할 수 있는 CLI 도구입니다. macOS에서는 경로에 설치된 JDK를 자동 인식합...
> 목적: Minikube 환경에서 kubelet이 Harbor에서 이미지를 Pull하지 못하는 문제를 해결하기 위한 핵심 가이드. 복잡한 네트워크 아키텍처 설명 대신, 문제 상황과 해법만을 다룸. --- 1. 문제 증상 - Pod는 정상적으로 CoreDNS를 통해...
다음은 앱 소스 레포(app repository)와 앱 매니페스트 레포(app manifest / GitOps 레포)를 분리해 운영할 때의 실전 전략입니다. (Argo CD + Jenkins/GitHub Actions + Harbor 기준, Gitea/내부 레지스트리/...