얼마 전 프로젝트를 진행하면서 Lightsail을 처음 사용하게 되었습니다. 소규모 프로젝트나 개인 개발에 사용하기에 좋은 것 같아서 소개해드리려고 합니다.
AWS Lightsail 서비스
아마존 Lightsail은 AWS에서 만든 가상 프라이 서버(VPS)입니다. 가상머신(Compute), SSD 기반 스토리지, Networking, 로드밸런서, DNS관리, 고정 IP, OS, 개발 플랫폼(Node.js 등), 애플리케이션(Nginx, GitLab) 등 웬만한 기능을 모두 포함하고 있어 웹서비스를 쉽고 빠르게 구축하는데 특화된 서비스입니다. 때문에 EC2, RDS와 같은 개별 서비스를 따로 설정할 필요 없이 Lightsail 하나로 서비스를 운용할 수 있어 가격적인 측면에서도 저렴하게 서비스를 유지할 수 있습니다.
*가상 프라이비 서버(VPS)란 하나의 물리서버를 여러 개의 가상 서버로 쪼개어 사용하는 것을 의미합니다. 때문에 사용자는 다른 사용자들과 자원을 공유하지 않고 독립적인 운영 환경을 제공받을 수 있습니다.

즉, Lightsail은 기존 EC2와 같은 서비스를 간소화 시키고 웹 서비스에 필요한 기능들을 한 곳에 모아 저렴하고 쉽게 관리할 수 있도록 구성된 서비스라고 할 수 있습니다. 또한 서비스의 규모가 커져도 쉽게 확장할 수 있고 Lightsail에서 만들고 설정한 Instance를 Snapshot을 통해 EC2로 쉽게 마이그레이션 할 수 있도록 되어 있습니다.
Lightsail 세팅
Lightsail에는 아래와 같은 서비스 제한이 있습니다.
- 계정당 최대 20개의 인스턴스 유지
- 5개의 고정 IP (EIP)
- 총 3개의 DNS 존
- 총합 20TB의 블록스토리지(디스크) 연결
- 5개의 로드 밸런서
- 최대 20개 인증서
이를 초과하는 경우 일반적인 AWS 방식대로 EC2를 생성하면 됩니다.
https://lightsail.aws.amazon.com/ls/webapp/home/instances
lightsail.aws.amazon.com
Lightsail 인스턴스 생성
위의 링크를 통해 인스턴스를 생성할 수 있습니다.

로그인을 하면 인스턴스 만들기를 통해 인스턴스를 생성할 수 있습니다.
상단 메뉴의 항목에 대해서는 다음과 같습니다.
- 인스턴스 : 본인이 지금 가지고 있는 컴퓨팅 목록 (EC2)
- 컨테이너 : Docker
- 데이터베이스 : 데이터베이스 서비스 (RDB). 가격은 15$ 첫 달 무료부터 115$까지 다양합니다.
- 네트워킹 : 고정 아이피, DNS 영역 생성, 그리고 로드 밸런서 생성을 관리합니다.
- 고정 IP : 인스턴스에서 신규로 만들면 1회용 (재시작 시 다른 아이피 부여) 아이피를 부여받는다 그걸 고정 아이피로 잡아줍니다.
- DNS 영역 생성 : 도메인, 서브도메인을 관리할 수 있습니다. [무료, Route 53 연결 가능]
- 로드밸런서 : 분산된 서버의 부하를 관리할 수 있습니다.
- 저장 : 인스턴스에 용량이 부족한 경우 블록 단위로 추가 용량을 끌어다 사용 가능합니다.
- 도메인 및 DNS : 서버의 도메인을 설정할 수 있습니다.
- 스냅샷 : 인스턴스를 통째로 백업이 가능합니다. 자동으로 백업이 가능하게 스케쥴러를 설정할 수도 있습니다.
1. 인스턴스 리전 선택
아래와 같이 지역을 선택할 수 있습니다.

2. 인스턴스 이미지(OS 세팅) 선택

OS는 Linux/Unix 계열과 MS의 윈도우 계열 중 선택할 수 있고 만일 Node.js로 만든 프로젝트를 한다고 하면, 아래 보이는 항목에서 Node.js 블루프린트를 선택하면 됩니다. 이때 대부분의 청사진은 Bitnami를 사용합니다. Bitnami가 아닌 다른 옵션을 고르고 싶으시면 OS 전용 메뉴에서 수동으로 선택하시면 됩니다.
3. 인스턴스 보안을 위한 키페어 생성
보안을 위해 SSH 키 쌍 변경 -> 새로 만들기 -> 만들다 -> 키 쌍 생성 -> 개인 키 다운을 하면 기본키에서 등불로 변경된 것을 볼 수 있습니다. 다운로드한 키는 로컬에 잘 보관해둬야 합니다.






4. 인스턴스 플랜(가격) 선택
원하는 조건의 인스턴스 플랜을 선택합니다.

