VM 기반의 웹 서비스 구성
이 문서에서는 3-tier 아키텍처를 기반으로 클라우드에서 웹 서비스를 구성하는 방법을 소개합니다.
- 예상 소요 시간: 60분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
시작하기 전에
이 튜토리얼에서는 3-tier 아키텍처 기반의 웹 서비스를 구성하는 방법을 소개합니다. 3-tier 아키텍처는 웹 애플리케이션을 논리적으로 3개 계층으로 나누어 구성하는 방법으로, 주로 다음과 같이 구성됩니다.
- Web 계층: 사용자와 직접 상호작용하는 부분으로, 웹 브라우저를 통해 접근됩니다.
- App 계층: 비즈니스 로직이 실행되는 부분으로, 사용자의 요청을 처리하고 데이터베이스와 상호작용합니다.
- 데이터베이스 계층: 데이터를 저장하고 관리하는 부분으로, 애플리케이션 계층에서 필요한 데이터를 제공합니다.
시나리오 소개
이 시나리오에서는 3-tier 아키텍처를 활용하여 카 카오클라우드 도서관 웹서비스를 구현합니다. 이를 통해 웹, 애플리케이션, 데이터베이스 계층을 갖춘 안정적이고 확장 가능한 웹 서비스 환경을 구축할 수 있습니다. 주요 내용은 아래와 같습니다.
- 3-tier 아키텍처를 활용하여 Web 호스팅을 위한 컴퓨팅 환경 구성
- Bastion 호스트를 활용하여 안전하고 효율적인 웹 서비스 아키텍처 설계
- 카카오클라우드 로드 밸런서를 사용하여 고가용성 확보
- 카카오클라우드 MySQL을 사용하여 데이터베이스 구성
시나리오 아키텍처
사전 작업
사전 작업 단계에서는 3-Tier 아키텍처 기반의 웹 서비스 구성에 필요한 리소스를 생성합니다. 우선 3-Tier 아키텍처를 배포하기 위한 카카오클라우드 네트워크 환경을 구축합니다. 그 다음 VM에서 웹 서버 인스턴스, 애플리케이션 서버 인스턴스와 함께, 보안적인 이유로 외부에서 직접적으로 접속할 수 없는 사설 네트워크에 위치한 서버에 접근하기 위해, 중간 단계의 서버인 Bastion 서버 인스턴스를 구성해 보겠습니다.
1. 네트워크 환경 구축
카카오클라우드에서 컴퓨팅 환경을 구축하기 전에 먼저 네트워크 환경 설정이 필요합니다. 이를 위해, 다중 가용 영역에서 NAT 인스턴스를 이용한 네트워크 구축 문서를 참조하여 3 Tier 아키텍처를 위한 네트워크 환경을 구축하세요. 이 문서는 프라이빗 서브넷에서도 인터넷에 안전하게 연결할 수 있도록 NAT 인스턴스를 생성하는 방법에 대해서 설명합니다. 이 문서에서 설명하는 네트워크 설정은 다중 가용 영역에서 NAT 인스턴스를 이용한 네트워크 구축 문서에서 정한 값에 기반합니다.
2. 보안 그룹 설정
-
카카오클라우드 콘솔 > Beyond Networking Service > VPC > 보안 그룹으로 이동합니다.
-
우측의 [보안 그룹 생성] 버튼을 클릭하여 새로운 보안 그룹을 생성합니다.
보안 그룹: tutorial-bastion-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-bastion-sg Bastion호스트의 보안정책 -
하단의 [+ 추가하기] 버튼을 클릭 후, 인바운드 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
나의 퍼블릭 IP 확인하기다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
추가할 인바운드 정책 항목 설정값 bastion inbound policy 1 프로토콜 TCP
패킷 출발지 {사용자 퍼블릭 IP}/32
포트 번호 10000-10010 정책 설명(선택) bastion inbound policy 1 bastion inbound policy 2 프로토콜 TCP
패킷 출발지 {사용자 퍼블릭 IP}/32
포트 번호 81 정책 설명(선택) bastion inbound policy 2 bastion inbound policy 3 프로토콜 TCP
패킷 출발지 {사용자 퍼블릭 IP}/32
포트 번호 22 정책 설명(선택) bastion inbound policy 3
보안 그룹: tutorial-web-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-web-sg 웹서버의 보안정책 -
하단의 [+ 추가하기] 버튼을 클릭 후, 인바운드 조건 을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
추가할 인바운드 정책 항목 설정값 web inbound policy 프로토콜 TCP
패킷 출발지 10.0.0.0/20
포트 번호 80 정책 설명(선택) web inbound
보안 그룹: tutorial-app-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-app-sg 애플리케이션 서버의 보안정책 -
하단의 [+ 추가하기] 버튼을 클릭 후, 인바운드 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
추가할 인바운드 정책 항목 설정값 app inbound policy 프로토콜 TCP
패킷 출발지 10.0.32.0/20 포트 번호 8080 정책 설명(선택) app inbound
-
3. Bastion 인스턴스 생성
3-Tier 아키텍처에 Bastion Host를 결합하면 클라우드 기반의 웹 서비스를 안전하고 효율적으로 운영하고 관리할 수 있습니다.
Bastion 서버는 원격에서 클라우드 인스 턴스에 접속하기 위한 게이트웨이 역할을 수행하는 중요한 구성 요소로서, 클라우드 환경에 접근하면 직접적으로 웹과 애플리케이션 계층에 접근하는 것을 방지하여 보안을 강화합니다.
또한 효율적인 원격 접속 및 클라우드 인스턴스를 관리하고, 각 계층간 통신을 원활하게 조율하는데 도움이 됩니다.
VM에서 Bastion
인스턴스를 생성하는 방법은 다음과 같습니다.
-
카카오클라우드 콘솔 > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.
-
인스턴스 탭에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 VM 인스턴스를 생성합니다.
구분 항목 설정/입력값 비고 기본 정보 이름 tutorial-bastion 개수 1 이미지 Ubuntu 20.04 인스턴스 유형 m2a.large 볼륨 루트 볼륨 20 키 페어 {USER_KEYPAIR}
⚠️ 키 페어는 최초 1회 안전하게 보관해야 합니다.
잃어버린 키는 복구할 수 없으며, 재발급이 필요합니다.네트워크 VPC tutorial 서브넷 main (10.0.0.0/20) 보안 그룹 tutorial-bastion-sg