네트워크 학습을하며 코드스테이츠에서 준 IAM 계정으로 이것저것 따라서 만져보긴했지만.. 솔직히 처음엔 이게 뭐하는건지 이해도 안되고 어떤 동작을 하는지 몰라서 기억에 거의 안남았다.
그래서 정말 많은 블로그 글을 보면서 AWS에 서버를 어떻게 공짜로 구축할 수 있는지 열심히 찾아봤다. EC2가 뭔지 RDS는 또 어떤건지 이런 용어들이 정말 헷갈렸는데 이번에 직접 해보면서 확실히 정리되었다. 이래서 개발은 직접해봐야하는 것 같다.
관련한 글들은 이미 너무 많아서 참고한 블로그 링크와 구축한 순서, 그리고 각 과정에서 내가 겪은 오류들만 정리하려한다.
개발환경을 구축하는 방법은 정말 많겠지만.. 이번 프로젝트에서 내가 선택한 배포 방식은 AWS를 이용해서 S3 정적 웹사이트 배포 + EC2 서버 배포 방식이다.
프론트 코드를 단독 배포 가능해서 배포 난이도가 조금 .. 낮지 않을까 싶기도하고, 학습할 때 이방법으로 배웠어서 이렇게 진행했다.

우선 여기서는 서버를 EC2에 배포하기 위한 과정을 정리했다.
- EC2란 AWS에서 제공하는 클라우드 컴퓨팅 서비스이다. 쉽게 말하면 아마존에서 가상 컴퓨터 한대를 빌려서 쓰는거다.
- 위에서 첨부한 링크를 토대로 인스턴스를 생성한다.
- 팀원들이 인스턴스에 접속할 수 있게 IAM계정을 생성해서 전달했다.
- 인스턴스에 접속할 때 pem키를 이용하지 않아도 접속 가능하도록 Session Manager을 이용했다.
- Session Manager을 이용할 수 있게 하기 위해 IAM그룹에 role을 설정해줬다.
3. EC2 인스턴스에 개발환경 구축하기
- 서버를 구동하는데 필요한 개발 환경을 구축해줘야한다.
- java를 설치하고 EC2인스턴스에서 서버를 실행하기 위해 SSH키를 확인해서 git hub과 연결해줬다.
git hub 연결
- 인스턴스에서 서버 실행까지 되는지 확인한다.
EC2 서버 실행
4. 자잘하지만 필요한 설정들 확인하기
- 글은 마치 문제없이 스무스하게 진행된거처럼 써놨지만 뭐 설정안해서 실행안되고 어쩌고..하는 상황이 많았다. 그래서 이쯤 확인해줘야하는 설정을 정리했다.
- EC2 보안그룹 설정을 확인해줘야한다. 이 보안그룹 내용은 나중에 RDS연결할때나 뭐.. 계속 확인 필요하니까 뭔지 확실히 알아두자.
AWS 보안 그룹 인바운드 규칙 설정하기
- 인스턴스를 중지하고 다시켜면 ip주소가 바뀐다. 프론트가 작업할때도 매번 바뀌면 너무 불편하니 미리 탄력적 ip설정을 해두면 정말 편하다.
Elastic IP (탄력적 IP)
- Shell Script를 작성해두면 서버를 수동배포해야하는 상황에서 터미널을 계속 켜두지않아도되고, 명령어도 간편해서 아주 유용하게 잘썼다.
EC2 Spring Boot 백 그라운드 실행
5. 인스턴스에서 서버 빌드가 안될때 (무한로딩)