웹 개발
운영 중 네트워크 문제 빠르게 찾기
사용자 보고 후 즉시 대응해야 할 때 네트워크 문제를 어디서부터 시작할지.
운영 중에는 작은 이상 신호도 빨리 분리해야 한다. 네트워크 문제는 클라이언트, 프록시, 서버 어디서나 일어날 수 있기 때문이다. 체계적으로 접근하면 시간을 절반으로 줄일 수 있다.
먼저 정상 상태 기준 세우기
사용자가 "접속이 안 돼요"라고 하면, 같은 조건에서 다시 재현해본다. WiFi vs 모바일 데이터, 특정 페이지 vs 전체, 특정 사용자 vs 모두인지 확인한다.
클라이언트 단계 확인
브라우저의 개발자 도구 Network 탭을 보면 요청이 전달되는지, 응답이 오는지 한눈에 알 수 있다.
# 로컬에서 시뮬레이션
curl -i -H "User-Agent: Mobile" https://example.com/api/data
만약 요청 자체가 안 가면 DNS, 인증서, 프록시 문제다. 응답이 오는데 오류면 서버 문제일 가능성이 높다.
프록시/CDN 단계
Cloudflare, Nginx, 로드밸런서를 거치면 그 단계에서 에러가 날 수 있다.
# 특정 서버로 직접 요청 (프록시 우회)
curl -i --resolve example.com:443:1.2.3.4 https://example.com
프록시를 우회했을 때 성공하면, 프록시 설정이 문제다. 여전히 실패하면 서버 문제다.
서버 단계 확인
# 서버 상태 확인
ss -tlnp | grep :3000 # 포트 리스닝 확인
nc -zv localhost 3000 # 포트 응답 확인
로그에서 요청이 왔는지 확인한다. 로그에 아무것도 없으면 요청이 서버에 도달하지 못했다는 뜻이다.
DNS, 방화벽, TLS 확인
dig example.com # DNS 조회
nslookup example.com # 다른 DNS 서버로 조회
openssl s_client -connect example.com:443 # TLS 인증서 확인
이 세 가지가 정상이면 기본 연결은 문제없다.
효율적인 확인 순서
- 재현 조건 명확히 하기 (누가, 어디서, 언제)
- 클라이언트 도구(curl, 브라우저 개발자 도구)로 요청/응답 확인
- 프록시 우회해서 직접 요청 해보기
- 서버 로그와 포트 리스닝 상태 확인
- DNS, 방화벽, TLS 인증서 순으로 체크
각 단계를 지나갈 때마다 "여기서 실패한다/성공한다"를 기록해두면, 다음 사건 때 더 빠르게 대응할 수 있다.