협업 프로젝트에서 서버가 프론트와 API연결을 시도하기 위해서는 서버url이 필요하다. url은 aws에서 부여되는 공용ip 주소를 사용해도 되고, 가비아와 같은 도메인 구매 사이트에서 도메인을 구매하고 사용해도 된다. 아무튼 이를 위해서는 배포가 필수이다!
가비아에서 도메인을 구매하고, 이를 aws에 연결하는 방법은 아래 게시글로 따로 기재해두었다. (배포를 먼저해야 함)
https://velog.io/@pdy0207/도메인-구매하고-AWS에-연결하기feat.-가비아
내가 시도한 배포 순서는 AWS EC2생성 -> AWS RDS생성 -> Docker 순이다.
EC2는 클라우드 가상 서버이다. 나는 프리티어를 사용 중이다.
인스턴스 이름 생성 > 우분투(Ubuntu) 선택 > AMI는 프리 티어 사용 가능한 것으로 선택
인스턴스 유형은 t2.micro를 선택하고 키 페어는 새로 생성해주었다.(권장) 키 파일은 한 번만 다운 가능하며 잃어버리면 SSH 접속 불가하므로 꼭 안전하게 보관해야 한다.
SSH뿐만 아니라, HTTP/HTTPS 트래픽 허용을 해주어야 웹 요청을 받을 수 있다. (API 호출을 위한 Swagger 혹은 Postman 테스트가 가능해짐) 이후 운영 단계에서는 SSH의 보안그룹 인바운드 규칙에 대해 내 IP만을 허용하여 보안상의 문제를 대비하는 것이 좋다.
스토리지 볼륨은 프리티어 고객이 사용한 가능한 최대 용량인 30GB로 설정해준다.
이러면 EC2는 끝 !
RDS는 관계형 데이터베이스 서비스이다.
AWS에서 RDS를 검색하여 데이터베이스로 들어가 데이터베이스를 생성해준다.
데이터베이스 엔진 유형으로 MySQL(MySGL Community)를 선택하고 버전은 기본값인 8.0.35을 사용한다.
프리티어 계정이므로, 프리 티어 템플릿을 설정해주었습니다.
인스턴스 식별자는 변경해주어도 상관없다. 마스터 사용자 이름 또한 사용자 마음대로 지정 가능하다. 자격증명관리는 자체관리로 설정하여 마스터 암호를 자체적으로 지정해주었다.
인스턴스랑 스토리지 구성은 고냥 기본값으로 두었다. (과금 방지를 위해 스토리지 자동 조정은 비활성화를 시켜준다.)
EC2 컴퓨팅 리소스에 연결 안 함을 선택하고, 퍼블릭 액세스 예로 변경해준다.
VPC 보안 그룹은 EC2 생성 시 생성해준 보안그룹과 구분하여 새로 성생해주는 것이 좋다. 새로 생성해준 보안 그룹의 인바운드 규칙에 mySQL의 포트인 3306을 추가해준다.
태그랑 데이터베이스 인증은 그냥 넘어가주고, 데이터베이스를 최종적을 생성해준다.

개발 초반에는 MYSQL의 보안그룹의 소스가 0.0.0.0/0으로 모든 IP 허용으로 두고 개발을 하는 것이 편리하겠지만, 추후에 보안상의 문제를 대비하여 위와 같이 내 IP와 생성해준 EC2 인스턴스의 보안 그룹 ID로 등록하여 나의 로컬환경 intelliJ와 EC2 인스턴스로 DB에 접근하도록 하는 것이 좋다.
내가 사용할 DB의 환경을 설정해준다.
데이터베이스의 시간 설정(Time zone), 그리고 인코딩(character set) 관련 설정을 해준다.
파라미터 그룹을 새로 생성해준다.
나는 RDS를 mysql로 생성하였기 때문에, mysql8.0을 선택해준다.
파라미터 그룹을 생성해준 뒤, 들어가서 편집 버튼을 누른다.




그다음으로 변경 사항을 저장해준다.
아까 생성해준 RDS에 들어가 수정을 누른 뒤, 데이터베이스 옵션의 DB 파라미터 그룹을 변경해준다.
마지막으로 데이터베이스를 재부팅해주면 적용이 될 것이다.
이러면 RDS도 끝 !
EC2와 RDS에 대해 자세히 알고 싶다면 아래 글을 참고하면 좋을 것 같다.
AWS-배포-과정으로-이해하는-네트워크
도커 설정 및 실행은 2탄에 이어서 ...
배포 2탄 - Docker 설치 및 실행