스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - AWS EC2

lacblueeun·2020년 12월 18일
0

springboot

목록 보기
6/17
post-thumbnail

🍊 프로젝트에서 AWS RDS를 사용하면서 요금폭탄..위험을 겪었었다. 이번에는 EC2로 배포까지 가보자!

1. 서버

외부에서 내가 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수입니다. 일반적으로 집에서 PC를 24시간 구동시키거나, 호스팅 서비스를 이용하거나 클라우드 서비스를 이용하는 것입니다.

클라우드서비스 : 클라우드 서비스는 쉽게 말하면 인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것입니다. 실제로 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원하고 있습니다.

2. AWS EC2

EC2(Elastic Computed Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버입니다. 보통 AWS에서 리눅스 서버 혹은 윈도우 서버를 사용합니다.

2-1 EC2 인스턴스 생성

인스턴스를 생성하는 첫 단계는 AMI를 선택하는 것입니다. (사진에서는 리눅스2 이지만 실제로는 아마존 리눅스1을 선택했습니다.)

(Amazon Machine Image, 아마존 머신 이미지) : EC2 인스턴스를 시작하는데 필요한 정보를 이미지로 만들어 둔 것입니다. 즉 인스턴스라는 가상머신에 운영체제 등을 설치할 수 있게 구워 넣은 이미지로 생각하면 됩니다.

2-2 스토리지 설정

스토리지는 흔히 하드디스크라고 부른다. 서버의 용량을 얼마나 정할지 선택하는 단계입니다. 크기를 30GB(프리티어 버전 최대)로 설정을 변경합니다.

2-3 보안 설정

보안그룹 부분이 굉장히 중요하다! SSH이면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접속할 때를 이야기 합니다. 전체 오픈하는 경우, 실수로 깃허브나 파일 공유 디렉토리에 실수로 pem키가 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 볼 수 있습니다.

보안은 언제나 높을수록 좋으니 pem키 관리와 지정된 IP에서만 ssh접속이 가능하도록 구성하는 것이 안전합니다. 다른 장소에서 접속할 때 해당 장소의 IP를 다시 SSH에 추가하는 것이 안전하다!

인스턴스로 접근하기 위해서는 pem키(비밀키)가 필요합니다. 그래서 인스턴스 마지막 단계는 할당할 pem키를 선택하는 것입니다.
일종의 마스터키이기 때문에 절대 유출되면 안됩니다. EC2를 접속할 때 필수 파일이니 잘 관리할 수 있는 디렉토리로 저장합니다.

2-4 탄력적 IP 할당

생성이 다 되었다면 다음과 같이 IP와 도메인이 할당된 것을 확인할 수 있습니다. 하지만 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당됩니다.
즉, 요금을 아끼기 위해 잠깐 인스턴스를 중지하고 다시 시작하면 IP가 변경되는 것입니다.

AWS의 고정IP를 Elastic IP(EIP, 탄력적IP)라고 합니다. 탄력적 IP를 선택하고 새 주소를 할당하면 탄력적IP가 발급됩니다.
방금 생성한 탄력적 IP와 EC2 주소를 연결합니다.

💣 탄력적IP를 생성하고 서버에 연결하지 않으면 비용이 발생합니다. 즉, 탄력적IP는 무조건 EC2에 바로 연결해야하며, 만약 더는 사용할 인스턴스가 없을 때도 탄력적IP를 삭제해야 합니다.

3. EC2 서버에 접속하기

ssh에 쉽게 접속을 할 수 있도록 pem키를 ~./ssh/로 복사한다.
ssh를 실행 시 pem 키 파일을 자동으로 읽어 접속을 진행합니다.
이후부터는 별도로 pem키 위치를 명령어로 지정할 필요가 없게 됩니다.

🔑 Warning: Identity file pem not accessible: No such file or directory. macOS: 맥에서 SSH 키 생성하고 사용하기 를 참고해서 해결했습니다.

vim /.ssh/config 명령을 실행하고 config파일을 생성합니다. Host를 앞으로 접속할 키값으로 보면됩니다. HostName은 탄력적IP 주소를 사용하면 됩니다.

드디어 Mac에서 EC2 접속을 성공했습니다. 이제 터미널에서 ssh 서비스명만 입력하면 접속할 수 있습니다!

profile
Go for Frontend Developer 🧪

0개의 댓글