AWS 서버 환경을 만들어보자 - AWS EC2
외부에서 본인이 만든 서비스에 접근하려면 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, Azure, GCP 등) 중 AWS를 선택한 이유는 다음과 같다.
- 첫 가입 시 1년간 대부분 서비스가 무료다. 단, 서비스마다 제한이 있다.
- 클라우드에서는 기본적으로 지원하는 기능(모니터링, 로그관리, 백업, 복구, 클러스터링 등등)이 많아 개인이나 소규모일 때 개발에 좀 더 집중할 수 있다.
- 많은 기업이 AWS로 이전 중이기 때문에 이직할 때 AWS 사용 경험은 도움이 된다. 국내에서는 AWS 점유율이 압도적이다. 쿠팡, 우아한 형제들, 리멤버 등 클라우드를 사용할 수 있는 회사에서는 대부분 AWS를 사용한다.
- 사용자가 많아 국내 자료와 커뮤니티가 활성화되어 있다.
AWS의 PaaS 서비스인 빈스톡을 사용하면 대부분 작업이 간소화되지만, 프리티어로 무중단 배포가 불가능하다. 배포할 때마다 서버가 다운되면 제대로 된 서비스를 만들 수 없으니 무중단 배포는 필수이고 빈스톡은 사용할 수 없다. 그리고 AWS 초보자일 때는 직접 하나씩 다 다뤄보는 것이 공부에 도움이 된다.
AWS 회원가입
AWS 공식 사이트(https://aws.amazon.com/ko/)로 이동한 뒤 무료 계정 만들기를 선택한다.
계정을 만들고 정보를 모두 입력하면 위와 같은 화면이 나온다. 무료로 체크를 후, 가입 완료 버튼을 클릭한다.
주황색 버튼인 AWS Management Console로 이동을 클릭한다.
EC2 인스턴스 생성하기
EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버다. 보통 'AWS에서 리눅스 서버 혹은 윈도우 서버를 사용한다'라고 하면 이 EC2를 이야기하는 것이다.
오른쪽 상단에 지역이 오하이오로 되어있으면 서울로 변경한다.
상단 검색바에 ec2를 입력하고 검색한다.
인스턴스 시작을 클릭한다. 인스턴스를 생성하는 첫 단계는 AMI를 선택하는 것이다. 먼저 AMI에 대해 설명하면, AMI는 EC2 인스턴스를 시작하는 데 필요한 정보를 이미지로 만들어 둔 것을 이야기한다. 인스턴스는 가상 머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 된다.
예를 들어 아마존 리눅스 1 AMI를 사용하다면 Amazon Linux 1 OS가 인스턴스에 설치되어 개발자가 사용할 수 있음을 의미한다. 여기서는 Amazon Linux AMI 2018.0을 선택한다.
아마존 리눅스 2 대신에 아마존 리눅스 1을 선택한 이유는 아직 국내 자료가 리눅스 1이 더 많기 때문이다. 보통 센토스6 버전으로 진행되는 자료들은 아마존 리눅스 1에서 모두 사용할 수 있다. 그럼 굳이 센토스 AMI를 사용하지 않고 아마존 리눅스 AMI를 사용하는 이유는 무엇일까? 이유는 다음과 같다.
- 아마존이 개발하고 있기 때문에 지원받기가 쉽다.
- 레드햇 베이스이므로 레드햇 계열의 배포판을 많이 다뤄본 사람일수록 문제없이 사용할 수 있다.
- AWS의 각종 서비스와 상성이 좋다.
- Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다.
위와 같이 인스턴스 유형을 선택하고 우측 하단에 인스턴스 세부 정보 구성을 클릭한다. 이 단계는 기업에서 사용할 경우 화면상에 표기된 VPC, 서브넷 등을 세세하게 다루지만, 여기서는 혼자서 1대의 서버만 사용하니 별다른 설정을 하지 않고 넘어간다.
스토리지에서는 프리티어의 최대치인 30GB로 변경 후 다음 태그 추가 버튼을 클릭한다.
태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록한다. 태그는 해당 인스턴스를 표현하는 이름으로 사용될 수 있다. EC2의 이름을 붙인다고 생각하고 넣으면 된다. 입력 후에 우측 하단에 보안 그룹 구성 버튼을 클릭한다.
이 보안그룹 부분이 굉장히 중요하다. 유형 항목에서 SSH면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접속할 때를 이야기한다. pem 키가 없으면 접속이 안 되니 전체 오픈(0.0.0.0/0, ::/0)하는 경우를 종종 발견한다. 이렇게 되면 이후 파일 공유 디렉토리나 깃허브 등에 실수로 pem 키가 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 볼 수 있다.
보안은 언제나 높을수록 좋으니 pem 키 관리와 지정된 IP에서만 ssh 접속이 가능하도록 구성하는 것이 안전하다. 그래서 본인 집의 IP를 기본적으로 추가하고 카페와 같이 집 외에 다른 장소에서 접속할 때는 해당 장소의 IP를 다시 SSH 규칙에 추가하는 것이 안전하다.
위와 같이 구성하고 검토 및 시작 버튼을 클릭한다.
시작하기 버튼을 클릭한다.
인스턴스로 접근하기 위해서는 pem 키( 비밀키)가 필요하다. 그래서 인스턴스 마지막 단계는 할당할 pem 키를 선택하는 것이다. 인스턴스 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem 키 외에는 접근을 허용하지 않는다. 일종의 마스터키이기 때문에 절대 유출되면 안 된다. pem 키는 이후 EC2 서버로 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장한다. 위와 같이 구성하고 키 페어 다운로드 버튼을 클릭한다. 다운로드가 완료되면 인스턴스 시작 버튼을 클릭한다.
생성이 다 되었다면 위와 같이 IP와 도메인이 할당된 것을 확인할 수 있다. 인스턴스도 결국 하나의 서버이기 때문에 IP가 존재한다. 인스턴스 생성 시에 항상 새 IP를 할당하는데, 한 가지 조건이 더 있다. 같은 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당된다. 이렇게 되면 매번 접속해야 하는 IP가 변경되서 PC에 접근할 때마다 IP 주소를 확인해야 한다. 이러한 작업은 번거로우므로 IP가 매번 변경되지 않고 고정 IP가지게 해보도록 한다.
좌측에 탄력적 IP를 클릭한다. AWS의 고정 IP를 탄력적 IP(Elastic IP)라고 한다.
주소가 없으므로 우측 상단에 탄력적 IP 주소 할당을 클릭하여 위의 화면에서 바로 할당 버튼을 클릭한다. 새 주소 할당이 완료되면 탄력적 IP가 발급된다. 페이지 위에 있는 작업 버튼 클릭 후, 주소 연결 메뉴를 선택한다. 주소 연결에서 EC2 이름과 IP를 선택하고 연결 버튼을 크릭한다. 여기까지 진행했으면 EC2 인스턴스 생성 과정은 끝났다.
하지만, 주의할 점이 있다. 방금 생성한 탄력적 IP는 생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다. 즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야 하며 만약 더는 사용할 인스턴스가 없을 때도 탄력적 IP를 삭제해야 한다.
댓글