반응형
AWS SAA - CO2 공부를 하며 AWS로 3 티어를 구축하는 부분에 대해 공부할 기회가 생겼다.
AWS 3티어를 알기 전에 웹 3 티어에 대해 먼저 이해하고 넘어가자
WEB Application - 3 Tier Architecture
3 - tier architecture는 모든 계층이 3개의 논리적 및 물리적 컴퓨팅 계층으로 구성하는 잘 정립된 소프트웨어 애플리케이션입니다.
위의 그림 처럼 프레젠테이션 계층, 데이터가 처리되는 logic 계층, 그리고 데이터가 저장 및 관리하는 데이터 계층으로 이루어진 3 계층 아키텍처는 다음과 같은 장점을 갖는다. 주요 장점은 각 계층이 자체 인프라에서 실행되기 때문에 각 계층 별로 별도의 개발 팀에 의해 동시에 개발될 수 있으며 유지보수가 용이하다는 장점이 있다.
각 계층에 대한 상세 설명은 다음과 같다
- 웹 서버는 프리젠테이션 계층이며 사용자 인터페이스를 제공합니다. 이는 일반적으로 사용자가 장바구니에 상품을 추가하거나 지불 정보를 추가하거나 계정을 작성하는 전자상거래 사이트와 같은 웹 페이지 또는 웹 사이트입니다. 콘텐츠는 정적 또는 동적일 수 있으며, 이는 일반적으로 HTML, CSS 및 Javascript를 사용하여 개발됩니다.
- 애플리케이션 서버는 사용자 입력을 처리하는 데 사용되는 비즈니스 로직을 수용하는 중간 계층에 해당합니다. 전자상거래 사례를 계속하자면, 이는 인벤토리 데이터베이스를 조회하여 제품 가용성을 리턴하거나 고객 프로파일에 세부사항을 추가하는 계층입니다. 이 레이어는 종종 Python, Ruby 또는 PHP를 사용하여 개발되며, 예를 들어 Django, Rails, Symphony 또는 ASP.NET 등의 프레임워크를 실행합니다.
- 데이터베이스 서버는 웹 애플리케이션의 데이터 또는 백엔드 계층입니다. 이는 데이터베이스 관리 소프트웨어(예: MySQL, Oracle, DB2 또는 PostgreSQL)에서 실행됩니다.
그럼 이제 AWS 클라우드 에서의 3 Tier을 알아보자
먼저 클라우드에서의 3Tier 아키텍처를 확인해보자
구글링 해보다가 너무나도 잘 설명해놓으신 분의 자료 가 있어서 활용해본다.
클라우드에서의 3 Tier에 필요한 구성
- VPC
- 가용영역 (Availability Zone)
- 서브넷(Subnet)
- 인터넷 게이트웨이 (Internet Gateway)
- 라우팅 테이블 (Route Table)
- Bastion host
- 웹 서버 티어 (Web Server Tier)
- 웹 애플리케이션 티어 (Web Application Tier)
- DB(MySQL)
- SSH 접근
- 로드 밸런서 (Load Balancer)
- 오토 스케일 (Auto Scaling)
구성에 대한 설명
VPC
VPC는 가상 사설망을 말한다. VPC를 적용하면 네트워크를 구성할 수 있고, 각각의 VPC에 따라 다르게 네트워크 설정을 주어 독립된 네트워크처럼 작동하게 된다.
가용영역(Avaliability Zone)
각 AZ는 리전 내에서 물리적으로 격리되어 있고, 사용자는 시스템이 상주할 AZ를 선택해야 한다. AZ를 하나로 구현했을 경우, 자연재해나 시스템 장애 등 상황에서 VPC 전체의 가용성이 떨어지므로 AZ를 두 개로 구현한다.
서브넷(Subnet)
서브넷은 VPC의 IP 주소 범위이다. VPC 안에 서브넷을 여러 개 추가하여 내부를 논리적으로 쪼갠다. Subnet은 각 AZ에서 Public subnet 하나와 Private subnet 세 개로 나눈다. 두 개의 Public subnet 중 하나에는 bastion host가 상주하고, 각 AZ의 Private subnet에는 Web server와 WAS, DB가 상주한다.
인터넷 게이트웨이 (Internet Gateway)
Public 서브넷은 외부에서 내부로의 접근이 가능해야 한다. 이는 Internet Gateway; IGW와 연결하여 Private 서브넷으로 들어오고 나갈 수 있는 통로가 되도록 한다. 여기서 IGW는 EC2 인스턴스와 인터넷 사이 통신을 가능하도록 하는 역할이다. 즉, 트래픽이 외부에서 들어오고 외부로 나가는 것을 가능하는 역할을 수행한다.
라우팅 테이블 (Route Table)
라우팅 테이블은 ip 주소에 대해 목적지와 그 목적지에 대한 라우팅 경로를 설정한다. 이는 Public과 Private을 나눠 설정하고 각각 Public, Private 서브넷에 연결한다. Public 라우팅 테이블은 기본적으로 VPC 안의 로컬로 가라는 경로가 있다. 따라서 첫 번째로 VPC 안에 해당하는 주소(192.168.0.0/16)인지 확인하고, 매칭 되지 않으면 다음 설정한 경로를 따라간다. 이는 우리가 모든 트래픽에 대하여 Internet Gateway로 향하는 경로로 설정한다. Private 라우팅 테이블도 같은 방법으로 Private 서브넷들과 연결시켜준다.
Bastion host
외부에서 접근 불가능한 Private Subnet에 접근하기 위해 각각의 AZ의 Public Subnet 중 하나에만 bastion host를 구현하였으며, bastion host를 통해 특정 IP만이 Private Subnet에 접근 가능하도록 설정하였다. 인바운드 규칙에 관리자의 My IP 주소를 설정하여 관리자만이 Bastion Host를 통한 연결 및 관리가 가능하도록 구현하였다. Bastion host를 이용함으로 한 곳에서 모든 접근을 관리함으로써 관리가 수월하며 모든 접근에 대한 로그 또한 한곳에서 확인할 수 있다.
웹 서버 티어 (Web Server Tier)
Private Subnet 안에 Web Server 역할을 할 수 있는 인스턴스를 구축한다. 프리티어 사용자의 설정에 맞게 설정한 후 생성한 VPC와 서브넷을 세부사항에서 선택해준다. 후 보안 그룹에서는 웹 접속이므로 HTTP 유형 80 포트로 모두 접속할 수 있도록 설정한 후, Bastion Host에서 접근할 수 있도록 SSH 유형 22 포트로 Bastion Host Security Group에서 통과한 트래픽에 대해서만 들어올 수 있도록 개방한다.
웹 애플리케이션 티어 (Web Application Tier)
Private Subnet 안에 Web Application Server 역할을 할 수 있는 인스턴스를 구축한다. 프리티어 사용자의 설정에 맞게 설정한 후 생성한 VPC와 서브넷을 세부사항에서 선택해준다. 이후 보안 그룹에서는 WAS 접속이므로 HTTP 유형 8080 포트로 Internal ELB를 통과한 트래픽에 대해서만 들어올 수 있도록 설정한 후, Bastion Host에서 접근할 수 있도록 SSH 유형 22 포트로 Bastion Host Security Group에서 통과한 트래픽에 대해서만 들어올 수 있도록 개방한다.
DB
Availability zone 1-1에 db1를 보안 그룹으로 하는 db1-db를 생성하고 db1-db를 복제(read replica)하여 Availability zone 1-2에 db1-db2를 생성하였다. 쓰기 작업은 Master DB 인스턴스(db1-db)에 하고 읽기 작업은 Read Replica인 Slave DB 인스턴스(db1-db2)에서 실시하면 마스터 DB 인스턴스의 부하를 줄일 수 있다.
반응형
댓글