Proxy & Load Balancer & WAS & VPC

2023. 4. 14. 12:34·⚙️ Ops/CS

💡 Proxy

img


Forward Proxy

  • 클라이언트와 가까이 있는 서버로 클라이언트를 대신해 서버에 요청 전달
  • 주로 캐시서버로 사용
  • 클라이언트의 정보 숨김

Reverse Proxy

  • 서버를 대신해서 응답을 클라이언트로 전달
  • 트래픽 로드밸런싱
  • 서버 정보 숨김

💡 Load Balancer

img

  • Scale-Up
    • 서버의 하드웨어 성능을 높이는 방법
  • Scale-Out
    • 서버의 개수를 늘려 부하분산

로드밸런서의 종류

  • L2 - Mac 주소 기반 로드밸런싱
  • L3 - IP 주소 기반 로드밸런싱
  • L4 - IP & Port기반 로드밸런싱
  • L7 - 클라이언트 요청 기반 로드밸런싱

💡 AWS Auto Scaling


장점

  • 동적 스케일링
    • 사용자의 요구에 따라 리소스의 동적 스케일링
  • 로드 밸런싱
    • 오토스케일링된 서버에 동적인 부하 분산
  • 타겟 트래킹
    • 특정 타겟을 지정하여 오토스케일링 관리를 할 수 있으며 인스턴스의 수 조정 가능
  • 헬스체크
    • EC2 인스턴스에 문제가 생기면 자동으로 새 인스턴스로 교체

Scaling 유형

  • 인스턴스 레벨 유지
    • 필요한 인스턴스의 개수 지정 후 개수에 맞게 오토스케일링
  • 수동 스케일링
    • 기존 그룹의 크기 수동 조정, 비효율적
  • 일정별 스케일링
    • 특정일의 트래픽 증가에 따른 일정별 스케일링 주기 설정
  • 동적 스케일링
    • 트래픽에 동적으로 대응하여 스케일링 그룹의 크기 조정

💡 WAS (Web Application Server)


Tomcat - Open Source

  • Apache에서 개발, 서블릿 컨테이너만 존재하는 웹 어플리케이션 서버
  • 자바 서블릿 컨테이너의 공식 구현체
  • 독립적 실행, 다른 웹서버와 호환성 좋음
  • Spring Boot에 기본으로 내장되어있음

Jetty - Open Source

  • 이클립스 재단 개발, HTTP 서버 & 자바 서블릿 컨테이너이다
  • 타 WAS에 비해 가볍고 빠르며, 어플리케이션에 탑재 가능
  • 소형 장비 & 프로그램에 적합

Nginx - Open Source / Download

  • 서블릿 컨테이너나 웹 어플리케이션 서버가 아닌 웹 서버
  • 대규모 트래픽 핸들링이 가능한 고성능 웹서버
  • 비동기 이벤트 기반 고성능 & 동시성
  • 높은 효율의 로드밸런싱
  • 리버스 프록시로 사용 가능
  • 클라이언트 - 서버 사이에서 무중단 배포

🎃 Nginx Proxy 설정 - nginx.conf

server {
      listen       80; # (Mac OS) 8080 포트에서 80번 포트로 변경합니다.
...
      location / {
            ...
            proxy_pass http://localhost:8080; # 요청을 8080 포트로 넘깁니다.
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
      }
}

🎃 Nginx Load Balancer 설정 - Nginx Load Balancing Docs

  • 사전에 스프링부트 서버 2대 실행
http {
   upstream backend {
      server localhost:18080;
      server localhost:18081;
   }
   location / {
      proxy_pass http://backend;
   }
}

💡 VPC (Virtual Private Cloud)

img

VPC는 클라우드 내 Private한 공간을 제공함으로써,
Public & Private 클라우드를 논리적으로 분리할 수 있다 = 서브넷 분리


VPC 가용영역

  • VPC 생성
  • VPC Subnet은 리전별로 네트워크 분리하여 사용
  • 첫 생성한 VPC의 Subnet prefix보다 높은 값을 줄 수 없음 ex) /16 - > /14 = X

CIDR

  • 도메인간 라우팅 기법
  • /16 /18 /20 /24 /28 로 네트워크 블록을 표시
  • 기존의 정해진 Network Address & Host Address를 사용 할 필요가 없어짐

Subnet

  • 네트워크 분리
  • Public Subnet - > 공용망
  • Private Subnet - > 내부망
  • VPN Only - > IDC - 기업

Routing Table

  • 패킷의 전송경로 & 목적지 정보
  • 지점간 시작 & 끝 지점
  • 모든 네트워크는 무조건 하나 이상의 라우팅 테이블을 가져야함
저작자표시 (새창열림)

'⚙️ Ops > CS' 카테고리의 다른 글

Context Switching & Thread Scheduling  (0) 2023.09.29
Race Condition  (0) 2023.04.14
HTTP  (0) 2023.04.14
Web Application & Network  (0) 2023.04.14
Cookie & Session & SQL Injection & CSRF  (0) 2023.04.03
'⚙️ Ops/CS' 카테고리의 다른 글
  • Context Switching & Thread Scheduling
  • Race Condition
  • HTTP
  • Web Application & Network
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      React #Markdown
      Lock #Thread #Concurrency
      GStreamer #Pipeline
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Proxy & Load Balancer & WAS & VPC
    상단으로

    티스토리툴바