평균은 0.4초인데 왜 7초를 기다릴까 — 워커가 막히는 순간
링크 미리보기 서비스의 평균 응답은 0.41초다. 그런데 죽은 주소 두 개가 들어오자 멀쩡한 요청이 7.17초를 기다렸다. 34배다. 평균만 보면 멀쩡해 보이는 시스템이 왜 무너지는지 직접 재 본다.
nginx 리버스 프록시, 쿠버네티스 배포, RabbitMQ 큐·DLQ, Fluentd·OpenSearch 로그, tcpdump·nftables 네트워크 실습까지 서버와 인프라를 직접 만지며 남긴 기록.
링크 미리보기 서비스의 평균 응답은 0.41초다. 그런데 죽은 주소 두 개가 들어오자 멀쩡한 요청이 7.17초를 기다렸다. 34배다. 평균만 보면 멀쩡해 보이는 시스템이 왜 무너지는지 직접 재 본다.
매니페스트 세 종류가 각각 무슨 일을 하는지 한 줄씩 짚는다. 서비스끼리는 IP 가 아니라 이름으로 부른다. 하위 경로에 앱을 붙였다가 API 요청이 엉뚱한 서비스로 새어 나간 이야기도 함께.
링크 미리보기 카드를 만드는 작은 서비스를 마이크로서비스로 쪼개 쿠버네티스에 올린다. 배포는 kubectl 이 아니라 git 커밋으로 한다. 아홉 편에 걸쳐 RabbitMQ·Fluentd·OpenSearch 까지 붙여 볼 연재의 첫 글.
Jenkins도 Ansible도 클라우드 서버도 전부 SSH 로 붙는다. 키 한 쌍이 어떻게 비밀번호를 대신하는지, 키를 만들어 서버에 등록하는 순서, 그리고 안 붙을 때 어디를 보는지까지.
소비보다 발행이 빠르면 큐가 쌓이고, 디스크가 한계선을 넘으면 RabbitMQ 가 발행을 막는다. 그 과정을 실제로 알람을 띄워 재현하고, rabbitmqctl 로 원인 큐와 막힌 연결을 찾아 푸는 순서까지.
서버 한 대에 서비스 둘을 올리고 443 하나로 받는다. 이름으로 나누고, TLS 를 한 자리에서 끝내고, 백엔드가 잃어버린 정보를 되돌려 주는 일까지 — nginx 를 앞에 두면 무엇이 달라지는지 실제로 띄워 확인한다.
앱은 띄웠는데 주소가 :5000 이다. 그 앞에 nginx 를 세우면 무엇이 달라지는지, 설정 파일이 어떻게 생겼고 nginx 가 요청을 어떤 순서로 고르는지 — 직접 띄워 확인하며 처음부터 짚는다.
서버가 늘면 로그를 ssh 로 열어 볼 수 없다. Fluentd 가 그 사이에서 무엇을 하는지, 설정 파일이 어떻게 생겼고 태그·파서·버퍼가 각각 무엇인지 — 직접 띄워 확인하며 처음부터 짚는다.
IDC 서버에서 사내망과 외부망을 동시에 써야 할 때, privoxy 의 forward 규칙으로 목적지 도메인에 따라 부모 프록시를 갈라 태우는 방법. 규칙 순서 함정과 확인 방법까지.
TP-Link 공유기 DDNS 에 No-IP 를 연결해 바뀌는 공인 IP 를 이름 하나로 고정한다. 시작 전에 확인할 CGNAT, 계정 비밀번호 대신 쓰는 DDNS Key, 무료 계정이 30일마다 끊기는 이유까지.