Home > Infra > 네트워크에 대해서 > 네트워크 인프라 구성도 그리기

네트워크 인프라 구성도 그리기
Network Infrastructure Architecture Diagram

구성 요소별 핵심 역할

👨‍💻 사용자 (Client)

  • 웹 브라우저를 통해 서비스에 접속하는 최종 사용자입니다.

🌐 도메인 등록 및 DNS 서버

  • 사용자가 도메인 주소(예: www.your-service.com)를 입력하면, 해당 주소를 클라우드 플랫폼의 서버 IP 주소로 변환하여 연결해주는 역할을 합니다.

☁️ 클라우드 플랫폼

  • VPC (Virtual Private Cloud): 클라우드 플랫폼 내에 생성된 논리적으로 분리된 가상의 네트워크 공간입니다. 외부로부터 격리되어 있어 보안이 강화됩니다.
  • 로드 밸런서 (Load Balancer): 사용자의 요청(트래픽)을 여러 대의 웹 서버로 자동 분산하여 특정 서버에 과부하가 걸리는 것을 방지합니다. 이를 통해 서비스의 안정성을 높이고, SSL 인증서를 적용하여 HTTPS 통신을 처리합니다.
  • Public Subnet (외부망): 인터넷과 직접 통신이 가능한 영역입니다.
    • 웹 서버 (Nginx): 프론트엔드 애플리케이션을 사용자에게 제공합니다. 정적 파일을 서빙하고, 사용자의 동적 요청을 내부망에 있는 WAS로 전달하는 리버스 프록시(Reverse Proxy)의 핵심 역할을 수행합니다. Docker 컨테이너로 배포됩니다.
  • Private Subnet (내부망): 인터넷에서 직접 접근할 수 없는 내부 네트워크 영역으로, 중요한 자원을 배치하여 보안을 강화합니다.
    • WAS: 백엔드 애플리케이션으로, 실제 비즈니스 로직을 처리하고 데이터베이스와 통신합니다. 웹 서버를 통해서만 요청을 받기 때문에 외부에 직접 노출되지 않아 안전합니다. 마찬가지로 Docker 컨테이너로 배포됩니다.
    • DB 서버: 서비스의 모든 데이터를 저장하고 관리하는 데이터베이스입니다. 클라우드 플랫폼의 관리형 서비스를 사용하거나, 서버에 Docker 컨테이너로 직접 구축할 수 있습니다. 가장 안쪽의 격리된 네트워크에 위치하며 오직 WAS의 요청에만 응답합니다.

데이터 흐름

  1. DNS 조회: 사용자가 브라우저에 도메인 주소를 입력하면, DNS가 클라우드 플랫폼 로드 밸런서의 IP 주소를 알려줍니다.
  2. 요청 전달: 사용자의 요청은 클라우드 플랫폼의 로드 밸런서로 전달됩니다.
  3. 트래픽 분산: 로드 밸런서는 받은 요청을 Public Subnet에 있는 여러 웹 서버 중 하나로 전달합니다.
  4. 프론트엔드 서빙 및 API 요청: 웹 서버는 프론트 엔드 코드로 만들어진 화면을 사용자에게 보여줍니다. 만약 데이터 처리가 필요하면(예: 로그인, 게시글 조회), 웹 서버는 해당 요청을 Private Subnet에 있는 WAS로 전달합니다.
  5. 비즈니스 로직 처리: WAS는 요청을 받아 비즈니스 로직을 수행하고, 필요시 DB 서버에 데이터 조회를 요청합니다.
  6. 데이터 응답: DB 서버는 WAS의 요청을 처리한 후 결과를 반환합니다.
  7. API 응답: WAS는 DB에서 받은 데이터를 가공하여 웹 서버로 최종 결과를 전달합니다.
  8. 최종 렌더링: 웹 서버는 WAS로부터 받은 데이터를 포함하여 사용자에게 최종 화면을 보여줍니다.

보안/네트워킹 권장 설정

  • VPC 분리: 퍼블릭 서브넷, 프라이빗 서브넷
  • SG(Security Group): 최소 포트만 허용
    • LB→Web Server: 443/80(내부)
    • Web Server→WAS: 8080(내부)
    • WAS→DB: 3306(내부)
  • HTTPS 강제 및 HSTS, 보안 헤더(Content-Security-Policy 등) 적용
  • DB 프라이빗 접속만 허용, 백업/복제/모니터링

배포 파이프라인(예시)

  1. CI: 테스트 → Docker 이미지 빌드 → 취약점 스캔 → 레지스트리에 push
  2. CD: 서버/쿠버네티스에 배포, 헬스체크 후 트래픽 전환(블루/그린 또는 롤링)

포트/엔드포인트 요약

  • 외부: 443(HTTPS) → LB → Web Server
  • 내부: 8080(WAS), 3306(DB)
  • 관리: SSH는 Bastion Host 또는 SSM 계열 툴로 제한적 허용

운영 모니터링

  • 애플리케이션: Prometheus + Grafana, Spring Actuator
  • 인프라: Cloud Platform Monitoring, 로드밸런서/네트워크 지표, 로그 수집(ELK/EFK)