[Spring Boot 실전]5. AWS EC2와 RDS
본격적인 배포를 해볼 시간이다.
AWS 외에도 Azure, Google Cloud Platform 등 여러 클라우드 서비스가 있지만, 그 중에서도 AWS가 가장 많이 사용하고 비용이 적기 때문에 AWS를 채택하게 되었다.
AWS 계정을 최초로 생성하면 1년 동안 특정 조건 내에서 무료로 사용할 수 있기 때문에 연습 목적이라면 엄청난 장점이 있다.
EC2 인스턴스 생성하기
우선 Spring Boot의 서비스를 배포하기 위해서 EC2 인스턴스를 생성해준다.
이 역시 Linux 기반 서버를 사용할 수 있기 때문에 그 중에서 Ubuntu 기반으로 인스턴스를 생성해주었다.
(아래의 인스턴스 유형에서 t2.micro가 프리 티어에서 무료 사용가능하다.)
또한 AWS의 장점으로 보안을 들 수가 있는데, 접속할 때의 규칙인 inbound와 전송할 때의 규칙인 outbound를 설정할 수 있다.
우선은 게시판을 배포하는 것이 목적이기 때문에 접속에 해당하는 inbound만 설정해준다.
각 프로토콜에 따라서 접속가능한 IP 주소 범위를 할당한다.
인스턴스를 생성했다면, 터미널의 SSH 등을 통해서 접속할 수 있다.(여기서는 SSH 방법만을 사용하였다.)
이전에 발급받은 접속 key를 통해서 우분투 서버에 접속한다.
다운받은 접속 key(여기서는 mySSHkey.pem)의 권한을 위와 같이 변경해주고 "ssh -i [key 이름] [서버 이름]" 명령어를 통해 서버에 접속할 수 있다.
RDS 생성하기
다음은 RDS를 생성하고 프로젝트와 연결하는 방법에 대해 알아보자.
RDS를 따로 생성하는 이유는 EC2와 한꺼번에 둘 수 없고 따로 DB 서버를 생성하는 것이 더 효율적이기 때문이다.
RDS(Relational Database), 이름 그 자체에서 알 수 있듯이, 관계형 데이터베이스만 생성할 수 있다.
따라서, NoSQL 등 관계형 데이터베이스가 아닌 DB는 AWS S3 등을 통해서 생성할 수 있다.
검색창에 RDS를 검색하고 데이터베이스를 생성하면 위와 같이 종류를 고르는 화면이 나올 것이다.
(필자는 MySQL을 사용할 것이기 때문에 MySQL을 골라주었다.)
해당 DB의 관리자(admin)의 이름과 비밀번호, 그리고 추가 데이터베이스의 이름을 설정해준다.(추가 데이터베이스 관련 사진은 캡쳐하지 못했습니다. 깜빡했나봐요 ㅠㅠ)
해당 3가지의 내용은 프로젝트 내에서 설정할 때 필요한 내용이기 때문에 따로 메모를 해주는 것이 좋다.
마지막으로 IntelliJ의 오른쪽 바에 데이터베이스 모양의 아이콘을 누르면 어떤 DB를 추가할지 카테고리가 뜬다.
이 때, MySQL을 선택하면 안되고 AWS aurora MySQL을 선택해야한다.(왜인지는 모르겠지만, MySQL을 선택하면 연결이 계속 실패했다.)
그리고 아래와 같이 내용을 채우고 Test Connection을 누르면 연결이 잘 되는 것을 확인할 수 있다.
Name : 원하는 이름
Host : 생성한 AWS RDS DB의 엔드포인트(데이터베이스를 막 생성하거나 세부정보에서 볼 수 있다.)
User : 설정한 마스터 사용자
Password : 설정한 마스터 사용자 비밀번호
이번에는 이렇게 AWS 계정을 생성하고 EC2, RDS를 각각 생성해보았다.
확실히 Azure나 GCP보다 인터페이스가 편하다는 장점이 있는 것 같다.
아직 생성한 EC2 인스턴스에서 spring 프로젝트를 build하지는 않았는데, 다음 시간에는 프로젝트를 jar파일로 build하고 DB에 잘 적용되는 지 알아보도록 하자.