5. 인스턴스 생성
인스턴스의 이름을 적고 인스턴스 만들기를 누르면 인스턴스 생성이 완료됩니다.

SSH 외부 연결
인스턴스 생성 후 몇 분이 지나면 아래와 같이 인스턴스가 생성된 것을 볼 수 있습니다.

여기서 SSH연결 버튼을 누르면

외부에서 해당 인스턴스에 연결할 수 있게 됩니다.

인스턴스 ip로 연결해 보니 Bitnami가 잘 뜨는 것을 확인할 수 있습니다.
여기서 아래의 명령어로 샘플 서버를 가동해 보겠습니다.
express --view pug ~/projects/sample
cd ~/projects/sample
npm install
DEBUG=sample:* npm start
위의 명령어를 입력하니 3000번 포트로 샘플 서버가 가동되는 것을 볼 수 있습니다.

** SSH(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 뜻합니다. 외부에서 로컬호스트처럼 접근할 수 있으며 Key를 제출하여 접속합니다.
Lightsail 데이터베이스 생성 & 연결
Amazon Lightsail에서 제공하는 데이터베이스 기능을 이용하여서 MySQL 데이터베이스를 생성하고 연결해 보겠습니다. 물론 Lightsail 인스턴스 내에 데이터베이스를 설치하여 사용할 수 있지만 컴퓨팅 서버와 DB 서버는 따로 분리하는 것이 바람직하므로 Lightsail에서로 이러한 프로비저닝을 제공하는 것 같습니다.
1. 데이터베이스 생성
데이터베이스 생성을 눌러 데이터베이스를 생성합니다.

2. 데이터베이스 선택 및 계정 설정
데이터베이스를 선태하고 계정을 설정합니다.


3. 데이터베이스 플랜 선택
원하는 옵션을 선택합니다.
- $15- 1GB 메모리, 1 vCPU, 40GB SSD 스토리지 및 100GB 전송
- $30– 2GB 메모리, 1 vCPU, 80GB SSD 스토리지 및 100GB 전송
- $60– 4GB 메모리, 2 vCPU, 120GB SSD 스토리지 및 100GB 전송
- $115– 8GB 메모리, 2 vCPU, 240GB SSD 스토리지 및 200GB 전송

4. 데이터베이스 생성 완료
데이터베이스 명을 확인하고 데이터베이스를 생성합니다.

생성 후 시간이 지나면 아래와 같이 데이터베이스가 생성된 것을 확인할 수 있습니다.

MySQL Workbench에서 Lightsail 접속하기
DB를 선택하면 아래와 같이 DB 정보가 나오고 해당 정보를 입력하여 워크벤치로 접속을 시도할 수 있습니다.


접속에 성공하면 아래의 문구가 나오고 접속이 확인된 것을 볼 수 있습니다


DB에 연결되어 조작할 수 있게 되었습니다!

Lightsail 로드밸런서 설정하기

기존의 Lightsail에서는 ELB(Elastic Load Balancer) 기능을 지원해주지 않았지만 업데이트를 통해서 로드밸런서 기능이 추가되었습니다. 그러나 Lightsail에서는 무조건 균등 분산만을 지원하는 단순한 형태의 로드밸런싱만 지원합니다. 따라서 Round Robin이나 IP Hashing 등의 분산 규칙을 설정할 수 없습니다.
*로드밸런싱(Load Balancing)은 컴퓨터 네트워크 기술의 일종으로 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미합니다. 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술입니다.
1. 로드밸런서 생성
로드 밸런서 생성 버튼을 통해 로드 밸런서를 생성 할 수 있습니다.

로드 밸런서의 이름을 설정하고 로드 밸런서를 생성합니다.


2. Lightsail 인스턴스 연결
대상 인스턴스를 선택하여 로드 밸런싱 대상을 선택합니다.

3. 로드밸런서 트래픽 설정
아마존에서 제공하는 SSL인증서를 공짜로, 손쉽게 생성하고 연결할 수 있습니다. 아래 "세션 지속성은" 한번 접속한 이용자는 계속 같은 목적지로 밸런싱 해주는 옵션으로, *세션 불일치를 해결하기 위한 옵션입니다.
<세션 불일치란?>
쿠키(Cookie), 세션(Session), 토큰(Token), JWT (feat. HTTP, 인증, 인가)
인증(Authentication) vs 인가(Authorization) in service 저번글에서 인증(Authentication)과 인가(Authorization)에 대해 알아보았습니다. 같은 내용이지만 인증과 인가가 서스비 내에서는 어떻게 작용할까요? 내가
hunbae.tistory.com

이 밖에도 도메인 설정 등 다양한 옵션이 제공되어 설정할 수 있습니다!
오늘은 AWS의 Lightsail에 대해 알아보았는데요 AWS 설계에 어려움을 느끼는 분들에게 좋은 대안이 되는 도구인 것 같습니다.
** 틀린 내용이 있을 시 지적해 주시면 감사하겠습니다.