아티클
인프라 학습 가이드
실무에서 자주 막히는 지점과 자격증 준비를 글로 정리합니다. 개념을 직접 손으로 익히려면 해당 트랙으로 이어가세요.
IAM Access Denied 디버깅 — 거부 원인 좁혀가기
IAM에서 Access Denied가 날 때 명시적 거부·경계·정책 평가 순서를 따라 원인을 체계적으로 찾는 실무 절차를 정리합니다.
리전 간 복제 DR — RPO·RTO로 재해복구 설계하기
리전 장애에 대비한 크로스 리전 복제 전략을 RPO·RTO 기준으로 비교하고, 실무 구성과 검증 절차를 정리합니다.
MySQL undo 로그 증가 — 롱 트랜잭션이 디스크를 먹는 이유
커밋 안 한 긴 트랜잭션이 어떻게 undo 로그와 ibdata1을 부풀리는지, 원인 진단과 해결 절차를 실무 명령 중심으로 정리합니다.
illegal mix of collations — 콜레이션 불일치 조인 에러 해결
서로 다른 콜레이션의 컬럼을 조인할 때 나는 illegal mix of collations 에러의 원인과, 근본·임시 해결법을 명령 중심으로 정리합니다.
TCP 윈도우 스케일링과 처리량 — 느린 전송 진단법
회선은 빠른데 단일 TCP 전송 처리량이 안 나올 때. 대역폭·지연(BDP)과 TCP 윈도우 스케일링의 관계, ss와 iperf로 윈도우 한계를 확인하는 법.
nf_conntrack table full — conntrack 가득 참 진단·해결
dmesg에 nf_conntrack: table full, dropping packet이 찍히고 연결이 간헐적으로 끊길 때. 현재 conntrack 사용량 확인부터 nf_conntrack_max 튜닝까지.
ulimit vs systemd LimitNOFILE 차이 — Too many open files
ulimit -n 을 올렸는데도 서비스가 Too many open files로 죽는 이유. 셸 ulimit과 systemd LimitNOFILE이 별개 경로라는 것과, 데몬에 진짜 적용하는 법.
리눅스 iowait 높음 — 디스크 지연 진단법 (iostat·iotop)
CPU는 한가한데 시스템이 느리고 top의 wa(iowait)만 치솟을 때. iostat의 await로 디스크 지연을 확인하고, iotop으로 범인 프로세스를 찾는 단계별 진단법.
docker compose scale로 서비스 복제·스케일 하기
docker compose로 한 서비스의 인스턴스를 여러 개 띄우는 방법. --scale 플래그와 deploy.replicas, 포트 충돌 회피, 로드밸런싱까지 실전 명령 중심으로 정리.
Docker buildx 레지스트리 캐시로 CI 빌드 가속하기
CI에서 매번 처음부터 빌드되는 느린 도커 빌드를, buildx의 registry 캐시 백엔드로 레이어를 레지스트리에 저장·재사용해 가속하는 방법. cache-from/cache-to와 mode=max 설명.
PodDisruptionBudget으로 가용성 보장 — Kubernetes PDB 설정
노드 드레인·롤링 업데이트 중 Pod가 한꺼번에 내려가 서비스가 끊기는 문제를, PodDisruptionBudget으로 최소 가용 Pod 수를 지키는 방법. minAvailable·maxUnavailable 선택 기준 포함.
HPA 플래핑 안정화 — 잦은 스케일링 멈추는 법
HorizontalPodAutoscaler가 Pod 수를 늘렸다 줄였다 반복하는 플래핑(flapping) 현상의 원인과, stabilizationWindow·behavior 정책으로 안정화하는 방법. kubectl 진단 포함.
VPC 엔드포인트 — 인터넷 없이 AWS 서비스 프라이빗 접근
VPC 엔드포인트로 S3·DynamoDB나 다른 서비스에 인터넷을 거치지 않고 접근하는 법. 게이트웨이형과 인터페이스형의 차이와 구성 순서를 정리합니다.
스팟 인스턴스 활용 — 비용 절감과 중단 대응 설계
스팟 인스턴스로 최대 90% 비용을 아끼면서 갑작스러운 중단에 견디는 워크로드 설계, 중단 알림 처리와 온디맨드 혼합 전략을 정리합니다.
외래키 고아 레코드 — 참조 무결성 점검과 정리
외래키 없이 운영된 테이블에 쌓인 고아 레코드를 찾아내고, 안전하게 정리한 뒤 FK 제약으로 재발을 막는 실전 순서를 정리합니다.
MySQL 갭 락·넥스트키 락 — 데드락과 잠금 대기 진단
MySQL 갭 락과 넥스트키 락이 왜 없는 행까지 잠그는지, REPEATABLE READ에서 데드락이 생기는 원리와 진단·완화 방법을 정리합니다.
TIME_WAIT 소켓이 너무 많을 때 — 원인과 대처
ss로 보면 TIME_WAIT 소켓이 수만 개. 포트 고갈로 연결이 실패하는 상황의 원인과 tcp_tw_reuse·keepalive로 푸는 법. TIME_WAIT를 무작정 줄이면 안 되는 이유까지.
keepalived VIP 설정 — VRRP로 페일오버 구성하기
keepalived로 두 서버가 하나의 가상 IP(VIP)를 공유하고, MASTER 장애 시 BACKUP이 자동으로 VIP를 가져가는 페일오버 구성법. keepalived.conf 핵심 설정과 검증까지.
systemd 메모리 제한 — cgroup으로 서비스 리소스 묶기
특정 서비스가 메모리·CPU를 독식해 서버 전체가 느려질 때, systemd의 cgroup 통합으로 MemoryMax·CPUQuota를 거는 법. set-property로 즉시 적용까지.
inode 부족, 공간 있는데 no space 에러 나는 이유
df는 용량이 남았다는데 No space left on device가 뜬다면 inode 고갈입니다. df -i로 확인하고, 작은 파일이 몰린 디렉터리를 find로 추적해 정리하는 법.
도커 컨테이너 로그 로테이션 — json-file max-size 설정
디스크를 가득 채우는 컨테이너 로그를 json-file 드라이버의 max-size·max-file로 제한하는 법. 데몬 전역 설정과 컨테이너별 설정까지.
docker compose override로 환경별 구성 분리하기
개발·운영 설정을 if 분기 없이 깔끔하게 나누는 법. compose override 파일의 자동 병합 규칙과 환경별 파일 조합 패턴.
쿠버네티스 Job backoffLimit — 재시도 제어와 실패 처리
Job이 무한 재시도로 Pod를 쌓거나 한 번에 죽어버리는 문제를 backoffLimit·restartPolicy·activeDeadlineSeconds로 제어하는 실전 설정.
쿠버네티스 Pod Evicted — 노드 압박 원인과 복구 (kubectl)
Pod가 Evicted 상태로 쌓이는 진짜 원인은 노드의 메모리·디스크 압박입니다. kubectl로 압박 신호를 읽고, 정리하고, 재발을 막는 법.
클라우드 태깅 비용 배분 — 팀별 청구 가르기
리소스 태그로 누가 얼마를 썼는지 가르는 비용 배분 전략. 태그 표준·비용 배분 태그 활성화·강제 적용 방법을 정리합니다.
ACM 인증서 갱신 — 클라우드 TLS 관리 한눈에
ACM으로 발급한 인증서가 왜 자동 갱신에 실패하는지, DNS 검증과 갱신 조건·점검 순서를 실무 관점으로 정리합니다.
InnoDB buffer pool 튜닝 — 크기와 히트율 잡기
InnoDB 버퍼풀이 왜 성능의 핵심인지, 적정 크기 산정과 히트율 진단으로 디스크 I/O를 줄이는 방법을 정리합니다.
MySQL binlog 디스크 정리 — expire로 폭증 막기
바이너리 로그가 쌓여 디스크가 꽉 차는 문제를 expire_logs_days·PURGE로 안전하게 정리하고 자동화하는 방법을 정리합니다.
TCP 재전송·패킷 손실 진단 — ss와 netstat로 추적
응답이 간헐적으로 느릴 때 TCP 재전송과 패킷 손실을 의심하는 법. ss -ti의 retrans 값과 netstat -s 통계로 어디서 손실이 나는지 좁히는 진단 순서.
DoH·DoT 차이 — 암호화 DNS 이해하고 확인하기
DNS over HTTPS와 DNS over TLS가 일반 DNS와 무엇이 다른지, 포트와 동작 방식 비교부터 dig +https로 직접 질의를 보내 확인하는 법까지.
리눅스 tmp 자동 삭제 — systemd-tmpfiles로 /tmp 정리하기
/tmp가 계속 차서 디스크가 부족할 때, systemd-tmpfiles로 오래된 임시 파일을 자동 정리하는 법. 설정 파일 작성부터 --clean 테스트, 타이머 확인까지.
sudoers NOPASSWD 설정 — 안전하게 비밀번호 없이 sudo
배포 스크립트나 CI에서 sudo 비밀번호 입력이 막힐 때, NOPASSWD를 특정 명령에만 제한해 안전하게 거는 법. visudo 문법 검증과 흔한 실수까지.
distroless 이미지로 더 작고 안전하게 — 셸 없는 컨테이너
distroless는 셸·패키지매니저 없이 앱과 런타임만 담은 베이스 이미지입니다. 공격면을 줄이고 크기를 낮추는 원리와 멀티스테이지 적용, 디버깅 트레이드오프까지.
도커 바인드마운트 권한 문제 해결 — UID/GID 정렬하기
바인드마운트한 파일이 Permission denied로 막히는 진짜 이유는 호스트와 컨테이너의 UID/GID 불일치입니다. --user, chown, 네임스페이스로 정렬하는 법.
쿠버네티스 CPU 스로틀링 진단 — limits와 CFS quota의 함정
Pod가 CPU를 다 안 쓰는데도 느리다면 CPU 스로틀링입니다. cgroup의 CFS quota가 어떻게 컨테이너를 조이는지, throttled_periods로 진단하고 limits를 고치는 법.
쿠버네티스 DNS 해석 실패 진단 — CoreDNS 트러블슈팅
Pod에서 서비스 이름이 안 풀리거나 외부 도메인 조회가 느리다면 CoreDNS 문제입니다. ndots, search 도메인, NXDOMAIN을 nslookup으로 좁혀 해결하는 법.
WAF 설정 기초 — 웹 공격을 입구에서 막는 법
SQL 인젝션·XSS 같은 웹 공격을 애플리케이션 앞단에서 거르는 WAF의 동작 원리와 관리형 규칙·커스텀 규칙·레이트 제한 설정 기초.
Route53 라우팅 정책 — 가중치·지연·장애조치 정리
같은 도메인을 트래픽 비율·지연 시간·헬스체크에 따라 다른 서버로 보내는 클라우드 DNS 라우팅 정책의 종류와 선택 기준.
MySQL 복제 설정 — 소스-레플리카 구성 단계별 정리
읽기 부하를 분산하고 장애에 대비하는 MySQL 소스-레플리카 복제를 binlog부터 CHANGE REPLICATION SOURCE까지 단계별로 구성하는 법.
MySQL wait_timeout 끊김 — 커넥션 타임아웃 잡는 법
잘 돌던 앱이 잠잠하다 갑자기 'connection reset'을 뱉는다면 wait_timeout이 범인일 수 있습니다. 끊김 원인 진단과 커넥션 풀 설정으로 해결하는 법.
TLS handshake failure 진단 — 버전·cipher 협상 실패
handshake failure는 클라이언트와 서버가 공통 TLS 버전이나 cipher를 못 찾았다는 신호다. openssl s_client로 버전·암호군을 하나씩 끊어 원인을 좁히는 법.
CORS 에러 해결 — 콘솔 메시지로 원인 진단하기
브라우저 콘솔의 CORS 에러는 서버가 Access-Control-Allow-Origin을 안 줬다는 신호다. preflight·credentials·와일드카드 함정까지 메시지별로 원인을 좁히는 법.
리눅스 시간 동기화 문제 해결 (chrony·NTP)
서버 시계가 틀어지면 인증서·로그·DB 복제가 줄줄이 깨진다. timedatectl로 상태 보고 chronyc sources로 NTP 동기화를 진단·복구하는 실전 절차.
bash 스크립트 흔한 함정과 set -e 안전 설정법
bash 스크립트가 에러를 무시하고 계속 돌아 사고를 키우는 이유. set -euo pipefail로 실패를 즉시 멈추고, 변수 오타·파이프 실패까지 잡는 방어적 작성법.
Docker latest 태그 문제 — 안전한 이미지 태그 전략
latest 태그가 일으키는 배포 불일치·롤백 불가 문제와, 불변 태그·시맨틱 버전·다이제스트 고정으로 바꾸는 실전 태그 전략.
Docker Compose healthcheck로 기동 순서·대기 처리하기
DB가 다 뜨기 전에 앱이 붙어 죽는 문제를 Compose healthcheck와 depends_on condition으로 해결하는 법. 설정·확인 명령과 흔한 함정까지.
Kubernetes 롤링 업데이트와 롤백 안전하게 하는 법
무중단 배포를 위한 쿠버네티스 롤링 업데이트 전략. maxSurge·maxUnavailable 설정, 진행 확인, 실패 시 즉시 롤백하는 kubectl 명령까지.
Kubernetes ResourceQuota·LimitRange로 네임스페이스 제한하기
한 팀이 클러스터 자원을 다 써버리는 사고를 막는 ResourceQuota와 LimitRange 설정법. 적용·확인 명령과 흔한 거부 에러까지.
보안그룹 vs NACL 차이 — 둘을 언제 쓰나
AWS 보안 그룹과 네트워크 ACL의 차이를 stateful·적용 단위·규칙 기준으로 정리하고, 실무에서 둘을 어떻게 조합해 설계하는지 다룹니다.
CloudWatch 로그·알람 — 모니터링 한 번에 잡기
AWS CloudWatch의 메트릭·로그·알람 세 축을 구분하고, 지표 알람과 로그 기반 알람을 설정해 장애를 먼저 알아채는 법을 정리합니다.
MySQL 임시 테이블, 디스크로 새는 것 막기
MySQL 임시 테이블이 메모리에서 디스크로 넘어가는 원인과 진단법. Using temporary·tmp_table_size 점검과 쿼리 개선으로 디스크 I/O를 줄입니다.
EXPLAIN ANALYZE 보는 법 — 실제 실행시간 읽기
MySQL EXPLAIN ANALYZE로 추정이 아닌 실제 실행시간을 읽는 법. actual time·rows·loops와 추정 대비 실제 오차로 병목을 찾습니다.
WebSocket 연결 문제 진단 — 끊김·426 에러 원인 추적
WebSocket이 연결 안 되거나 자꾸 끊길 때 진단법. 426 Upgrade Required의 의미, Upgrade·Connection 헤더 점검, 프록시 타임아웃과 핸드셰이크 흐름.
HTTP 4xx·5xx 디버깅 — 502 504 차이부터 원인 추적까지
HTTP 상태코드로 어디서 막혔는지 읽는 법. 502 504 차이, 4xx와 5xx의 책임 구분, 리버스 프록시 뒤에서 진짜 원인을 좁히는 진단 순서.
too many open files 해결 — 파일 디스크립터 한도 늘리기
too many open files 에러의 원인인 파일 디스크립터 한도를 진단하고 늘리는 법. ulimit -n으로 확인, lsof로 범인 추적, limits.conf와 systemd로 영구 상향.
journalctl 사용법 — systemd 로그 조회·필터링·관리
journalctl로 systemd 서비스 로그를 보는 법. -u로 서비스별, -p로 우선순위, --since로 시간 범위, -f로 실시간 추적, vacuum으로 용량 관리까지.
Docker Compose depends_on과 기동 순서 함정
docker compose depends_on이 기동 순서는 정하지만 준비 완료는 보장하지 않는 이유. healthcheck와 condition으로 DB가 뜬 뒤 앱을 띄우는 법.
Dockerfile build ARG로 멀티환경 이미지 만들기
ARG와 build-arg로 베이스 버전·환경별 설정을 빌드 시점에 주입하는 법. ARG와 ENV 차이, 시크릿을 ARG에 넣으면 안 되는 이유까지 실전 정리.
쿠버네티스 Pod Affinity·안티어피니티로 배치 제어하기
파드를 같은 노드에 모으거나 분산시키는 affinity·anti-affinity 사용법. required와 preferred 차이, topologyKey, 흔한 Pending 함정까지 실전 정리.
쿠버네티스 DaemonSet — 노드마다 파드 1개씩 띄우기
DaemonSet으로 모든 노드에 로그·모니터링 에이전트를 한 개씩 배치하는 법. Deployment와의 차이, 노드 선택, 롤링 업데이트, 트러블슈팅까지.
VPC 피어링으로 네트워크 연결 — 사설망 직접 통신
두 VPC를 사설 IP로 직접 잇는 VPC 피어링의 동작과 한계. CIDR 중복·전이 불가 같은 함정과 구성 순서를 실무 관점으로 정리합니다.
NAT 게이트웨이와 프라이빗 서브넷 — 안전하게 외부로 나가기
프라이빗 서브넷의 인스턴스가 인터넷 게이트웨이 없이 외부로 나가는 법. NAT 게이트웨이 동작과 IGW·NAT 차이, 비용 함정을 정리합니다.
MySQL JSON 컬럼 활용과 인덱싱 — 언제 쓰고 어떻게 빠르게
MySQL JSON 컬럼의 저장·조회·인덱싱 방법. 생성 컬럼으로 인덱스를 태우는 법과 JSON 컬럼을 쓰면 안 되는 경우까지 정리합니다.
auto_increment 갭·건너뜀, 왜 생기고 괜찮은가
MySQL auto_increment ID가 중간중간 비는 원인과, 롤백·삭제·재시작 시 동작. 갭을 메우려다 더 위험해지는 이유까지 정리합니다.
프록시 vs 리버스 프록시 차이 — 한눈에 정리
포워드 프록시와 리버스 프록시는 무엇을 대신하느냐가 다릅니다. 누구를 가리고 누구를 보호하는지, 실무에서 언제 무엇을 쓰는지 명확히 정리.
TCP keepalive 설정과 timeout 튜닝 실전 가이드
연결이 끊긴 줄도 모르고 매달려 있는 좀비 커넥션을 막는 법. TCP keepalive 파라미터, 애플리케이션 timeout, 둘을 함께 맞춰야 하는 이유.
SIGTERM과 SIGKILL 차이 — graceful shutdown 이해하기
kill이 보내는 시그널의 정체. SIGTERM과 SIGKILL의 결정적 차이, graceful shutdown이 왜 중요한지, 프로세스가 안 죽을 때 단계적으로 종료하는 법.
find·grep 사용법 — 파일과 로그 빠르게 찾기
find로 파일을 조건별로 찾고 grep으로 로그 안의 패턴을 잡는 법. 이름·시간·크기 필터, 재귀 검색, find와 grep을 조합하는 실전 패턴까지.
docker system prune — 디스크 정리, 안전하게 하는 법
디스크가 꽉 찼을 때 docker system prune으로 정리하는 법. 무엇이 지워지는지, --volumes의 위험, 실수로 DB 데이터를 날리지 않는 안전한 순서를 정리.
Dockerfile ENTRYPOINT vs CMD 차이 — 헷갈리지 않게 정리
ENTRYPOINT와 CMD가 헷갈려 컨테이너 실행 인자가 무시되거나 덮어써지는 문제. 둘의 역할, exec/shell 형식, 조합 패턴, 오버라이드 규칙을 실전 정리.
쿠버네티스 StatefulSet — 안정적 스토리지·순서 보장 정리
Deployment로는 안 되는 DB·메시지큐를 StatefulSet으로 돌리는 이유. 고정된 Pod 이름, PVC 자동 생성, 순차 기동·종료, Headless Service까지 실전 정리.
쿠버네티스 ServiceAccount — 토큰과 권한 제대로 쓰기
Pod가 쿠버네티스 API에 접근하는 정체성, ServiceAccount. default SA의 위험, 토큰 자동 마운트, RBAC 연결, 권한 최소화까지 실전 정리.
S3 수명주기 정책으로 스토리지 비용 절감하기
오브젝트 스토리지 비용이 계속 늘어나는 원인을 짚고, S3 수명주기 정책으로 스토리지 클래스 전환·만료를 자동화해 비용을 줄이는 법.
IAM 역할 vs 사용자, 언제 무엇을 써야 하나
AWS IAM 역할과 사용자의 차이를 자격증명 방식·수명 관점에서 정리하고, EC2·서비스 간 권한은 왜 역할로 줘야 하는지 실무 기준으로 설명합니다.
외래키 락·잠금 대기, 원인과 해결법 (MySQL)
외래키가 걸린 테이블에서 INSERT·UPDATE가 멈추거나 락 대기 타임아웃이 나는 원인을 정리하고, 잠금 충돌을 진단·해소하는 법.
MySQL utf8mb4로 한글·이모지 깨짐 해결하기
MySQL에서 한글이 ???로 깨지거나 이모지 저장이 실패하는 원인을 문자셋·콜레이션으로 정리하고 utf8mb4로 안전하게 전환하는 법.
TLS 핸드셰이크 과정 이해 — openssl로 단계별 확인하기
HTTPS 연결이 느리거나 인증서 오류가 날 때 보는 TLS 핸드셰이크. ClientHello부터 키 교환·인증서 검증까지 단계를 openssl s_client로 직접 확인하는 법.
DNS 레코드 종류 정리 — A·CNAME·MX·TXT 차이와 dig 확인법
도메인이 엉뚱한 곳을 가리키거나 메일이 안 갈 때 보는 DNS 레코드. A·AAAA·CNAME·MX·TXT가 각각 무슨 역할인지, dig로 레코드별 확인하는 법.
리눅스 사용자 권한 관리 — 그룹·sudo·파일 권한 정리
Permission denied가 떴을 때 누가 어떤 권한을 가졌는지 추적하는 법. id로 소속 확인, usermod로 그룹 추가, visudo로 sudo 부여, chmod/chown으로 파일 권한까지.
리눅스 swap 설정과 OOM 완화 — swapon·swappiness 정리
메모리가 부족해 OOM Killer가 프로세스를 죽일 때 swap으로 완충하는 법. swap 파일 생성, swapon 활성화, swappiness 조정, 영구 등록까지 단계별로.
도커 네트워크 모드 — bridge·host·none 차이와 선택 기준
컨테이너 통신이 안 될 때 먼저 봐야 할 네트워크 모드. bridge·host·none이 무엇을 다르게 하는지와 상황별 선택 기준.
도커 빌드 시크릿 누출 막기 — --secret 제대로 쓰기
ARG·ENV·COPY로 토큰을 넣으면 이미지 레이어에 영구히 남습니다. BuildKit --secret으로 빌드 중에만 시크릿을 노출하는 안전한 방법.
liveness readiness 차이 — 쿠버네티스 프로브 제대로 쓰기
liveness와 readiness 프로브가 무엇을 다르게 판단하는지, 잘못 설정했을 때 생기는 재시작·트래픽 문제를 실제 증상으로 구분하는 법.
쿠버네티스 init container 활용과 멈춤 디버깅 실전
메인 컨테이너보다 먼저 실행되는 init container의 쓰임새와, Init:0/1 상태에서 Pod가 멈췄을 때 원인을 좁혀 해결하는 법.
블루그린 배포 — 무중단 릴리스와 즉시 롤백 설계
구버전(블루)과 신버전(그린)을 나란히 띄우고 트래픽을 한 번에 전환하는 블루그린 배포. 롤링·카나리와의 차이와 전환 단계를 정리합니다.
가용영역 설계 — 멀티 AZ로 장애 격리하기
단일 AZ에 몰아둔 인프라가 데이터센터 장애에 통째로 죽는 문제를 막는 가용영역 설계. AZ·리전 개념과 멀티 AZ 적용 단계를 정리합니다.
무중단 스키마 변경 — gh-ost·pt-osc로 ALTER 안전하게
운영 중인 MySQL에서 ALTER TABLE로 테이블이 잠기는 사고를 피하는 법. gh-ost·pt-online-schema-change의 동작 원리와 적용 단계를 정리합니다.
캐시 무효화 전략 — 쓰기 시점 갱신과 TTL 설계
캐시와 DB가 어긋나는 stale 데이터 문제를 막는 캐시 무효화 전략. write-through·invalidate·TTL의 차이와 선택 기준을 정리합니다.
리눅스 포트포워딩 설정 — NAT·iptables로 트래픽 넘기기
외부에서 들어온 요청을 내부 서버나 다른 포트로 넘기고 싶을 때. iptables NAT 테이블로 DNAT을 설정하고 동작을 확인하는 법.
iperf 대역폭 측정 — 두 서버 사이 실제 속도 재기
느린 게 네트워크 탓인지 애플리케이션 탓인지 가르려면 회선 자체를 재야 합니다. iperf3로 서버·클라이언트를 띄워 실제 대역폭을 측정하는 법.
systemd timer 설정 — cron 대체하기 (.timer·.service)
cron은 실행 로그도, 실패 추적도 약합니다. systemd timer로 예약 작업을 만들고 journalctl로 로그를 보며 안정적으로 운영하는 법.
linux sysctl 튜닝 — 네트워크·파일핸들 커널 파라미터 잡기
트래픽이 몰리면 too many open files, 연결이 쌓이면 SYN drop. sysctl로 파일핸들과 네트워크 커널 파라미터를 안전하게 조정하고 영구 반영하는 법.
도커 buildx 멀티아키텍처 빌드 — arm64·amd64 한 번에
M1 맥에서 빌드한 이미지가 운영 서버에서 안 도는 문제를, buildx로 amd64·arm64 멀티아키텍처 이미지를 한 번에 만들어 해결하는 법.
Docker Compose profiles로 dev·prod 환경 깔끔하게 분리
하나의 compose 파일에서 개발용 도구는 평소엔 안 뜨게, 필요할 때만 켜는 법. profiles로 환경별 서비스를 분리하는 실전 사용법.
쿠버네티스 SecurityContext — runAsNonRoot로 컨테이너 굳히기
파드 보안 컨텍스트로 root 실행을 막고 파일시스템을 읽기전용으로 잠그는 법. runAsNonRoot·readOnlyRootFilesystem 적용과 흔한 에러 해결.
쿠버네티스 CronJob 실패 디버깅 — Job 안 도는 진짜 원인
CronJob이 안 돌거나 Job이 계속 실패할 때, kubectl로 스케줄·백오프·실행 이력을 확인해 원인을 좁히는 법. 6가지 원인과 체크리스트.
로드밸런서 종류 — ALB·NLB 차이와 L4/L7 선택 기준
L4와 L7 로드밸런서의 동작 차이, AWS ALB와 NLB의 차이를 비교하고 어떤 트래픽에 무엇을 써야 하는지 실전 선택 기준으로 정리합니다.
CDN 캐시 설정과 무효화 전략 제대로 잡기
CDN 캐싱이 어디서 일어나는지, Cache-Control·TTL로 캐시를 제어하고 배포 후 캐시 무효화(invalidation)를 안전하게 처리하는 실전 전략.
MySQL 슬로우 쿼리 로그 켜고 느린 쿼리 찾는 법
MySQL 슬로우 쿼리 로그를 켜는 설정부터 long_query_time·로그 위치·pt-query-digest로 느린 쿼리를 집계해 범인을 찾는 실전 순서.
읽기 복제 활용과 복제 지연으로 인한 일관성 함정
읽기 복제로 부하를 분산할 때 생기는 복제 지연(replication lag)과 읽기 일관성 문제를 진단하고, 쿼리 라우팅으로 안전하게 푸는 법.
iptables 규칙 설정으로 방화벽 설계하기 (nftables 포함)
리눅스 호스트 방화벽을 안전하게 설계하는 법. 기본 정책 DROP, 연결 상태 추적, 규칙 순서의 함정과 잠기지 않게 적용하는 법. iptables와 nftables를 함께 다룹니다.
iostat로 디스크 IO 확인하고 병목 진단하기 (%util·await)
서버가 느린데 CPU·메모리는 멀쩡할 때 디스크 IO 병목을 의심합니다. iostat -x의 %util과 await를 읽는 법, 어떤 프로세스가 IO를 먹는지 iotop으로 잡는 법.
SSH 보안 설정 강화 체크리스트 (sshd_config 핵심 항목)
공개된 서버의 SSH를 안전하게 만드는 실전 체크리스트. 키 인증 강제, root 로그인 차단, 인증 시도 제한 등 sshd_config 핵심 항목과 적용 전 검증법.
logrotate 설정으로 로그 디스크 관리하기 (자동 회전·압축)
로그가 디스크를 다 먹기 전에 logrotate로 자동 회전·압축·삭제하는 법. 설정 문법, logrotate -d로 안전하게 검증하는 법, copytruncate가 필요한 경우까지.
도커 컨테이너 메모리 제한 — CPU·메모리 리소스 설정
한 컨테이너가 호스트 자원을 다 먹어 다른 컨테이너를 죽이는 문제를 메모리·CPU 제한으로 막는 법. OOMKilled 진단과 docker run·compose 설정을 실전 정리.
도커 로그 관리 — 로그 드라이버와 디스크 폭증 해결
컨테이너 로그가 디스크를 가득 채우는 문제를 로그 드라이버와 로테이션으로 해결하는 법. json-file·local·journald 비교와 daemon.json 설정까지 실전 정리.
Kubernetes PVC Pending 해결 — PV·PVC 마운트 문제
PVC가 Pending에서 멈추고 Pod가 ContainerCreating에 갇히는 진짜 원인을 StorageClass·바인딩·접근 모드로 좁혀 해결하는 법. 단계별 진단과 체크리스트.
Kubernetes NetworkPolicy로 파드 트래픽 제어하기
기본적으로 모두 열려 있는 파드 간 통신을 NetworkPolicy로 막고 허용하는 법. 적용해도 안 막히는 흔한 함정과 Ingress·Egress 규칙을 실전 예시로 정리.
HTTP/2 HTTP/3 차이 — 멀티플렉싱과 QUIC 도입
HTTP/1.1의 한계부터 HTTP/2 멀티플렉싱, HTTP/3 QUIC까지. 무엇이 달라졌고 언제 도입할지 실무 기준으로 정리합니다.
클라우드 시크릿 관리 — Secrets Manager·Vault 기초
API 키와 DB 비밀번호를 코드·환경변수에 두면 안 되는 이유와 Secrets Manager·Vault로 안전하게 관리하는 실전 방법.
AWS 멀티계정 관리 — 조직·SCP 거버넌스 기초
계정 하나로 버티다 한계에 부딪힐 때. AWS Organizations와 SCP로 멀티계정 거버넌스를 설계하는 실전 기준.
MySQL 옵티마이저 힌트 — 잘못된 실행계획 바로잡기
옵티마이저가 엉뚱한 인덱스나 조인 순서를 고를 때, 통계 갱신부터 힌트 강제까지 실행계획을 바로잡는 실전 방법.
tcpdump 사용법 — 패킷 잡아 네트워크 문제 분석하기
통신이 안 될 때 tcpdump로 실제 패킷을 잡아 어디서 막혔는지 확인하는 법. 인터페이스·필터·포트 지정부터 SYN/SYN-ACK 핸드셰이크 해석까지.
리눅스 OOM Killer — 프로세스가 갑자기 죽을 때 원인 찾기
프로세스가 로그도 없이 사라졌다면 OOM Killer를 의심한다. dmesg의 Out of memory 로그 읽는 법, 어떤 프로세스가 왜 죽었는지, oom_score로 막는 법까지.
리눅스 CPU 사용률 높음 — 100% 프로세스 추적법 (top·pidstat)
서버 CPU가 100%로 튀었을 때 어느 프로세스가, 어느 스레드가 잡아먹는지 top·pidstat·perf로 좁혀가는 법. user/sys/iowait 구분까지.
crontab 안됨 원인 — cron이 안 돌 때 디버깅하는 법
터미널에선 되는데 cron으로는 안 돌 때 원인을 좁히는 법. /var/log/cron 로그, 환경변수·PATH 차이, 권한·% 이스케이프까지 실제 사례 중심.
도커 레이어 캐시 — 빌드 순서로 속도 10배 올리기
Dockerfile 명령 순서만 바꿔도 빌드가 몇 배 빨라집니다. 레이어 캐시 무효화 규칙, COPY 순서, 캐시 마운트까지 실전 패턴으로 정리합니다.
Docker Compose env 파일 — 환경변수 관리 함정 정리
Compose의 .env, env_file, environment가 헷갈려 값이 안 먹는 경우. 우선순위·변수 치환·따옴표 함정을 실전 예시로 풀고 docker compose config로 검증합니다.
쿠버네티스 사이드카 패턴 — 멀티컨테이너 파드 실전
한 파드 안에 여러 컨테이너를 넣는 사이드카·앰배서더·어댑터 패턴. 언제 쓰고 어떻게 구성하며, 종료 순서·기동 의존성 함정까지 kubectl로 정리합니다.
Ingress TLS 설정 — 인증서 적용과 흔한 오류 해결
쿠버네티스 Ingress에 HTTPS를 붙이는 법. TLS Secret 생성, host 매칭, cert-manager 자동 발급과 ERR_CERT 계열 오류를 kubectl로 진단합니다.
PMP 시나리오 문제 푸는 사고법 — 상황형 정답 고르기
PMP 시나리오 문제가 어려운 이유와 정답을 고르는 사고 순서. 함정 보기 거르는 법과 PM 관점 우선순위를 예시로 정리합니다.
ITIL 4 실무 적용 — 인시던트와 변경 관리 현업에 쓰기
ITIL 4 이론을 현업에 어떻게 적용하나. 인시던트와 변경 관리의 차이, 우선순위 판단, 실전 운영 흐름을 예시로 정리합니다.
Terraform 모듈로 재사용 가능한 인프라 코드 만들기
복붙으로 늘어난 Terraform 코드를 모듈로 묶어 재사용하는 법. 모듈 구조, 변수·출력 설계, 흔한 실수까지 실무 예시로 정리합니다.
AWS 예산 알람 설정 — 요금 폭탄 막는 비용 알림
AWS Budgets로 예산 초과 전에 알림 받는 법. 예산·알람·이상 탐지의 차이와 실전 설정 단계, 흔한 실수를 정리합니다.
MTU 단편화 문제 — 간헐적 통신 장애 진단법
작은 요청은 되는데 큰 응답·대용량 전송만 멈출 때 MTU·단편화를 의심하는 법. ping DF 비트 테스트와 MSS 클램핑 해결.
로드밸런서 헬스체크 실패 진단 — 502·간헐 장애 잡기
로드밸런서가 백엔드를 unhealthy로 빼서 502가 날 때 원인을 좁히는 법. 직접 호출·경로·포트·타임아웃·보안그룹 점검 순서.
MySQL 파티셔닝, 언제·어떻게 — 테이블 분할 기준과 함정
수억 행 테이블이 느려질 때 파티셔닝을 쓸지 판단하는 기준과 RANGE 파티션 적용·정리 방법. 파티션 프루닝이 안 되는 흔한 실수.
복합 인덱스 설계 원칙 — 선두 컬럼과 카디널리티
복합 인덱스의 컬럼 순서를 어떻게 정하는가. 선두 컬럼 규칙, 등호·범위 조건 배치, 카디널리티 판단과 커버링 인덱스까지.
도커 이미지 취약점 스캔 — trivy로 시작하기
도커 이미지 취약점 스캔을 trivy로 시작하는 실전 가이드. CVE 결과 읽는 법, severity 필터, 베이스 이미지 교체로 취약점 줄이기, CI 게이트 설정까지 명령 중심으로.
도커 BuildKit 캐시로 빌드 빠르게 만들기
docker buildkit 캐시를 제대로 써서 매번 npm install·apt를 다시 받는 느린 빌드를 줄이는 법. 캐시 마운트, 레이어 순서, CI 캐시 내보내기까지 명령 중심으로.
쿠버네티스 taint·toleration으로 파드 배치 제어하기
kubernetes taint toleration으로 특정 노드에 파드가 몰리거나 안 뜨는 문제를 제어하는 법. taint 3가지 effect, toleration 매칭, nodeSelector와의 차이를 명령 중심으로.
쿠버네티스 RBAC 권한 관리 — Role·RoleBinding 흔한 오류
kubernetes rbac 권한 설정에서 자주 막히는 Forbidden 에러를 Role·RoleBinding 구조로 풀어내는 법. apiGroups·네임스페이스·바인딩 실수 원인별 해결과 점검 명령.
비전공 인프라 자격증 순서 — 뭐부터 딸까
비전공자가 인프라 엔지니어로 취업할 때 따면 좋은 자격증을 기초→실무→클라우드 순서로 우선순위와 함께 정리합니다.
CAPM vs PMP 차이 — 무엇부터 따야 할까
PMI의 CAPM과 PMP 자격의 응시 조건·난이도·실무 위치 차이를 비교하고, 경력 단계별 선택 기준을 정리합니다.
Terraform 입문 — 코드로 인프라 만드는 첫걸음
Terraform이 왜 필요한지, provider·resource·state 개념과 plan/apply 흐름을 실무 예시로 정리한 입문 가이드입니다.
클라우드 마이그레이션 6R 전략 — 어떻게 옮길까
온프레미스를 클라우드로 옮기는 6R 전략(Rehost·Replatform·Refactor 등)을 비용·기간·예시로 비교해 선택 기준을 정리합니다.
포트가 안 열릴 때 — 방화벽 vs 서비스 구분법
포트가 안 열림 문제를 방화벽 차단인지 서비스 미실행인지 구분하는 법. ss로 리슨 여부 확인, iptables/firewalld 규칙 점검, refused와 timeout의 차이로 원인 좁히기.
MySQL 백업 복구 전략 — 논리·물리·PITR 구분
MySQL 백업 복구 전략을 논리(mysqldump)·물리(스냅샷) 백업과 바이너리 로그 기반 시점 복구(PITR)로 나눠 정리. 언제 무엇을 쓰고 어떻게 특정 시점으로 되돌리는지.
복제 지연 원인과 대처 — Seconds_Behind_Source 읽기
MySQL 복제 지연(replication lag)이 생기는 원인과 SHOW REPLICA STATUS의 Seconds_Behind_Source로 진단하는 법. 단일 스레드 적용·긴 트랜잭션 등 원인별 대처.
MySQL 데드락 해결 — 로그 읽고 원인 찾는 법
MySQL 데드락이 발생하는 원인과 SHOW ENGINE INNODB STATUS 로그를 읽어 어느 트랜잭션이 무슨 락을 기다렸는지 찾는 법. 락 순서·인덱스 부재 등 원인별 대처.
도커 레지스트리 push — 인증 오류와 태그 함정 해결
도커 레지스트리 push 인증 실패(denied, unauthorized)와 태그·HTTPS 오류를 원인별로 진단해 프라이빗 레지스트리에 이미지를 올리는 법.
도커 HEALTHCHECK — 컨테이너 상태를 제대로 관리하기
도커 healthcheck로 컨테이너가 살아있는지 실제로 확인하는 법. HEALTHCHECK 작성, unhealthy 디버깅, 의존성 대기까지 실전 정리.
쿠버네티스 노드 NotReady — 진단과 복구 (kubectl 실전)
kubernetes node notready 상태일 때 kubelet·네트워크·디스크·인증서를 단계별로 진단해 복구하는 법. 원인별 명령과 체크리스트.
쿠버네티스 HPA 설정 — 파드 오토스케일링과 흔한 함정
kubernetes hpa 설정으로 부하에 따라 파드를 자동 증감하는 법. metrics-server, resources.requests, 스케일 안 되는 원인까지 실전 정리.
정보처리기사 필기 공부법 — 합격 전략 정리
정보처리기사 필기를 효율적으로 합격하는 학습 순서. 과목 구성, 시간 배분, 자주 틀리는 함정과 회독 전략까지.
AWS SAA 공부법 — 비전공도 되는 준비 로드맵
AWS SAA(솔루션스 아키텍트 어소시에이트)를 비전공자가 준비하는 현실적인 순서. 핵심 영역, 학습 단계, 자주 막히는 부분까지.
S3 권한 설정 — 버킷 공개 실수 막는 법
S3 권한이 어떻게 겹쳐 평가되는지, 버킷이 의도치 않게 공개되는 경로와 막는 방법을 실무 예시로 정리합니다.
오토스케일링 설정 — 개념과 흔한 함정 정리
오토스케일링이 뭔지, 정책·메트릭·쿨다운을 어떻게 잡아야 하는지, 설정할 때 자주 터지는 함정을 실무 예시로 정리합니다.
SSL 인증서 오류 해결 — 만료·체인·이름 불일치 진단법
certificate has expired, unable to get local issuer, name mismatch 같은 TLS 인증서 오류를 openssl로 진단하고 원인별로 해결하는 법.
too many connections 해결 — 커넥션 풀 고갈 원인과 대처
MySQL too many connections 에러의 원인을 커넥션 누수·풀 설정·max_connections 관점에서 진단하고 해결하는 법. 풀 크기 계산과 누수 확인 쿼리.
N+1 쿼리 문제 — 발견하는 법과 해결하는 법
ORM에서 흔한 N+1 쿼리 문제를 쿼리 로그로 발견하고 JOIN·eager loading·IN 절로 해결하는 법. 1번 조회가 101번이 되는 이유.
트랜잭션 격리수준 4가지 — 쉽게 이해하기
READ UNCOMMITTED부터 SERIALIZABLE까지 트랜잭션 격리수준 4가지를 dirty read·non-repeatable read·phantom read 현상으로 정리. MySQL·PostgreSQL 기본값.
쿠버네티스 ConfigMap·Secret 설정 주입과 흔한 실수
ConfigMap과 Secret으로 환경변수·설정 파일을 파드에 주입하는 법과, 값이 안 들어가는 대표적인 실수 5가지를 명령 중심으로 정리합니다.
도커 볼륨으로 데이터 유지하기 — 바인드마운트와 유실 막기
컨테이너를 지우면 데이터가 사라지는 이유와, 볼륨·바인드마운트로 데이터를 안전하게 유지하는 법. 둘의 차이와 흔한 유실 사고를 정리합니다.
쿠버네티스 Service 연결 안됨 — Service·Ingress 접속 진단법
파드는 떠 있는데 Service나 Ingress로 접속이 안 될 때, selector·endpoints·포트 순서로 원인을 좁히는 실전 진단 가이드.
kubectl 디버깅 — 파드 문제를 로그·exec·events로 잡는 법
파드가 이상할 때 추측 대신 kubectl로 원인을 좁히는 순서. logs, describe, events, exec 네 가지 명령으로 90%의 문제를 진단합니다.
ITIL 4 Foundation 정리 — 핵심 개념과 시험 준비
ITIL 4 Foundation의 SVS, 4가지 차원, 7가지 지도원칙과 자주 나오는 프랙티스를 시험 대비 관점으로 정리합니다.
AWS 비용 절감 — 현실적으로 청구서 줄이는 법
막연한 절약 말고 효과 순서대로. 유휴 리소스 정리, 인스턴스 적정화, 약정·스토리지 계층까지 실무 절차로 정리합니다.
VPC 개념 이해 — 서브넷·라우팅 한 번에 잡기
VPC가 뭔지, 퍼블릭·프라이빗 서브넷과 라우팅 테이블이 어떻게 트래픽을 가르는지 실무 예시로 정리합니다.
IAM 최소 권한 원칙 — 실전에서 진짜 적용하는 법
AdministratorAccess로 시작하지 않는 IAM 최소 권한 설계. 정책 구조, 역할 분리, 권한을 좁혀가는 실무 절차를 정리합니다.
Linux Permission denied 해결 — 권한·소유자·실행비트 좁히기
Permission denied가 떴을 때 권한(rwx)·소유자·실행비트 중 무엇이 문제인지 단계별로 좁히는 법. ls -l 읽는 법과 상위 디렉터리 x 비트 함정까지.
DNS 전파 확인과 진단 — dig·캐시·resolv.conf로 원인 좁히기
도메인이 안 풀릴 때 dig로 응답을 읽고, DNS 전파를 확인하고, 로컬·리졸버 캐시를 의심하는 법. 권한 네임서버에 직접 물어 전파 여부를 가리는 법까지.
리눅스 좀비 프로세스 정리 — defunct·고아 프로세스 원인과 처리법
ps에 <defunct>로 보이는 좀비 프로세스가 왜 생기고, kill로 안 죽는 이유와 부모를 통해 정리하는 법. 고아 프로세스와의 차이까지.
systemd 서비스 등록 — 유닛 파일 직접 작성하고 디버깅하기
내가 만든 프로그램을 systemd 서비스로 등록하는 법. .service 유닛 파일 작성, enable·start, 그리고 안 뜰 때 journalctl로 원인 찾는 법.
도커 컨테이너가 실행하자마자 바로 종료될 때 — 원인과 해결
docker run 직후 컨테이너가 Exited로 꺼지는 진짜 원인을 로그와 종료 코드로 좁혀 해결하는 법. 포그라운드 프로세스·CMD 오류 등 원인과 체크리스트.
Docker Compose 서비스 간 통신이 안 될 때 — 네트워크 연결 해결
Compose에서 서비스끼리 연결이 안 되는 진짜 원인을 정리. localhost 오해·서비스명·포트·기동 순서 등 원인별 해결과 체크리스트.
Pod가 Pending에서 안 넘어갈 때 — 스케줄링 실패 원인과 해결
Pod가 계속 Pending 상태인 진짜 원인을 이벤트로 좁혀 해결하는 법. 리소스 부족·테인트·노드셀렉터·PVC 미바인딩 등 원인과 체크리스트.
ImagePullBackOff / ErrImagePull 원인과 해결 (kubectl 실전)
Pod가 ImagePullBackOff로 멈췄을 때 이미지를 못 받는 진짜 원인을 이벤트로 좁혀 해결하는 법. 오타·권한·태그·레지스트리 5가지 원인과 체크리스트.
OOMKilled 디버깅 — 컨테이너가 메모리로 죽을 때 (Exit 137)
Pod가 OOMKilled로 죽는 진짜 원인을 찾는 법. requests/limits의 차이, 노드 메모리 압박, 실제 사용량 측정과 올바른 limit 설정.
정보처리기사 실기 SQL, 손으로 써야 붙는다 — 빈출 유형 정리
정보처리기사 실기의 SQL·DB 영역 빈출 유형과 답안 작성법. 눈으로 풀면 떨어지는 이유와 직접 쓰며 익히는 학습 순서.
리눅스 디스크 용량 부족, 원인 추적하는 법 (df·du·lsof)
No space left on device가 떴을 때 어디가 찼는지 빠르게 찾는 법. df로 파티션 확인, du로 디렉터리 추적, 삭제해도 안 줄 때 lsof로 잡는 법까지.
curl이 안 될 때 — connection refused부터 timeout까지 진단법
curl 요청이 실패할 때 DNS·포트·방화벽·TLS 중 어디서 막혔는지 단계별로 좁히는 법. connection refused와 timeout의 결정적 차이.
슬로우 쿼리, EXPLAIN 읽는 법 — 인덱스가 안 타는 이유
MySQL EXPLAIN 출력을 읽어 느린 쿼리의 원인을 찾는 법. type·key·rows·Extra 핵심 컬럼과 인덱스가 안 타는 흔한 패턴.
도커 이미지 용량 줄이기 — 1GB를 100MB로 만드는 5가지
느린 빌드·배포의 주범인 무거운 도커 이미지를 줄이는 실전 방법. 멀티스테이지 빌드, 베이스 이미지 선택, 레이어 캐시, .dockerignore까지.
SQLD 한 달 합격 플랜 — 비전공도 되는 4주 공부법
SQLD를 4주에 합격하는 현실적인 학습 순서. 과목별 비중, 자주 틀리는 함정, 주차별 계획과 모의고사 활용법까지.
쿠버네티스 CrashLoopBackOff, 원인부터 해결까지 (kubectl 실전)
Pod가 CrashLoopBackOff로 재시작을 반복하는 진짜 원인을 로그·이벤트·Exit Code로 좁혀 해결하는 법. 5가지 원인과 30초 체크리스트.