← 전체 글로 돌아가기

웹 개발

운영 중 네트워크 문제 빠르게 찾기

사용자 보고 후 즉시 대응해야 할 때 네트워크 문제를 어디서부터 시작할지.

운영 중에는 작은 이상 신호도 빨리 분리해야 한다. 네트워크 문제는 클라이언트, 프록시, 서버 어디서나 일어날 수 있기 때문이다. 체계적으로 접근하면 시간을 절반으로 줄일 수 있다.

먼저 정상 상태 기준 세우기

사용자가 "접속이 안 돼요"라고 하면, 같은 조건에서 다시 재현해본다. 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 인증서 확인

이 세 가지가 정상이면 기본 연결은 문제없다.

효율적인 확인 순서

  1. 재현 조건 명확히 하기 (누가, 어디서, 언제)
  2. 클라이언트 도구(curl, 브라우저 개발자 도구)로 요청/응답 확인
  3. 프록시 우회해서 직접 요청 해보기
  4. 서버 로그와 포트 리스닝 상태 확인
  5. DNS, 방화벽, TLS 인증서 순으로 체크

각 단계를 지나갈 때마다 "여기서 실패한다/성공한다"를 기록해두면, 다음 사건 때 더 빠르게 대응할 수 있다.