SQL vs NoSQL — 무엇이 다르고 언제 무엇을 고르나
관계형(SQL)과 NoSQL의 차이를 데이터 저장 방식부터 비교하고, SQLite·Postgres·MongoDB·Firestore가 각각 어디에 속하는지, 댓글 같은 실제 기능엔 무엇이 맞는지 정리했다.
// 가독성과 탐색성을 우선으로, 구현 메모와 기술 문서를 차곡차곡 쌓아가는 프론트엔드 블로그.
Category
Docker, Kubernetes, CI/CD 등 인프라 구축 기록입니다.
All Posts
38개관계형(SQL)과 NoSQL의 차이를 데이터 저장 방식부터 비교하고, SQLite·Postgres·MongoDB·Firestore가 각각 어디에 속하는지, 댓글 같은 실제 기능엔 무엇이 맞는지 정리했다.
서버에서 이벤트가 생길 때 폰으로 즉시 알림을 받고 싶다면 메신저 웹훅이 가장 가볍다. Discord·Slack·Telegram·이메일(Resend)의 무료 웹훅을 셋업 난이도와 코드까지 비교했다.
Prometheus 응답을 uPlot의 AlignedData로 바꾸는 변환과, 명령형 uPlot을 React에 얹는 법. 행 지향 vs 열 지향 데이터 형식 차이, 문자열·타임스탬프 함정, 인스턴스 재생성 원칙을 정리하며 시리즈를 마친다.
빈 서버에서 Prometheus가 도는 상태까지. node_exporter 설치, prometheus.yml 작성, 가장 헤매기 쉬운 name 라벨 함정, targets→graph→API 검증, 브라우저 직접 호출 시의 CORS·인증까지 직접 구축하며 정리했다.
100 - avg by (instance)(rate(...)) 한 줄을 다섯 단계로 분해한다. rate()가 필요한 이유, idle을 뒤집는 발상, 메모리·네트워크 쿼리, query_range의 step과 lookback 차이까지 인터랙티브 시각화와 함께 정리했다.
차트에 찍히는 'CPU 14%'는 어디서 오는가. node_exporter의 /metrics, Counter와 Gauge의 차이, Prometheus의 Pull 모델과 TSDB 저장 구조를 코드 이전의 개념부터 정리했다.
ResourceQuota는 총합을 제한한다. LimitRange는 개별 객체에 기본값을 채우고 상하한을 강제한다. 둘이 짝을 이뤄야 멀티테넌시가 굴러간다.
한 팀이 클러스터 자원을 다 먹어버리는 사고를 막는다. CPU/Memory만이 아니라 Pod 개수, PVC 개수, LoadBalancer 개수까지 제한할 수 있다.
Secret이 base64인 건 암호화가 아니다. etcd 암호화, 외부 KMS 연동, External Secrets Operator까지 — 진짜 안전한 비밀 관리에 필요한 것들을 정리한다.
Docker Swarm의 핵심 개념(Service, Task, Stack)을 정리하고, 왜 결국 Kubernetes로 넘어가게 되는지 실제 프로젝트 경험을 바탕으로 정리했다.
환경별 설정을 컨테이너 이미지에 박아두면 환경마다 이미지를 새로 빌드해야 한다. ConfigMap의 4가지 주입 방식과 hot-reload 가능 여부를 정리한다.
컨테이너 보안의 기초 — non-root 실행, 시크릿 관리, .dockerignore, 이미지 스캔, 리소스 제한까지 초보자도 챙겨야 할 핵심을 정리했다.
PVC는 Pod와 PV 사이의 추상화 레이어다. 사용자는 'NFS인지 EBS인지' 몰라도 '50Gi 필요해'라고 선언만 하면 된다. 바인딩 조건, 확장, StatefulSet 사용 패턴까지 정리한다.
여러 컨테이너를 단일 명령으로 관리하는 docker compose의 구조, 핵심 옵션, 그리고 실무 활용 패턴을 초보자 눈높이로 정리했다.
PV는 단순한 스토리지가 아니라 'Pod의 라이프사이클과 분리된 클러스터 자원'이다. AccessMode, ReclaimPolicy, Phase 같은 개념이 운영에서 어떤 의미를 가지는지 정리한다.
Dockerfile 명령어 전체 정리 — CMD vs ENTRYPOINT, COPY vs ADD, ARG vs ENV의 차이와 레이어 캐시 최적화 패턴까지 초보자 눈높이로 다룬다.
PVC를 만들 때마다 관리자가 PV를 수동으로 만들어줄 수는 없다. StorageClass는 'PVC 들어오면 이런 PV를 자동으로 프로비저닝해라'는 템플릿이다.
컨테이너가 삭제돼도 데이터를 살리는 방법 — bind mount, named volume, tmpfs의 차이와 실무 활용을 초보자 눈높이로 정리했다.
Service만으로 외부 노출하면 LoadBalancer가 서비스마다 하나씩 필요하다. Ingress + Ingress Controller 조합으로 호스트/경로 기반 라우팅을 한 진입점에서 끝낸다.
Docker의 네트워크 모드(bridge, host, none), 컨테이너 간 통신, 포트 매핑 동작 원리를 초보자 눈높이로 정리했다.
Pod는 죽으면 새 IP로 다시 태어난다. 그래서 Pod를 직접 부르면 안 된다. Service의 ClusterIP, NodePort, LoadBalancer, ExternalName 네 타입의 차이와 동작 원리를 정리한다.
컨테이너가 이미지와 어떻게 다른지, docker run 옵션의 의미, 컨테이너 생명주기와 실무에서 자주 쓰는 명령어를 초보자 눈높이로 정리했다.
CronJob은 Job을 직접 실행하지 않는다. 스케줄에 따라 Job 객체를 만들 뿐이다. concurrencyPolicy와 startingDeadlineSeconds를 잘못 쓰면 같은 작업이 중복 실행되는 사고가 난다.
Docker 이미지의 레이어 구조, ID·태그·다이제스트 차이, 그리고 이미지가 어떻게 만들어지고 공유되는지를 초보자 눈높이로 정리했다.
DB 마이그레이션, 배치 처리처럼 '성공할 때까지 한 번만' 실행해야 하는 일에 Job을 쓴다. completions, parallelism, backoffLimit 세 필드의 조합이 핵심이다.
Docker Engine, Daemon, CLI의 관계와 macOS/Windows에서 가상머신이 도는 이유를 초보자 눈높이로 정리했다.
로그 수집, 모니터링 에이전트, CNI 플러그인은 왜 Deployment가 아니라 DaemonSet으로 떠야 하는가. 노드 추가/제거 시 자동 대응 메커니즘과 스케줄링 차이를 정리한다.
CI runner에서 빌드하던 구조를 Dockerfile 멀티스테이지(pruner → installer → runner)로 옮기면서 빌드 시간을 단축한 과정을 정리했다.
Deployment가 알아서 ReplicaSet을 관리해주는데 왜 ReplicaSet을 알아야 할까. 디버깅 시 ReplicaSet을 보는 순간이 반드시 온다.
Deployment가 ReplicaSet을 만들고, ReplicaSet이 Pod를 만든다. 이 한 단계를 더 둠으로써 RollingUpdate, Rollback, History가 가능해지는 구조를 분석한다.
Pod는 단순한 컨테이너 래퍼가 아니다. 같은 네트워크/스토리지 네임스페이스를 공유하는 컨테이너 그룹이라는 정의가 왜 중요한지, init container와 sidecar 패턴이 어떻게 가능해지는지 정리한다.
Namespace는 단순한 폴더가 아니라 RBAC, ResourceQuota, NetworkPolicy의 적용 경계가 된다. 어떤 리소스가 Namespace에 속하고, 어떤 게 클러스터 전역인지부터 정리한다.
kubectl apply 한 번이 어떻게 컨테이너 실행으로 이어지는가. Control Plane의 4개 컴포넌트와 Worker Node의 3개 컴포넌트가 각각 어떤 역할을 맡고, 어떻게 협력하는지 정리한다.
VM과 컨테이너의 차이, 이미지·컨테이너·레지스트리 구조, Dockerfile 작성 방법까지 Docker 핵심 개념을 정리했다.
GitLab CI/CD와 Jenkins의 구조, 파이프라인 작성 방식, 운영 부담을 실제 예시로 비교하고 팀 상황에 맞는 선택 기준을 정리했다.
Jenkins의 핵심 개념과 Declarative Pipeline 작성법, Docker 빌드·배포 자동화까지 실무에서 바로 쓸 수 있는 내용을 정리했다.
컨테이너 오케스트레이션이 왜 필요한지, Kubernetes의 핵심 오브젝트(Pod, Deployment, Service, Ingress)를 실제 예시와 함께 정리했다.
PM2의 핵심 개념과 ecosystem.config.js 작성법, 무중단 배포·자동 재시작·로그 관리까지 실제 운영 환경에서 바로 쓸 수 있게 정리했다.