팀원들과 분담해서 구현한 member, question, answer, comment 들을 merge 했다. 처음으로 깃 브랜치를 나누고 PR을 하고 merge 하고 앞으로 더 유용하게 쓸 수 있을 것 같다.
프론트엔드와 협업하는데 있어 매번 ngrok으로 통신을 하려니 번거로워서 AWS의 EC2와 RDS 서비스를 이용해 서버를 먼저 구축해보기로 했다.
EC2 인스턴스 생성은 생각보다 간단했다. 팀원들과 공유를 위해 IAM 계정들도 생성하여 팀원들에게 분배하였다.
권한 같은 경우 종류가 너무 많고 복잡해 우선 ReadOnly 권한만 주고 추후에 필요할때마다 권한을 추가해 주기로 했다..
RDS DB는 조금이나마 만져봤던 mysql을 사용하기로 했다.
그동안 작성했던 코드는 h2를 사용했었는데 개발용 코드에 mysql을 사용하면 불편할 것 같아 깃 브랜치를 구분해 개발용은 h2 배포용은 mysql 이런식으로 해야하나 잠깐 고민하다 배웠던 profile이 생각나 적용을 해보기로 했다.
애플리케이션을 실행하면 default 프로필로 실행이 되는데 이때 applicatioin.yml 파일의 설정이 적용된다.
로컬 개발용 설정
서버 배포용 설정
hibernate.ddl-auto 설정의 경우 우선 아직 개발이 완료되지 않고 DB에 컬럼들이 더 추가될 수도 있을 것 같아 create로 두었다. -> 애플리케이션 실행 시 삭제 후 새로 생성
DB의 url, 이름, 비밀번호는 팀원들과 협업을 하다보니 깃을 사용하게 되는데 그대로 노출되면 안될 것 같아 이 블로그를 참고하여 환경 변수로 설정해 두었다.
EC2 인스턴스에서 설정할 경우 홈 디렉토리의 .bashrc 파일에
이런 식으로 작성하면 된다.
나는 zsh를 받아 사용중이어서 .zshrc에 해당 내용을 추가하였다.
중간중간 많이 삐걱였지만 결국 EC2 인스턴스에서 돌린 애플리케이션이 잘 돌아가고 DB까지 데이터가 잘 넘어가고 반환되어 붙잡고 있던 시간들이 너무 뿌듯했다. 그런데 인스턴스를 재부팅하고 이것저것 테스트 해보던 중에 문제가 생겼다.
분명 애플리케이션은 돌아가고 있는데 전과 동일하게 요청을 보내도 연결되지않았다. EC2 인스턴스를 재부팅하면 퍼블릭 IPv4 주소가 바뀌는 줄도 모르고 계속 전의 주소로 요청을 보내고 있었다..
불편한 것 같아서 또 찾아보니 주소를 고정할 수 있다고 해서 바로 적용을 해봤다.
EC2 메뉴 중 탄력적 IP에 들어가 현재 생성되어 있는 인스턴스에 고정적인 퍼블릭 IPv4 주소를 할당받을 수 있다!!
AWS에서 직접 서버를 배포해보니 어제보다 더 강해진 기분이 들어 뿌듯하다. 사실 EC2 인스턴스나 RDS 생성하고 너무 신나서 이건 블로깅 해야해 라고 생각했는데 막상 과정을 블로깅하려니 내용이 없을 것 같아 생략했다.. 조만간 팀원들에게 간단하게나마 방법을 공유해줘야겠다.