외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수
24시간 작동하는 서버에는 3가지 선택지가 있음
1. 집에 PC를 24시간 구동시킴
2. 호스팅 서비스(Cafe 24, 코리아호스팅 등)을 이용
3. 클라우드 서비스(AWS, AZURE, GCP 등)을 이용
일반적으로 비용은 호스팅 서비스나 집 PC를 이용하는 것이 저렴
만약 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리
클라우드 서비스는 쉽게 말하면 인터넷(클라우드)을 통해
서버, 스토리지(파일 저장소),데이터베이스, 네트워크, 소프트웨어, 모니터링 등의
컴퓨팅 서비스를 제공하는 것임. 단순 물리 장비 대여가 아니다.
예를 들어 AWS의 EC2는 서버 장비를 대여하는 것이지만,
실제로는 그 안의 로그 관리 모니터링, 하드웨어 교체, 네트워크 관리 등을 기
본적으로 지원하고 있음.
-> 개발자가 직접 해야 할 일을 AWS가 전부 지원
이런 클라우드에는 몇 가지 형태가 있음
1. Infrastucture as a Service(IaaS, 아이아스, 이에스)
- 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스
- 가상머신, 스토리지, 네트워크, 운영체제 등의 IT 인프라를 대여해 주는 서비스라고 보면 됨
- AWS의 EC2, S3 등
2. Platform as a Service (PaaS, 파스)
- 앞에서 언급한 IaaS에서 한 번 더 추상화한 서비스
- 한 번 더 추상화했기 때문에 많은 기능이 자동화되어 있다.
- AWS의 Beanstalk(빈스톡), Heroku(헤로쿠)등
3. Software as a Service (Saas, 사스)
- 소프트웨어 서비스를 이야기함
- 구글 드라이브, 드랍박스, 와탭 등
6.1 AWS 회원가입
AWS 공식 사이트(https://aws.amazon.com/ko/)로 이동한 뒤 무료 계정 만들기를 택함.
6.2 EC2 인스턴스 생성하기
EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버다. 모통 "AWS에서 리눅스 서버 혹은 원도우 서버를 사용"라고 하면 이 EC2를 이야기하는 것이다.
AWS에서 무료로 제공하는 프리티어 플랜에서는 EC2 사용에 다음과 같은 제한이 있다.
- 사양이 t2.micro만 가능
- 월 750시간의 제한이 있다. 초과하면 비용이 부과
여기서 유형에 대해 짧게 소개하면 t2는 요금 타입을 이야기하며, micro는 사양을 이야기한다. t2 외에 t3도 있으며 보통 이들을 T시리즈라고 한다. T시리즈는 범용 시리즈로 불리기도 한다. 이들은 다른 서비스와 갈리 크레딧이란 일종의 CPU를 사용할 수 있는 포인트 개념이 있다. 인스턴스 크기에 따라 정해진 비율로 CPU 크레딧을 계속 받게 되며, 사용하지 않을 때는 크레딧을 축적하고, 사용할 때 이 크레딧을 사용한다.
정해진 사양보다 높은 트래픽이 오면 크레딧을 좀 더 적극적으로 사용하면서 트래픽을 처리하지만, 크레딧이 모두 사용되면 더이상 EC2를 사용할 수 없다. 그래서 트래픽이 높은 서비스들을 T 시리즈를 쓰지 않고 다른 시리즈를 사용하기도 한다. 하지만 그 전까지는 활용도가 높기 때문에 시작하는 단계에서는 좋은 선택이다.
1인 개발 시 혹은 대량의 서버를 사용하지 않는다면 굳이 별도로 구성할 필요가 없으므로 여기서는 기본 생성되는 값을 사용한다.
스토리지는 흔히 하드디스크라고 부르는 서버의 디스크(SSD도 포함)를 이야기하며 서버의 용량을 얼마나 정할지 선택하는 단계이다. 여기서 설정의 기본값은 8GB이다. 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을 추가하고 [검토 및 시작] 버튼을 클릭한다. 검토 화면에서 보안 그룹 경고를 하는데, 이는 8080이 전체 오픈이 되어서 발생한다. 8080을 열어 놓는 것은 위험한 일이 아니니 바로 [시작하기] 버튼을 클릭한다.
인스턴스로 접근하기 위해서는 pem키 (비밀키)가 필요하다. 그래서 인스턴스 마지막 단계는 할당할 pem키를 선택하는 것이다.
인스턴스는 지정된 pem 키(비밀키)와 매칭되는 공개키를 가지고 있어, 해당 pem키 외에는 접근을 허용하지 않다. 일종의 마스터키이기 때문에 절대 유출되면 안된다. pem 키는 이후 EC2 서버로 접속 할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장한다. 기존에 생성된 pem키가 있다면 선택하고 없으면 신규로 생성한다.
EIP 할당
AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다. EC2 인스턴스 페이지의 왼쪽 카테고리에서 탄력적 IP를 눌러 선택하고 주소가 없으므로 [새 주소 할당] 버튼을 클릭해서 바로 [할당] 버튼을 클릭한다.
방금 생성한 탄력적 IP와 방금 생성한 EC2 주소를 연결한다. 방금 생성한 탄력적 IP를 확인하고, 페이지 위에 있는 [작업]버튼 -> [주소 연결] 메뉴를 선택한다.
그리고 주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 [연결] 버튼을 클릭한다.
그 다음 왼쪽 카테고리에 있는 [인스턴스 ] 탭을 클릭해서 다시 인스턴스 목록 페이지로 이동한다.
탄력적 IP와 퍼블릭이 모두 잘 연결되어있는지 확인한다
여기까지 진행했으면 EC2인스턴스 생성과정이 끝났다. 하지만, 주의할 점은 방금 생성한 탄력적 IP는 생성하고 EC2 서버에 연결하지 않으면 비용이 발생한다. 즉, 생성한 탄력적 IP는 무조건 EC2에 바로 연결해야하며 만약 더는 사용할 인스턴스가 없을 떄도 탄력적 IP를 삭제해야한다. 마찬가지로 비용 청구가 되므로 꼭 잊지 않고 삭제해야한다.
출처 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 [이동욱 지음]
'Back-End > Springboot와 AWS로 혼자 구현하는 웹 서비스' 카테고리의 다른 글
Chapter 06. AWS 서버 환경을 만들어보자 - AWS EC2 (3) (0) | 2022.04.02 |
---|---|
Chapter 06. AWS 서버 환경을 만들어보자 - AWS EC2 (2) (0) | 2022.04.01 |
Chapter 05. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (7) (0) | 2022.03.27 |
Chapter 05. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (6) (0) | 2022.03.27 |
Chapter 05. 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (5) (0) | 2022.03.27 |