Blog

웹 호스팅의 과정

AWS (Amazon Web Service) #


1. EC2 (Elastic Compute Cloud) #


1) VPC (Virtual Private Cloud)

  • 사용자의 AWS 계정 전용 가상 네트워크

2) 인스턴스 (Instance)

  • 가상 컴퓨터 혹은 서버

  • Ubuntu

    • 리눅스 배포판 운영 체제(OS)

3) 볼륨 (Volumes)

  • EC2에 연결 할 수 있는 저장매체 (≒HHD)

  • Amazon EBS (Elastic Block Store)를 사용하는 저장소로 프리티어에서는 30GB까지 제공된다.

  • 30GB를 초과할 경우 초과한 용량만큼 금액이 청구된다.

4) 키페어 (Key pairs)

  • 인스턴스에 대한 로그인 정보가 담겨있다.

  • 공개키 암호화 방식을 적용하여 사용자에게 비밀 키를 제공하여 로그인 시 사용된다.

5) 탄력적 IP (Elastic IP)

  • EC2의 인스턴스의 경우 재부팅 시 IPv4 주소가 변경 되므로 재부팅 시 매번 dns 설정을 변경해야 하는 이슈가 있다.

  • 이를 보완하기 위해 사용하는 것이 탄력적 IP주소로 고정된 하나의 IP주소를 발급받아 인스턴스와 연결하는 과정을 통해 재부팅 시에도 항상 동일한 IP주소를 사용할 수 있도록 한다.

  • 탄력적 IP와 연결된 인스턴스가 없을 경우 요금이 청구될 수 있다. 프리티어의 경우 주의할 것

6) 보안그룹 (Security groups)

  • 가상 방화벽

  • 사용자가 정의한 규칙을 기반으로 특정 포트에 대한 트래픽 및 연결을 제어한다.

  • 인바운드 규칙에서는 들어오는 트래픽을, 아웃바운드 트래픽에서는 나가는 트래픽을 제어한다.

    image-20230907-061210.png

    북메이트에서 외부(클라이언트)는 80번, 443번 포트로만 접근 가능하다.

7) 로드밸런서 (Load Balancer)

  • 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스, 컨테이너, IP 주소와 같은 여러 대상에 자동으로 분산시킨다.

  • 주기적으로 인스턴스의 상태 확인을 하여 비정상적인 인스턴스에 대해 트래픽 전송을 중단한다.

8) 스냅샷 (Snapshots)

  • 볼륨에 저장 된 데이터를 캡쳐하여 추후 문제가 발생 할 경우 사용 할 수 있도록 저장한다.

  • 스냅샷이 생성 된 당시와 동일한 환경의 새 볼륨을 생성할 수 있다.


2. ACM (Amazon Certificate Manager) #

  • 아마존에서 제공하는 SSL 서비스

  • SSL (Secure Sockets Layer)

    • 보안 소켓 계층

    • 웹 사이트와 브라우저 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하는 표준 기술이다.

  • TLS (Transport Layer Security)

    • 전송 계층 보안

    • SSL의 향상된 버전이다.

  • HTTPS (Hyper Text Transfer Protocol Secure)

    • 웹 사이트가 SSL / TLS로 보호되는 경우를 뜻한다.

Web Server | WAS (Web Application Server) #

Untitled

Web Server WAS
정적인 컨텐츠(이미지 파일 등) 처리

● 프로그램(JSP, Servlet 등) 실행 환경, DB접속 기능 제공

● 클라이언트와 WAS사이의 요청 처리
동적인 컨텐츠 (JSP, Servlet) 처리

● 여러 개의 트랜잭션(논리적 작업 단위) 관리 기능

● 비즈니스 로직 수행
Nginx, Apache Apache Tomcat

Web Server와 WAS를 따로 써야 하는 이유 #

  1. WAS 부하 방지

    • 정적인 컨텐츠를 Web Service에서 만 처리 하는 방식으로 기능을 분리하여 더 빠른 처리가 가능하며, WAS의 부담이 적어진다.
  2. 보안 강화

    • SSL에 대한 암/복호화 처리에 Web Server를 사용

    • Web Server를 DMZ에 위치하도록 하여 외부에서 WAS에 바로 접속하지 않게 할 수 있다. 이를 통해 DB와 직접 연결 되어있는 WAS를 보호한다.

    • WAS의 포트를 다르게 하여 해당 포트에 방화벽을 설정하는 방식으로 보안 강화가 가능하다.

  3. 여러 대의 WAS

    • WAS를 여러 대 연결하면 Web Server에 Load Balancing 역할 부여가 가능

    • 대용량 웹 애플리케이션의 경우 일부 WAS의 접속을 차단하여 업데이트 하고 적용하는 방식 등을 이용해 무 중단 운영이 가능하다.

    • 다양한 종류의 WAS를 이용 가능하다.

      • 예) PHP, Django, Spring

Untitled

  • BookMate의 웹 서비스 구조

Client(bookmate.life) ↔ Web Server(*Nginx) ↔ WAS(Spring Boot 내장 Tomcat) ↔ DB(Oracle)

*Nginx : 비동기 이벤트 기반 구조의 경량화 웹 서버 프로그램

Bookmate에서는 **Reverse Proxy Server로 활용 되고 있다.

**Reverse Proxy : 클라이언트가 서버를 요청할 때 Reverse Proxy를 호출하고 Reverse Proxy가 서버로부터 응답을 전달 받아 다시 클라이언트에게 전송하는 방식으로 애플리케이션 서버를 감추는 역할을 한다.

출처 & 참고자료 #


쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념 | 인사이트리포트 | 삼성SDS

[소개][초보자를 위한 AWS 웹구축] 0. 웹서버 아키텍처 소개

[Web] Web Server와 WAS의 차이와 웹 서비스 구조 - Heee’s Development Blog