이번엔 AWS라는 클라우드 서비스를 이용해 본격적으로 서버 배포를 진행해 보겠다.
외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수이다.
24시간 작동하는 서버에는 3가지 선택지가 있다.
- 집에 PC를 24시간 구동시킨다.
- 호스팅 서비스(Cafe 24, 코리아호스팅 등)을 이용한다.
- 클라우드 서비스(AWS, AZURE, GCP 등)을 이용한다.
일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴하다. 만약 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리하다.
클라우드에 대해 잠깐 이야기를 하자면 클라우드 서비스는 쉽게 말해 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것이다. 단순히 물리 장비를 대여하는 것으로 생각하는데, 그렇지 않다.
예를 들어 AWS의 EC2는 서버 장비를 대여하는 것이지만, 실제로는 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원하고 있다. 개발자가 직접 해야 할 일을 AWS가 전부 지원을 하는 것이다.
이런 클라우드에는 몇 가지 형태가 있다.
(1) Infrastructure as a Service(IaaS, 아이아스, 이에스)
- 기존 물리 장비를 마들웨어와 함께 묶어둔 추상화 서비스이다.
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서브스라고 보면 된다.
- AWS의 EC2, S3 등
(2) Platform as a Service(PaaS, 파스)
- 앞에서 언급한 IaaS에서 한 번 더 추상화한 서비스이다.
- 한 번 더 추상화했기 때문에 많은 기능이 자동화되어 있다.
- AWS의 Beanstalk(빈스톡), Heroku(헤로쿠) 등
(3) Software as a Service(SaaS, 사스)
- 소프트웨어 서비스를 이야기한다.
- 구글 드라이브, 드랍박스, 와탭 등
이번엔 여러 클라우드 서비스 중 AWS를 선택한다. 진행하는 모든 AWS 서비스는 IaaS를 사용한다. PaaS 서비스인 빈스톡을 사용하면 대부분 작업이 간소회되지만, 프리티어로 무중단 배포가 불가능하다.
배포할 때마다 서버가 다운되면 제대로 된 서비스를 만들 수 없으니 무중단 배포는 필수이고 빈스톡은 사용할 수 없다.
이제 AWS 회원 가입과 앞으로 배포할 서버인 EC2를 생성하고 설정해 보겠다.
AWS 가입을 위해서는 한 가지 필수 준비물이 있다. Master 혹은 Visa 카드가 필요하다.
AWS 공식 사이트로 이동한 뒤 무료 계정 만들기를 선택한다.
신규로 생성할 AWS 계정 정보를 등록한다.
동의하고 다음으로 넘어가면 영문 주소 입력란이 등장한다. 영문 주소는 네이버에서 영문주소 검색을 하거나 본인의 주소 영문으로 검색하면 되니 해당 정보를 입력한다.
네이버로 확인된 영문 주소를 기재한다. 여기서 계정 유형은 개인으로 선택한다.
다음은 결제 정보란이다. 준비한 Master 혹은 Visa 카드의 정보를 등록한다. 이때 해당 카드에는 최소 1달러가 결제 가능해야 한다. 보안 전송을 클릭하면 계좌 확인을 위한 1달러 결제가 진행된다.
문자로 결제 성공 알람이 오면 휴대폰 정보와 보안 문자를 기재한다. 보안 문자를 정상적으로 입력했다면 등록한 전화번호로 전달된 4자리 코드를 등록한다.
마지막으로 지원 플랜을 선택한다. 무료로 사용하기 위함이니 무료 기본 플랜을 선택한다.
여기까지 했으면 AWS 회원가입이 끝났다. 화면 오른쪽에 있는 콘솔 로그인 버튼을 클릭해서 방금 가입한 정보로 로그인을 진행한다. 가입할 때 사용된 이메일 주소와 비밀번호를 차례로 입력한다.
정상적으로 로그인이 되었다면 바로 EC2를 생성해 보겠다.
EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버이다. 보통 "AWS에서 리눅스 서버 혹은 윈도우 서버를 사용한다." 라고 하면 이 EC2를 이야기하는 것이다.
그럼 EC2를 만들기 전에, 본인의 리전을 확인해 본다.
다음과 같이 서울로 되어있지 않다면 서울로 변경한다.
서울로 리전을 변경했다면 화면 중앙에 잇는 검색창에서 ec2 를 입력하여 EC2 서비스를 클릭한다.
EC2 대시보드가 나오는데, 여기서 중앙에 있는 인스턴스 시작
버튼을 클릭한다. 인스턴스란 EC2 서비스에 생성된 가상머신을 이야기한다.
인스턴스를 생성하는 첫 단계는 AMI(아마존 머신 이미지)를 선택하는 것이다. 먼저 AMI에 대해 설명하면, AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것을 이야기한다. 인스턴스라는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 된다.
예를 들어 아마존 리눅스 1 AMI를 사용한다면 Amazon Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미한다. 우리는 Amazon Linux AMI를 선택한다.
아마존 리눅스 AMI를 사용한 이유가 무엇일까? 이유는 다음과 같다.
- 아마존이 개발하고 있기 때문에 지원받기가 쉽다.
- 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용할 수 있다.
- AWS의 각종 서비스와의 상성이 좋다.
- Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.
다음은 인스턴스 유형을 선택하는 단계이다. 인스턴스 유형에서는 프리티어로 표기된 t2.micro를 선택한다.
다음 단계는 세부정보 구성이다. 기업에서 사용할 경우 화면상에 표기된 VPC, 서브넷 등을 세세하게 다루지만 혼자서 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.
다음 단계는 스토리지 선택이다. 스토리지는 흔히 하드디스크라고 부르는 서버의 디스크를 이야기하며 서버의 용량을 얼마나 정할지 선택하는 단계이다.
여기서 설정의 기본값은 8GB이다. 하지만 프리티어는 30GB까지 가능하다. 그 이상의 사이즈는 비용이 청구되니 프리티어의 최대치인 30GB로 변경한다.
이름 및 태그에는 웹 콘솔에 표기될 태그인 Name 태그를 등록한다. 태그는 해당 인스턴스를 표현하는 여러 이름으로 사용될 수 있다. EC2의 이름을 붙인다고 생각하고 넣으면 된다.
다음으로 보안 그룹이다. 보안 그룹은 방화벽을 이야기한다. '서버로 80 포트 외에는 혀용하지 않는다'는 역할을 하는 방화벽이 AWS에서는 보안 그룹으로 사용된다.
가존에 생성된 보안 그룹이 없으므로 새로 만들어준다.
이제 인스턴스로 접근하기 위해서는 pem 키가 필요하다. 그래서 인스턴스 마지막 단계는 할당할 pem 키를 선택하는 것이다.
인스턴스는 지정된 pem 키와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않는다.
일종의 마스터키이기 때문에 절대 유출되면 안 된다.
인스턴스 생성이 마무리 되었다면 인스턴스 id를 클릭하여 EC2 목록으로 이동한다.
생성이 다 되었다면 IP와 도메인이 할당된 것을 확인할 수 있다.
인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시에 항상 새 IP를 할당하는데, 한 가지 조건이 더 있다. 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다.
즉, 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것이다. 이렇게 되면 매번 접속해야 하는 IP가 변경돼서 PC에서 접근할 때마다 IP 주소를 확인해야 한다. 굉장히 번거로우므로 인스턴스의 IP가 매번 변경되지 않고 고정 IP를 가지게해야 한다. 그래서 고정 IP를 할당하겠다.
AWS의 고정 IP를 Elastic IP(탄력적 IP)라고 한다. EC2 인스턴스 페이지의 왼쪽 카테고리에서 탄력적 IP를 눌러 선택하고 주소가 없으므로 새 주소 할당
버튼을 클릭해서 바로 할당
버튼을 클릭한다.
새 주소 할당이 완료되면 탄력적 IP가 발급된다.
방금 생성한 탄력적 IP와 방금 생성한 EC2 주소를 연결한다. 방금 생성한 탄력적 IP를 확인하고, 페이지 위에 있는 작업
버튼 -> 주소 연결
메뉴를 선택한다.
주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 연결
버튼을 클릭한다.
연결이 완료되면 왼쪽 카테고리에 있는 인스턴스
탭을 클릭해서 다시 인스턴스 목록 페이지로 이동한다.
해당 인스턴스의 퍼블릭, 탄력적 IP가 모두 잘 연결되었는지 확인한다.
방금 생성한 EC2로 접속을 해보겠다.
명령어는 순서대로 입력하면 된다.
#폴더에 따로 보관
cp <pem 키를 받은 위치>~/.ssh/
#키 권한 변경
chmod 600 ~/.ssh/<pem키 명>
#config 파일 생성
vim ~/.ssh/config
#config 파일 내 설정 내용
Host <본인이 원하는 서비스명>
HostName <ec2의 탄력적 IP 주소>
User ec2-user
IdentityFile ~/.ssh/<pem키 이름>
# 저장 후 종료 -> :wq
# config 파일싀 실행 권한 설정
chmod 700 ~/.ssh/config
ssh <config 파일에 설정해놓은 서비스 명>
명령어를 성공적으로 입력했다면 아래처럼 접속 성공 문자가 뜬 것을 볼 수 있다.