본문으로 바로가기

4주차 - 그럴듯한 서비스 만들기

대망의 4주차.. 그럴듯한 서비스 만들기.. 처음 접해보는 AWS... 아니.. 인프라.. 2주동안 새벽 3시 이전에 잠에 든 적이 없는 것 같다... 3시 이후가 되서야 출근 때문에 어쩔 수 없이 잠에 들고.... 씨유님의 강의도 거의 4~5번 돌려 봤다..
하지만!! 힘들게 가장 기억에 남는 것도 많고 보람된 일이라는 것! 8주차 강의 간에 배움의 폭이 가장 크지 않았나 싶다!! ( 물론 다른 강의들도 정말 많이 배웠지만 ) 거의 백지에서 시작해 모각코 팀원과 의견을 주고 받고 나중엔 도움도 될 수 있었기 때문에 가장 큰 폭이라고 생각한다.. 너무 감격..
4주차의 리뷰어님은 ssosso님! 모각코 팀원들 사이에서 유명하신 리뷰어님!! 개인적으로 다른 미션으로도 만나뵙고 싶었던 분😀
4주차는 위에 말했다시피 미션 term이 굉장히 길었다 거의 1단계가 merge 되고서 2단계 PR 요청까지 거의 2주..?? 그래서 이번 미션 회고는 조금 정리를 하면서 하려고 한다.
자세하게는 이미 정리를 했으니 간단하게 하자. 정리
이번 단계 미션을 진행하기 위해서 AWS를 사용했다. 이미 수강생들의 계정을 하나하나 만들어주신😆 그래서 각자의 계정으로 로그인을 했다. 예전에 AWS 세미나를 한번 들었던 적이 있는데 조금 가물가물.. 그 이후로 AWS는 처음 들어와본 듯..
가장 먼저 망을 분리했다. PUBLIC 2개, PRIVATE 2개. 각각 WAS 서버, NGINX 서버 와 관리망, DB망으로 총 4개
그 다음 route table을 만들어 각각의 IP들이 서로 찾아 갈 수 있도록 설정해주었다.
IG를 만들어 외부와 통신할 수 있도록 해주었다. PUBLIC IP를 PRIVATE IP로 만들어 주는 역할도 한다.
다음 보안 그룹을 설정해주었다. 보안 그룹이 처음에 좀 헷갈렸었다,, 어디 망에서 어떤 포트를 열어줘야 하는지.. 간단했다 A 서버에서 B 서버로 접근하고자 하면 B서버 보안그룹에서 A서버의 IP와 PORT를 열어주면 된다. B서버에서는 열어준 PORT로 받아 포트포워딩을 설정할 수 있다 8080:80 -> 8080 PORT로 접근하면 80 PORT로 REDIRECT
마지막으로 EC2 인스턴스를 각각 생성해주었다.

모든 서버의 구성을 관리망(bation)에서 접근했다. 그렇기 때문에 관리망을 제외하고는 관리망 IP의 22PORT로 개방해주었고 관리망을 putty로 붙어서 ssh로 다른 서버들을 관리했다. 여기서 ssh 연결을 위해서는 key를 가지고 있어야하는데 관리망의 key와 상대 서버의 key와 동일해야 한다. 이 key들에 관해선 다음에 다시

여기까지 서버 구축이 끝났다. 이제 다시 미션으로!

1단계 - 서비스 구성하기

서비스 구성하기는 위에 단계를 마친 후 지하철 노선관리 프로젝트를 서버에 배포하면 된다. 1단계는 인프라 구축하는 과정에서 처음이라 너무 어려워서 오래걸렸고 웹 어플리케이션을 배포하는데에는 그렇게 어렵지는 않았다. 다른 피드백이 없이 바로 머지 되었다.

2단계 - 서비스 배포하기

2단계는 Reverse Proxy, Load Balancer 역할을 수행하는 nginx를 설치하고 어플리케이션을 배포한다. 이 때 tls를 설치하고 https로 연결이 가능하도록 설정한다. 내가 막힌 부분은 tls 설정과 @activeprofiles...
@ActiveProfiles는 Anntation이 적용되어 있는 해당 클래스가 어떤 properties의 설정을 따를 것인가를 결정하는 annotation 이다.

active profile annotation은 application-xxx.properties 파일명에 있는 postfix "-test" 와 같이 환경명을 맞춰 설정하였을 때 환경명에 맞는 properties 파일의 정보를 활용합니다. 설정하지 않으면 application.properties에 있는 기본 설정만을 따르게 됩니다. - ssosso

저 부분을 놓쳐서 계속 DatabaseCleanup class에서 실행하는 TRUNK 쿼리 부분이 오류가 발생하는 것이다... 내 Local은 Mysql을 실행하고 있는데 TRUCK로 구현되어있던 쿼리는 Mysql의 문법이 아니기 때문이다.. 여기서 빠르게 캐치를 했어야했는데,.. 왜냐면 알게된 후 보니까 properties local 과 test 설정이 각각 mysql, h2 설정으로 되어있기 때문이다.. 지금에서야 알지만.. 그래서 @activeprofile("test')를 적용한 후 build가 통과되었다..
그리고 Tls .. TLS를 설정하고 DNS를 설정할 때 서버에 TLS를 설치하게 되면 Token을 발급해준다. 이것을 dns에 입력했는데 그 전에 내가 계속 막혀서 Token이 잘못 입력이 되었던 것 같다... 서버를 뒤 엎고 나서 처음부터 다시 실행했을 때 해결이 되었다..
마지막에 https 옆에 자물쇠icon을 봤을 떄 눈물이 날 뻔... ㅠㅠㅠ
  • 2단계에서는 git의 서브모듈기능을 이용해서 properties 설정들을 관리했다. git의 private repository를 만들고 모든 서버 정보들이 담겨있는 properties를 서브모듈로써 관리했다. 아래 피드백은 내가 private으로 해놨기 때문에 public으로 열어달라고 하신 피드백이다. git 의 서브모듈 기능도 git 부분에서 다시 다뤄야겠다.
2단계도 특별한 피드백이 없이 끝났다. 축..

마치며

4주차 미션만으로 정리해야할 것들이 굉장히 많다..
  • TLS
  • nginx
  • docker
  • java build & release
  • flyway
  • sonarlint
    하나씩 하나씩 천천히 정리해 나가자.. 4주차는 정말 많이 배웟고 정말 많이 경험했고 정말 많이 트러블 슈팅이 있었던 주차였다. 나중에 생각하니 나도 트러블 슈팅을 잘 해나가고 있다는 생각이 문득 들었다.. 다만, 슈팅하는 시간이 너무 길었지만 말이다.. 그래도 처음 해본 것 치고는 스스로 잘했다라고 위안을 삼고 있다... (자만하지는 말자 사실 못했으니까..ㅋㅋ)