외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수입니다.
- 집에 PC를 24시간 구동시킨다.
- 호스팅 서비스(Cafe24, 코리아호스팅등)을 이용한다.
- 클라우드 서비스(AWS, AZURE,GCP 등)을 이용한다.
일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴합니다.
만약 특정시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리합니다.
인터넷(클라우드)을 통해
서버, 스토리지(파일 저장소), 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것입니다.
단순히 물리 장비를 대여하는 것으로 생각하는데 그렇지 않습니다.
AWS의 EC2는 서버 장비를 대여하는 것이지만,
실제로는 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본으로 지원하고 있습니다.
개발자가 직접 해야 할 일을 AWS가 전부 지원을 하는 것입니다.
IaaS(Infrastructure as a Service)
- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스입니다.
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스라고 보면 됩니다.
- AWS 의 EC2, S3 등
PaaS(Platform as a Service)
- IaaS 에서 한번 더 추상화한 서비스입니다.
- 한번 더 추상화했기 때문에 많은 기능이 자동화되어 있습니다.
- AWS 의 Beanstalk(빈스토), Heroku(헤로쿠) 등
SaaS(Software as a Service)
- 소프트웨어 서비스를 이야기합니다.
- 구글 드라이브, 드랍박스, 와탭 등
많은 클라우드 서비스중에 AWS를 사용하려 하고 이유는 아래와 같습니다.
- 첫 가입시 1년간 대부분 서비스가 무료입니다.
단 서비스 제한이 있는데 이는 각 서비스를 설정할 때 해보겠습니다. - 클라우드에서는 기본적으로 지원하는 기능(모니터링, 로그관리, 백업, 복구, 클러스터링 등등)이 많아
개인이나 소규모일 때 개발에 좀 더 집중할 수 있습니다. - 많은 기업이 AWS로 이전 중이기 때문에 이직할 때 AWS 사용 경험은 도움이 됩니다.
국내에서는 AWS 점유율이 압도적입니다.
쿠팡, 우아한형제들, 리멤버 등 클라우드를 사용할 수 있는 회사에서는 대부분 AWS를 사용합니다. - 사용자가 많아 국내 자료와 커뮤니티가 활성화되었습니다.
참고로 Beanstalk 을 사용하면 대부분의 작업이 간소화되지만, 프리티어로 무중단 배포가 불가능합니다.
배포할 때마다 서버가 다운되면 제대로 된 서비스를 만들 수 없으니 무중단 배포는 필수이고 빈스톡은 사용할 수 없습니다.
AWS 가입을 위해서는 Master 혹은 Visa 카드가 필요합니다.
준비가 되었다면 AWS 공식 사이트로 이동하겠습니다.
이후 무료 계정 만들기를 선택하여 계정을 만들어줍시다.
EC2 는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버입니다.
보통 AWS에서 리눅스 서버 혹은 윈도우 서버를 사용합니다
라고 하면 이 EC2를 이야기하는 것입니다.
EC2 의 이름은 Elasitc Compute Cloud에서 C가 2개가 있어 C2라는 이름을 붙였습니다.
AWS에서는 대부분 첫 글자가 중복되면 숫자로 표기합니다.
비슷한 예로 AWS의 S3는 Simple Storage Service 를 줄여서 S가 3개라고 하여 S3입니다.
AWS에서 무료로 제공하는 프리티어 플랜에서는 EC2 사용에 다음과 같은 제한이 있습니다.
- 사양이 t2.micro만 가능합니다.
* vCPU(가상 CPU) 1 Core, 메모리 1GB 사양입니다.
* 보통 vCPU 는 물리 CPU 사양의 절반 정도 성능을 가집니다. - 월 750시간의 제한이 있습니다. 초과하면 비용이 부과됩니다.
*24시간 * 31일 = 744 시간
입니다.
* 즉, 1대의 t2.micro만 사용한다면 24시간 사용할 수 있습니다.
이러한 제한 사항을 주의한다면 1년간 신나게 사용할 수 있습니다.
그리고 EC2를 만들기 전에, 본인의 리전을 확인해 봅니다.
리전이란 AWS의 서비스가 구동될 지역을 이야기합니다.
AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상머신들을 사용할 수 있습니다.
서울 리전이 생기기 전까지는 국내 서비스들은 도쿄 리전을 사용했습니다.
현재는 서울 리전이 있어 국내에서 서비스한다면 무조건 서울 리전을 선택하면 됩니다.
리전이 서울로 되어있지 않다면 위 그림과 같이 서울로 변경해 줍시다.
검색창에 ec2를 입력하여 EC2 서비스를 클릭합니다.
EC2 대시보드가 나오는데, 여기서 중앙에 있는 [인스턴스 시작]
버튼을 클릭합니다.
인스턴스란 EC2 서비스에 생성된 가상머신을 이야기합니다.
인스턴스를 생성하는 첫 단계는 AMI (Amazone Machine Image)를 선택하는 것입니다.
AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것을 이야기합니다.
인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 됩니다.
예를 들어 아마존 리눅스 1 AMI를 사용한다면
Amazone Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미합니다.
우리는 Amazone Linux AMI를 선택해줍시다.
아마존 리눅스 2 대신에 아마존 리눅스 1 을 선택한 이유는
아직 국내 자료가 리눅스 1 이 더 많기 때문입니다.
보통 센토스 6 버전으로 진행되는 자료들은 아마존 리눅스 1 에서 모두 사용할 수 있습니다.
아마존 리눅스 2는 센토스 7 버전 자료들을 그대로 사용할 수 있습니다.
그럼 굳이 센토스 AMI를 사용하지 않고 아마존 리눅스 AMI를 사용한 이유는 무엇일까요? (센토스 해도 되지않나?)
이유는 아래와 같습니다.
- 아마존이 개발하고 있기 때문에 지원받기가 쉽습니다.
- 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용할 수 있습니다.
- AWS의 각종 서비스와의 상성이 좋습니다 .
- Amazone 독자적인 개발 리포지토리를 사용하고 있어 yum이 매우 빠르다.
- 또한 이외 다른 유형을 선택할 경우 비용이 청구됩니다.
AWS를 사용하는데 굳이 AWS에서 적극적으로 지원하는 운영체제를 선택하지 않을 이유가 없습니다.
다음은 인스턴스 유형을 선택하는 단계입니다.
인스턴스 유형에서는 프리티어로 표기된 t2.micro를 선택합니다
유형에 대해 짧게 소개하면 t2
는 요금 타입을 이야기하며, micro
는 사양을 이야기합니다.
t2 외에도 t3도 있으며 이들을 보통 T 시리즈라고 합니다.
T시리즈는 다양한 사양을 사용할 수 있어서 범용 시리즈로 불리기도 합니다. (다른 시리즈는 nano, micro 사양이 존재하지 않습니다)
이들은 다른 서비스와 달리 크레딧이란 일종의 CPU를 사용할 수 있는 포인트 개념이 있습니다.
인스턴스 크기에 따라 정해진 비율로 CPU 크레이딧을 계속 받게 되며,
사용하지 않을 때는 크레딧을 계속 축적하고, 사용할 때 이 크레딧을 사용합니다.
정해진 사양보다 더 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만,
크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없습니다.
그래서 트래픽이 높은 서비스들은 T 시리즈를 쓰지 않고 다른 시리즈를 사용하기도 합니다.
다만 그전까지는 활용도가 높기 때문에 시작하는 단계에서는 좋은 선택입니다.
다음 단계는 세부정보 구성입니다.
기업에서 사용할 경우 화면상에 표시된 VPC, 서브넷 등을 세세하게 다루지만,
여기서는 혼자서 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어갑니다.
다음 단계는 스토리지 선택입니다.
스토리지는 우리가 흔히 사용하는 하드 디스크라고 부르는 서버의 디스크(SDD 포함)를 이야기하며
서버의 용량을 얼마나 정할지 선택하는 단계입니다.
여기서 설정의 기본값은 8GB 입니다.
하지만 최대 30GB 까지 프리티어로 사용 가능합니다. (그 이상 넘어가면 비용이 청구됩니다.)
그러니 사용 용량을 30GB까지 늘려줍시다.
태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록합니다.
태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있습니다.
EC2의 이름을 붙인다고 생각하고 넣으면 됩니다.
여러 인스턴스가 있을 경우 이를 태그별로 구분하면 검색이나 그룹짓기 편하므로
본인 서비스의 인스턴스를 나타낼 수 있는 값으로 등록합니다.
다음으로 보안 그룹입니다.
보안 그룹은 방화벽을 이야기합니다.
서버로 80포트 외에는 허용하지 않는다는 역할을 하는 방화벽이 AWS에서는 보안 그룹으로 사용됩니다.
기존에 생성된 보안 그룹이 없으므로 보안 그룹 이름엔 유의미한 이름으로 변경합니다.
위 보안그룹 부분이 굉장히 중요한 부분입니다.
유형 항목에서 SSH 이면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접속할때를 이야기합니다.
pem 키가 없으면 접속이 안 되니 전체 오픈(0.0.0.0/0,::/0)
하는 경우를 종종 발견합니다.
이렇게 되면 이후 파일 공유 디렉토리나 깃허브등에 실수로 pem 키가 노출되는 순간
서버에서 가상화폐가 체굴되는 것을 볼 수 있습니다. (ㅋㅋㅋ)
보안은 언제나 높을수록 좋으니 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전합니다.
그래서 본인 집의 IP를 기본적으로 추가하고
(내 IP를 선택하면 현재 접속한 장소의 IP가 자동 지정됩니다.)
카페와 같이 집 외에 다른 장소에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전합니다.
이 외에도 현재 프로젝트의 기본 포트인 8080 와 HTTPS를 추가하고 [검토 및 시작]
버튼을 클릭합니다.
검토 화면에서 보안 그룹 경고를 하는데, 이는 8080이 전체 오픈이 되어서 발생합니다.
8080을 열어 놓는 것은 위험한 일이 아니니 바로 [시작하기]
버튼을 클릭합니다.
인스턴스로 접근하기 위해서는 pem 키가 필요합니다.
그래서 인스턴스 마지막 단계는 할당할 pem 키를 선택하는 것입니다.
인스턴스 는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않습니다.
일종의 마스터 키이기 때문에 절대 유출되면 안됩니다.
pem 키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장합니다.
기존에 생성된 pem 키가 있다면 선택하고 없다면 신규로 생성합니다.
필자같은 경우는 이미 다운 받은 적이 있어서 선택창이 나온다.