태그: DevOps
29편
-
GitLab 이슈와 Jira 연동하기 | 마일스톤을 실전에서 관리하는 방법
개발팀은 GitLab, 조직은 Jira를 쓰는 환경에서 커밋과 MR에서 Jira 이슈를 참조하는 연동과 Development Panel이 실제로 해 주는 일과 못 하는 일을 정리합니다. 웹훅 브릿지와 마켓플레이스 커넥터, 마일스톤과 스프린트의 기준 정하기도 다룹니다.
-
팀 빌드 환경 표준화 | 누구나 한 번에 빌드되는 환경을 유지하는 방법
복잡한 빌드 환경에서 "내 컴퓨터에선 되는데" 문제를 없애고, 새 팀원도 한 번의 명령으로 빌드할 수 있는 환경을 유지하는 방법을 정리합니다. devcontainer, CI-로컬 환경 일치, 환경 드리프트 방지 전략을 다룹니다.
-
journalctl로 systemd 로그 읽기: -u·-b·--since 필터, 필드 검색, 디스크 정리, 트러블슈팅
journalctl의 -u·-b·--since·-p 필터와 FIELD=value 필드 검색, -o 출력 포맷을 익히고, journald.conf로 저널 디스크 사용량을 제한하는 방법과 서비스 장애·부팅 지연 원인을 로그로 추적하는 시나리오를 다룹니다.
-
SSH 원격 접속 자주 쓰는 명령어와 실무 팁 | ssh-config·포트포워딩·rsync·tmux
Ed25519 키 생성과 ssh-agent 등록, ~/.ssh/config 별칭과 ProxyJump 배스천 경유, -L·-R·-D 포트 포워딩, scp·rsync·sftp의 쓰임새 차이, tmux로 끊긴 세션을 이어가는 방법까지 매일 쓰는 SSH 명령을 모았습니다.
-
Heroku 이후의 PaaS: Railway와 Fly.io로 Dockerfile 배포, DB 추가, 멀티 리전 비교
Railway는 GitHub 연결과 Dockerfile로, Fly.io는 flyctl과 fly.toml로 백엔드를 배포하는 과정을 나란히 보여줍니다. 환경변수와 Postgres 추가, 커스텀 도메인, Fly 멀티 리전, GitHub Actions 연동, 비용 예측과 배포 실패 트러블슈팅까지 비교합니다.
-
Redpanda: JVM 없는 Kafka 호환 스트리밍, rpk CLI, 스키마 레지스트리, Tiered Storage, 마이그레이션
JVM·ZooKeeper 없이 C++로 구현된 Kafka 호환 브로커 Redpanda를 Docker·Helm으로 띄우고 rpk로 운영하는 법을 다룹니다. 스키마 레지스트리, Tiered Storage, MirrorMaker 2 마이그레이션과 장애 대응도 설명합니다.
-
Nix로 재현 가능한 개발 환경 만들기: flake, devenv, Docker 이미지 빌드, NixOS·Home Manager
Nix와 NixOS 정리. 팀원마다 다른 도구 버전 문제에서 출발해 Nix 설치, flake로 프로젝트 개발 환경 고정, devenv, 패키지와 Docker 이미지 빌드, NixOS와 Home Manager의 선언적 설정을 다룹니다.
-
OpenTofu로 Terraform 옮기기: tfstate 마이그레이션, 모듈 구조, 원격 state, CI와 정책 검증
Terraform에서 OpenTofu로 넘어갈 때의 설치와 tfstate 마이그레이션 체크리스트, 호환되지 않는 부분, S3·DynamoDB 원격 state와 내장 state 암호화, GitHub Actions CI, OPA 정책 검증, SOPS 시크릿 관리를 다룹니다.
-
Kamal 2로 Kubernetes 없이 무중단 배포하기: deploy.yml, kamal-proxy, accessories, 롤백
Kamal 2로 Docker 기반 애플리케이션을 VPS에 무중단 배포하는 방법. deploy.yml 구성, 시크릿 관리, kamal-proxy 리버스 프록시, DB·Redis accessories, SSL, 멀티 호스트, CI/CD와 롤백을 다룹니다.
-
Karpenter로 EKS 노드 오토스케일링: NodePool·NodeClass, Disruption, 스팟 혼합 운영
AWS EKS 노드 오토스케일러 Karpenter 정리. Cluster Autoscaler와의 차이, 설치, NodeClass와 NodePool, Disruption으로 비용 절감, 스팟·온디맨드 혼합 전략, 관측 지표와 보안을 다룹니다.
-
Kubernetes 핵심 오브젝트: Pod, Deployment, Service, ConfigMap·Secret, Ingress, 헬스체크, HPA
Kubernetes로 컨테이너를 운영하는 방법. Pod, Deployment, Service, ConfigMap과 Secret, Ingress, Liveness·Readiness Probe, HorizontalPodAutoscaler, Pod 재시작 문제 해결을 예제로 다룹니다.
-
mise로 nvm·pyenv·asdf 한 번에 대체하기: mise.toml, 자동 활성화, Tasks, 환경 변수
mise(구 rtx) 정리. Node·Python·Go·Ruby·Java 등 런타임과 CLI 도구를 단일 Rust 바이너리로 관리하는 방법, mise.toml, asdf 호환, 자동 활성화, Tasks 실행기, 환경 변수와 Secrets를 다룹니다.
-
Dagger로 CI/CD를 코드로 작성하기: 로컬과 CI에서 같은 파이프라인, 캐시, 모듈
YAML 대신 코드로 CI/CD를 작성하는 Dagger 정리. Go·Python·TypeScript 파이프라인, Functions와 모듈, 캐시, GitHub Actions·GitLab·Jenkins 통합, 로컬과 원격에서 같은 실행을 보장하는 방법을 다룹니다.
-
CI/CD 파이프라인 설계: 아티팩트 캐시, 테스트 병렬화, 블루그린·카나리·롤링 배포
테스트 잡 없이 build에만 needs가 걸린 파이프라인, 락파일과 맞지 않는 캐시처럼 흔한 실패 패턴을 바탕으로 CI DAG 설계, 캐시 키 구성과 PR 캐시 격리, 테스트 샤딩과 플레이크 처리, 블루그린·카나리·롤링 배포와 DB 마이그레이션의 트레이드오프를 설명합니다.
-
컨테이너 오케스트레이션 심화 — 스케줄러·DNS·CNI·스토리지·프로덕션 패턴
Kubernetes·Docker Swarm 내부를 깊이 있게 다룹니다. 스케줄링 프레임워크, CoreDNS·서비스 디스커버리, Flannel·Calico 오버레이, PV/PVC·StorageClass, PDB·토폴로지 분산 등 운영 관점까지.
-
Caddy로 웹 서버 띄우기: 자동 HTTPS, 리버스 프록시, SPA·PHP 설정을 Caddyfile 몇 줄로
Caddy 웹 서버 설정 정리. 자동 HTTPS(Let's Encrypt), 리버스 프록시, 정적 파일 서버, SPA·PHP 설정을 Caddyfile 몇 줄로 구성하고, Nginx와 비교해 어떤 점이 편하고 어떤 점을 챙겨야 하는지 다룹니다.
-
Bash 스크립팅 깊이 보기: 파라미터 확장·서브셸·리다이렉션·trap과 프로덕션 패턴
Bash 파라미터 확장 순서·매개변수 문법·서브셸과 명령 치환·프로세스 치환·FD 리다이렉션(2>&1 순서)·시그널·trap·set -Eeuo pipefail·ShellCheck까지 프로덕션 스크립트 내부 동작을 정리합니다.
-
Terraform 입문: HCL과 모듈, AWS·Azure·GCP 프로바이더, State 백엔드, Workspace 환경 분리
HCL 변수·출력·locals와 모듈 설계, AWS·Azure·GCP 프로바이더 설정, 원격 백엔드와 State 잠금, terraform import, Workspace로 환경 분리하기를 설명합니다. lifecycle·moved 블록과 CI 흐름, 실전 인프라 예제도 담았습니다.
-
Kubernetes 클러스터 보안 강화: RBAC, Pod Security Standards, Network Policy, Secrets, 감사 로그
Kubernetes 클러스터 보안 강화 가이드. RBAC·Pod Security Standards·Network Policy·Secrets·이미지 스캔·Admission Control·감사 로그·실무 체크리스트를 한 번에 정리합니다.
-
Vercel 배포 실전: Git 연동, 환경 변수 실수, Edge vs Node 런타임, ISR, 빌드 실패 대응
Vercel로 배포하는 방법. Git 연동 배포 흐름, 환경 변수 관리와 흔한 실수, Edge Functions와 Node 서버리스 런타임 차이, vercel.json, ISR 캐시 재검증, Analytics, 도메인 연결, 빌드 실패 트러블슈팅을 다룹니다.
-
Sentry로 프로덕션 에러 추적하기: 에러 캡처, 성능 모니터링, Source Maps, 알림, 릴리스 추적
Next.js에 Sentry SDK를 설정해 처리되지 않은 에러와 수동 캡처에 사용자·태그 컨텍스트를 붙이고, 트랜잭션 기반 성능 추적, 빌드 시 Source Maps 업로드, Slack 알림 규칙, CI에서 릴리스를 연결하는 방법을 다룹니다.
-
Render로 서비스 배포하기: Web Service, Static Site, PostgreSQL, Cron Jobs, render.yaml
Render로 앱을 배포하는 방법. Web Service와 Static Site 배포, PostgreSQL, 환경 변수, Cron Jobs, 도메인 설정, render.yaml로 인프라를 코드로 관리하는 방법을 예제로 정리합니다.
-
Nginx 설정과 내부 구조: 이벤트 루프·워커, 리버스 프록시, 로드 밸런싱, SSL, 캐싱
Nginx 이벤트 루프와 워커 프로세스 구조, 설정 블록 상속 규칙을 이해한 뒤 정적 파일 서빙, WebSocket 리버스 프록시, 라운드 로빈·least_conn·ip_hash·일관성 해시 로드 밸런싱, SSL/TLS와 캐싱을 설정합니다.
-
마이크로서비스 설계: 서비스 경계 나누기, API Gateway, 서비스 간 통신, Circuit Breaker, Saga
마이크로서비스 아키텍처 설계 방법. DDD 기반 서비스 분리, API Gateway, 동기·비동기 서비스 간 통신, Service Discovery, Circuit Breaker, Saga 패턴을 이용한 분산 트랜잭션을 예제로 정리합니다.
-
GitHub Actions 워크플로 작성: CI, 배포, Secrets, 조건부 실행, 캐싱, Marketplace 액션
GitHub Actions로 CI/CD를 구축하는 방법. 기본 워크플로, CI와 배포 워크플로, Secrets 관리, 조건부 실행, 의존성 캐싱, Marketplace 액션 활용을 예제로 정리합니다.
-
Docker Compose로 멀티 컨테이너 앱 운영하기: 서비스·네트워크·볼륨, 헬스체크, 프로덕션 설정
프론트엔드, 백엔드, DB, Redis로 이루어진 풀스택 앱을 docker-compose.yml 하나로 띄우고 .env 변수, 커스텀 네트워크, 이름 붙은 볼륨, 헬스체크로 기동 순서를 관리하는 방법을 설명합니다. depends_on의 함정, 여러 -f 파일 병합, 프로덕션 설정도 다룹니다.
-
Docker & Kubernetes 입문 가이드 | 컨테이너부터 오케스트레이션까지
Docker 이미지·컨테이너·Dockerfile·Compose부터 Kubernetes Pod·Deployment·Service까지. 멀티 스테이지 빌드, 헬스체크, 컨테이너 디버깅 순서를 실습 예제로 정리합니다.
-
Docker 멀티스테이지 빌드: 레이어 캐시 순서, BuildKit 캐시 마운트, distroless로 이미지 줄이기
빌드 스테이지와 런타임 스테이지를 나눠 Node.js·Go·Rust·Python 이미지를 가볍게 만드는 Dockerfile 작성법을 예제로 보여 줍니다. 레이어 캐시 순서, BuildKit 캐시 마운트, distroless와 Alpine 선택, COPY --from 실패와 런타임 의존성 누락 같은 문제도 다룹니다.
-
Kubernetes Pod가 안 뜰 때: CrashLoopBackOff·ImagePullBackOff·Pending 원인 찾기
Kubernetes Pod 트러블슈팅. CrashLoopBackOff, ImagePullBackOff, Pending 상태의 흔한 원인과 kubectl logs·describe·events로 원인을 찾는 순서, 실무 체크리스트를 정리합니다.