[AWS] AWS Lightsail을 이용해 간단하고 저렴하게 클라우드 서버 이용해보기
목적
- AWS Lightsail을 이용해 AWS 클라우드 서비스를 이용한 내용을 정리 및 기록
- AWS Lightsail 간편한 설정과 상대적으로 가성비 있는 클라우드 서비스라는 것을 알리기 위함
(다른 더 좋은 것이 있을수도...)
목표
- AWS Lightsail을 이용해 인스턴스 생성해본다.
- 인스턴스에 대한 기본 설정에 대해서 알아보자.
개인 프로젝트하면서 나만의 서버를 구축을 해야할 필요성이 생겨서 클라우드 서비스를 이용하기로 했습니다. 클라우드 서버의 가장 큰 장점은 내 개인 노트북으로 까딱까딱 몇 개만 하면 나만의 서버를 구축하고 이용할 수 있다는 것이라 생각합니다. 개인 프로젝트를 빌드하고 배포함으로써 어디서든 내가 만든 서비스를 사용해 볼 수 있다는 점에서 아주 매력적입니다.
이번 시간에는 클라우드 서비스 중 하나인 AWS Lightsail을 통해 인스턴스 생성에 대해서 정리해보고 이에 대한 간단한 평가 및 소감을 끄적끄적 적어보고자 합니다.
📌 1. AWS Lightsail??
원래 AWS EC2를 이용해 클라우스 서버를 구축하려고 했으나 과거에 막 가져다 쓰다가 요금 폭탄에 직면했던 경험이 있어서 다른 대체제를 찾아보게 되었습니다. 사실 AWS를 저렴하게 이용하는 방법이 있다면 EC2를 통해 제대로 사용해보고 싶지만 아직 AWS 자체에 대한 지식이 없어서 잠시 접어두기로 했습니다.
그 중 AWS에 Lightsail이란 서비스를 알게 되었고 이름에서도 느껴지는 무언가 가벼운(light)느낌에 이끌려 이것을 사용하기로 결심했습니다.
AWS Lightsail과 EC2의 차이점은 AWS에서 아주 친절하게 표까지해서 설명해주고 있는데요. (설명 링크)
저한테 가장 눈에 띄었던 것은
Lightsail | EC2 |
가격이 저렴하고 고정 가격 모델이 있습니다. | 요금은 사용한 만큼 지불하는 모델을 따릅니다. |
요금에 대한 내용이었습니다.
Lightsail을 이용해 간단하게 instance 생성해보겠습니다.
📌 2. Lightsail을 이용한 Instance 생성
AWS lightsail을 이용하기 위해 AWS 계정이 필요합니다. 계정을 생성할 때 결제연동이 가능한 신용카드 등록하는 부분도 있는데요. 이부분에 대해서는 구글이 아주 친절하게 알려줄 것입니다. 여기서는 기본적으로 AWS 계정이 있다는 전제조건을 가지고 이어가겠습니다.
https://lightsail.aws.amazon.com/ls/webapp/home/instances
위의 링크를 타고 lightsail dashboard에 들어갑니다.
대시보드에 들어가서 오른쪽에 보이는 create instance 주황색 버튼을 클릭합니다.
운영체제를 선택해야합니다. 저같은 경우는 OS Only로 Amazon Linux2 OS를 선택하였습니다.
SSH 접속을 위한 key pair 설정이 있습니다. 저는 이미 생성했던 key pair가 있지만 처음에는 아무것도 없을 것입니다. create new를 통해 key pair를 생성합니다.
원하는 kay pair 이름을 작성하고 generate key pair 버튼을 클릭합니다. 그러면 생성된 private key를 다운받아질 것입니다.
다운 받은 private key 파일은 절대 외부에 노출되어서도 안되고 공유해서도 안되고 잃어버리는 것도 안됩니다. 내 인스턴스가 비트코인 채굴용으로 사용되고 싶지 않나면 key 파일을 잘 보관하시길 바랍니다.
(실제로 github에 aws에서 다운받은 pem 파일을 업로드했다가 천 만원 단위의 요금 폭탄을 받았던 사례가 있었다고 하더라구요.)
아주아주 중요한 plan 관련 선택입니다. First 3 months free는 AWS 프리티어 정책과 동일하다고 볼 수 있습니다.
클라우드 서버를 750시간 사용한 이후 표준 요금표대로 요금이 부과됨을 알려주고 있는데요. 한달은 24 x 30이니 720시간 정도되기 때문에 instance가 24시간 작동되어도 750시간을 넘지는 않습니다. 사실상 3개월간 무료라고 보시면 됩니다.
만약 정말 간단한 프로그램을 클라우드 서버에서 구동해보고 싶다하시면 프리티어 적용 대상 Plan을 사용하셔도 무방합니다.
본인이 instance 사용목적이 무엇인지에 따라 판단하시면 되겠습니다.
저의 사용 사례를 예시로 들자면 저는 lightsail 이용하는 목적이 jenkins 서버 구축하는 것과 Spring Boot 어플리케이션을 클라우드 서버에서 실행해보고자 함입니다. jenkins 서버를 구축하고 실행하는데 2GB 용량의 메모리는 턱없이 부족했기 때문에 4GB 이상의 메모리를 가진 plan을 선택했습니다.
(사실 프리티어를 100프로 활용하기 위해 처음에 2GB 메모리 플랜으로 했었는데요. jenkins 프로그램에서 item 하나 실행했다가 메모리 부족으로 jenkins 서버가 죽어버리더라구요,,,)
적절한 instance 이름을 지어주시고 create instance를 눌러줍니다. (key-only tags, key-value tags는 생략하셔도 됩니다.)
생성한 instance가 pending(준비중) 상태로 나오는데요. 몇 초 ~ 몇 분 기다리시면 오른쪽 인스턴스처럼 Running 상태가 됩니다.
이로써 인스턴스 생성을 완료하였습니다. (정말 간단합니다.)
📌 3. 인스턴스 설정하기
인스턴스를 생성하고 또 해야할 일이 있습니다.
생성한 인스턴스에 위 사진처럼 manage 버튼을 클릭합니다.
Networking에 들어갑니다.
네트워킹에 들어가면 public, private ip를 확인할 수 있습니다. public ip에 static ip를 적용해줍니다.
static ip는 AWS 계정에 할당하는 고정형 ip 입니다. 계정을 삭제하거나 static ip를 삭제하기 전까지 말 그대로 고정된 ip를 사용할 수 있다는 장점이 있습니다. (AWS 설명 링크)
static ip 이름을 지어주고 create and attach 버튼 클릭하면 생성과 동시에 해당 instance public ip에 attach 됩니다.
이런식으로 attach 되었다는 것을 확인할 수 있습니다.
그 다음 SSH를 통한 shell 접속을 위해 방화벽을 열어주어야 합니다. 위 사진에 빨간색 네모박스로 표시한 버튼을 클릭합니다.
SSH(22 포트)에 대해서 특정 ip로 제한을 두려고 합니다. Restrict to IP address를 체크하고 Source IP Address를 지정해줍니다.
개인 노트북에서 인스턴스로 SSH 접속을 하고 싶다하면 개인 노트북이 연결하고 있는 네트워크의 ip 주소를 설정해주어야 합니다. private ip로 하면 안되고 public ip 주소이어야 합니다. 확인은 구글에 ip address 확인이라고 검색하시면 쉽게 확인할 수 있습니다.
(ip 주소 확인 링크)
카페에서 SSH 접속하고자 할 때 카페의 public ip 주소를 지정해주어야 하는데요. 사실 안전하지 않는 방법이기 때문에 되도록 집에서 접속하는 것이 좋습니다.
여기까지 하면 기본적인 인스턴스 설정을 마치게 됩니다.
📌 4. SSH를 통한 인스턴스 원격 접속
개인 노트북에서 콘솔화면에 들어갑니다.
(macOS 환경으로 작성하였습니다. window 환경에서는 콘솔이 아닌 putty 같은 ssh 접속 프로그램을 따로 이용해야 합니다.)
ssh -i "aws-cloud-server.pem" ec2-user@[instance_ip_address]
인스턴스 생성할 때 다운받은 pem 키파일이 있는 디렉토리로 이동(cd)한 다음 ssh 명령어를 통해 인스턴스에 SSH 접속을 할 수 있습니다.
이렇게 접속 성공해야 합니다.
접속이 실패하는 경우가 있는데요. 위에서 설정한 SSH 포트에 대한 방화벽 설정이 제대로 동작하는지 확인해야 합니다. 방화벽 설정할 때 허용 ip 주소로 제대로 된 ip 주소를 지정했는지 체크해야 합니다.
📌 5. 정리 및 소감
AWS에서 lightsail을 소개할 때 "소규모에서 중간 규모에 이르는 워크로드가 있는 애플리케이션에 사용됩니다." 라고 소개하고 있습니다. 저와 같이 개인 프로젝트를 클라우드에 올려보고 서비스해보려 할 때 좋은 대안이 될 수 있을 거라 생각합니다.
lightsail의 장점을 적어보자면 위에 설명한 내용이 초기 인스턴스 설정의 거의 모든 것이라 할정도로 인스턴스 생성이 아주아주 쉽고 UI가 직관적입니다. AWS EC2는 UI가 무언가 난잡하고 처음 사용하는 사용자 입장에서 복잡할 수 있지만 lightsail은 처음 사용해도 바로바로 적용해볼 수 있을 정도로 간단합니다. 저처럼 빠르게 클라우드 서버를 올리고 적용해보고자 할 때 추천드립니다.
단점은 customizing의 제약이 있습니다. 인스턴스의 스펙이 마음에 안들어 스케일 업을 하고자 한다면 기존의 instance를 엎고 새로운 instance를 생성해서 사용해야 합니다. 유동적으로 스펙을 조정할 수 없습니다.
그리고 제 개인적으로 아직까지 요금이 비싸게 느껴집니다. EC2에 비해서 상당히 저렴하다고 할 수 있지만 제가 원하는 구성의 플랜을 사용하려고 하면 가격이 확 올라갑니다.
인스턴스를 여러 개 생성해서 어플리케이션 용도, 젠킨스 서버 용도, monitoring 용도로 사용해보고 싶은 마음이 있는데 하나당 20달러, 40달러씩 돈이 나가면 마음이 아플 것 같네요,,,
어찌됐든 저는 AWS lightsail을 조만간 계속 이용해보려고 합니다. 조만간 lightsail을 이용해 jenkins 구축해보고 실제 item 생성해서 어플리케이션 테스트, 빌드 자동화한 내용도 정리해보겠습니다.
틀린 내용이 있으면 언제든 피드백 주세요~ 감사합니다