GitLab CI/CD 시리즈 #2: Variables와 Secrets 관리
GitLab CI/CD의 변수 유형과 우선순위, Protected/Masked 변수, 그리고 Vault 연동까지 시크릿 관리 전략을 다룹니다.
GitLab CI/CD의 변수 유형과 우선순위, Protected/Masked 변수, 그리고 Vault 연동까지 시크릿 관리 전략을 다룹니다.
GitOps에서 CI와 CD의 분리, Image Updater, Progressive Delivery(Argo Rollouts, Flagger)를 다루는 시리즈 완결편입니다.
GitOps에서 Secrets를 안전하게 관리하는 방법. Sealed Secrets, External Secrets Operator, SOPS의 동작 원리와 선택 기준을 다룹니다.
Kustomize의 Base/Overlays 패턴, Helm의 values 관리 전략, 그리고 언제 무엇을 선택해야 하는지 실무 관점에서 다룹니다.
Flux의 GitOps Toolkit 아키텍처, Source/Kustomize/Helm Controller의 동작 원리, 그리고 ArgoCD와의 상세 비교를 다룹니다.
ArgoCD의 내부 아키텍처, Application CRD 상세 분석, Sync 전략, 그리고 ApplicationSet으로 멀티 클러스터를 관리하는 방법을 깊이 있게 다룹니다.
GitOps의 4가지 핵심 원칙, Push vs Pull 배포 모델의 차이, 그리고 Kubernetes Controller 패턴과의 연결고리를 깊이 있게 이해합니다.
Pipeline Triggers, Webhooks, API를 통한 외부 시스템 연동, ChatOps, 그리고 GitOps 도구와의 통합을 다룹니다.
rules 조건 분기, needs를 활용한 DAG 실행, Job 템플릿과 extends, !reference 태그까지 고급 Job 제어 기법을 다룹니다.
복잡한 파이프라인을 효율적으로 관리하기 위한 Parent-Child Pipeline, Multi-Project Pipeline, 동적 파이프라인 생성을 다룹니다.
GitLab Runner의 아키텍처와 Executor 유형, Docker-in-Docker(DinD) 설정, Kubernetes Executor 구성을 다룹니다.
GitLab CI/CD의 핵심인 .gitlab-ci.yml 파일 구조, Stages와 Jobs의 관계, Pipeline 실행 흐름을 체계적으로 이해합니다.
RBAC, NetworkPolicy, Pod Security Standards(PSS)까지 Kubernetes 보안의 모든 것을 깊이 있게 다룹니다.
HPA v2, VPA, Cluster Autoscaler, Karpenter, KEDA까지 Kubernetes 오토스케일링의 모든 것을 깊이 있게 다룹니다.
Istio의 VirtualService, DestinationRule, Gateway를 깊이 있게 다루며, 와일드카드 서브도메인 + AWS Route 53/ACM 연동까지 실전 패턴을 알아봅니다.
ConfigMap과 Secrets의 내부 동작부터 AWS Secrets Manager CSI Driver 통합까지, 프로덕션 환경의 설정 관리 전략을 깊이 있게 다룹니다.
ClusterIP, NodePort, LoadBalancer의 내부 동작 원리를 kube-proxy(iptables/IPVS), AWS ALB/NLB 통합과 함께 깊이 있게 이해합니다.
Deployment, StatefulSet, DaemonSet, CronJob의 내부 동작 원리를 깊이 있게 이해합니다. Reconciliation Loop, 컨트롤러 패턴, 그리고 실무 트러블슈팅까지.
왜 백엔드 개발자가 데이터 엔지니어링을 알아야 할까요? OLTP의 한계에서 시작하는 데이터 파이프라인의 세계로 안내합니다.
'Accept interfaces, return structs' 원칙과 포인터 vs 값 수신자 선택 기준을 알아봅니다.
errors.Is, errors.As, 커스텀 에러 타입, 스택 트레이스를 활용한 Go의 효과적인 에러 핸들링 전략을 알아봅니다.
멀티스테이지 빌드로 Docker 이미지 크기를 줄이고, 빌드 속도와 보안을 개선하는 실전 전략을 알아봅니다.
복잡한 Go 명령어들을 Makefile로 추상화하여 팀 전체의 개발 경험을 향상시킵니다. Façade 패턴의 CLI 버전입니다.
Micrometer, Winston에 익숙한 개발자를 위한 Go Observability 가이드. Grafana 대시보드와 Alert 연동까지 다룹니다.
JUnit, Jest에 익숙한 개발자를 위한 Go 테스트 생태계 가이드. Mock, 통합 테스트, BDD 스타일을 다룹니다.
Resilience4j, Polly에 익숙한 개발자를 위한 Go Resilience 패턴 가이드. Circuit Breaker, Retry, Rate Limiting을 올바르게 조합합니다.
Spring의 @Transactional처럼 편리하게 트랜잭션을 관리하는 Go 패턴을 다룹니다. 어노테이션 하나로 해결되던 것을 Go에서 어떻게 구현할까요?
ExecutorService, Worker Threads에 익숙한 개발자를 위한 Go 동시성 모델 가이드. Goroutine의 메모리 특성과 안전한 패턴을 다룹니다.
Java의 ThreadLocal, Node.js의 AsyncLocalStorage에 익숙한 개발자를 위한 Go Context 패턴 가이드입니다.
Spring MVC의 Filter/Interceptor, Express의 Middleware에 익숙한 개발자를 위한 Echo 미들웨어 설계 가이드입니다.
Kubernetes, Docker CLI, Prometheus, Hugo의 소스 코드를 분석하여 도출한 Go 프로젝트 구조 베스트 프랙티스를 소개합니다.
하나의 Proto 정의로 gRPC와 RESTful HTTP API를 동시에 제공하는 gRPC-Gateway 구현 방법을 알아봅니다.
Google의 Wire를 사용하여 Go 애플리케이션에서 컴파일 타임 의존성 주입을 구현하는 방법을 알아봅니다.
Go의 내장 프로파일링 도구 pprof를 활용하여 CPU, 메모리, 고루틴 병목을 분석하는 방법을 알아봅니다.
Ginkgo BDD 프레임워크와 Testcontainers를 결합하여 실제 데이터베이스를 사용하는 신뢰성 높은 통합 테스트를 구축하는 방법을 알아봅니다.
Go의 가비지 컬렉터 동작 원리와 프로덕션 환경에서의 GC 튜닝 경험을 공유합니다.
Buf v2를 활용하여 Protobuf 스키마를 체계적으로 관리하고, gRPC 서버/클라이언트, HTTP Gateway, OpenAPI 스펙을 자동 생성하는 방법을 알아봅니다.
티켓팅, 이벤트 응모, 플래시 세일 등 순간적으로 폭발하는 쓰기 요청을 처리하기 위한 아키텍처 전략을 다룹니다.
Locust를 활용하여 개발부터 프로덕션까지 환경별 E2E 테스트를 자동화하고 Kubernetes에서 실행하는 방법을 알아봅니다.
대용량 트래픽 서버에서 'Too many open files' 오류를 해결하기 위한 ulimit 설정 방법을 알아봅니다.
Helm Chart에서 공통 설정과 환경별 설정을 분리하여 GitOps 방식으로 관리하는 방법을 알아봅니다.
데코레이터를 이용한 Nest.js에서의 AOP 적용 데코레이터? [데코레이터](<obsidian://open?vault=seogyugim.coinone&file=Typescript%2F%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%...
NestJS Dynamic Module 주의점 ```typescript export const databaseProviders = [ { provide: MysqlDatasourceKey, inject: [ConfigService, MysqlConfigS...
NestJS, Cache-Manager v5 사용시 문제 해결법 문제 공식문서에 나온대로 하면 발생 원인 가 로 올라가면서 사용법이 아예...
HTTP 쿠키 보안 설정 [세션 하이재킹과 XSS](https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies%EC%84%B8%EC%85%98_%ED%95%98%EC%9D%B4%EC%9E%AC%ED%82%B9%EA%B...
Http 요청 최소화 기법 뭐가 있을까? 다른 공급자에 대해 HTTP 요구를 수행하는 것은 많은 크롤 프로그램이나 배치 프로그램에서 필요할 수 있지만, 요청 수를 최소화하여 성능을 향상시키고 오류나 타임아웃 위험을 줄이는 것이 중요합니다. HTTP 요청을...
HTTP Transfer 크기를 줄이는 법 종단 간 압축 !종단 간 압축 Accept-...
EADDRNOTAVAIL 문제 상황 node.js 서버 애플리케이션을 리눅스 환경에서 사용중이다. 아래와 같은 에러가 발생했다 ```json { "message": "request to aa failed, reason: connect EAD...
Trunk-Based Development 트렁크 기반 개발은 개발자들이 라고 부르는 단일 브랜치에서 공동 작업을 수행하는 소스 제어 브랜칭 모델이며, 수명이 긴 다른 개발 브랜치를 생성하지 않기 위한 방법입니다. 그러므로 이 방법을 사용하면 병합지옥...