본문 바로가기
프로젝트/회고

[클라우드] AWS 콘솔을 사용한 3-tier 구축

by 왕자두 2024. 3. 9.

(프로젝트 업로드 후 링크 추가 예정)

개인적으로 이루고자 했던 목표

1. 클라우드에 관심이 생겼다고 생각만 했지만 실제로 클라우드에 관심을 가졌다고 말할 수 있을 만한 개인적인 프로젝트를 하나도 진행한 적이 없었다. CI/CD 파이프라인 구축도 알고 한 게 아니라 학교에서 하니까 따라한 정도고 혼자 jenkins 이용해서 CI만 해봤는데도 아직 제대로 완성하지 못했다.
2. 3 티어 구축하는 것도 정말 기본 중에 기본이라고 생각하는데 인턴 과제로 vpc부터 만드려고 하니까 도움 없이는 하나도 이해 못하고 혼자 찾아보고 넘어가려고 해도 찾아본 내용이 이해가 안돼서 어려움을 겪었다. 한 번 도움 많이 받아서 어렵게 구축을 해봤으니 이번에는 누구한테 설명할 수 있을 정도로 이해를 한 상태로 3티어 구축을 해보고 싶었다.
3. 보안그룹이 중요하다는 사실을 잘 인지 못하고 있었는데 인턴 기간동안 과제를 하며 피드백 받을 때, 보안 때문에 0.0.0.0으로 뚫어두면 안된다고 하셔서 이번에 할 때에는 보안그룹을 최소한으로 뚫고 제대로 통신되는지 확인하고 넘어가고 싶었다.

배운 점

⭐ 최소한의 보안그룹 뚫어서 통신 확인
역시나 보안그룹 때문에 문제가 많았다. 해결 못할 것 같던 문제도 RDS에서 보안그룹 제대로 안만져서 그런 거였다. LB와 AS 둘다 그 문제였다니 .. 보안그룹이 계속 문제가 될 것 같다고 생각했었는데 역시나 하다보니 보안그룹 `0.0.0.0/0` 이었으면 3일도 안돼서 프로젝트 끝났을 것 같다. 특히나 VPC 내부 대역대로만 뚫으면 되겠다고 생각했을 때 그래도 많이 성장했구나 느꼈었고, 그럼 WEB이나 WAS에서 보안그룹을 뚫을 때는 어떤 IP를 뚫어야 되는가 생각해봤을 때 LB의 대역대를 뚫어야 된다는 것을 이해하고 LB의 대역대를 찾아봤던 점에 있어서 클라우드 1도 몰랐을 때랑 많이 발전했다고 생각했다. CIDR은 결국 아직 공부를 못했지만 이건 회고를 작성하면서, 그리고 포폴 쓰면서 더 찾아보고 공부해보도록 해야겠다.

⭐ 패키지 간 버전 및 호환성 확인
그리고 버전 문제도 꽤나 컸다. 인턴하면서도 java 버전 때문에 tomcat도 어쩌구 저쩌구 듣고 넘겼는데 내가 이번에 하면서 겪었다. 그때 말씀하셨던 건 tomcat 버전을 9로 올리기 위해서 java 버전을 모두 업그레이드 해야된다. 이걸 수동으로 하나씩 해야돼서 공수가 많이 든다고 하셨던 것 같은데 .. 내가 이걸 똑같이 겪었다. DB랑 WAS랑 잘 연결되는지 확인하기 위해서 MySQL Connector Java를 설치했는데 이때부터 문제가 아주 크게 생겼다.. 나는 java 7 버전을 설치하고 tomcat은 8버전을 설치해서 WAS 하나만 띄워서 확인할 때는 java와 tomcat 버전이 호환되니까 문제가 없었다. 그러나 MySQL Connecter J를 설치할 때 버전을 8.0.30으로 설치했던 것 같은데 이게 tomcat 쪽의 오류 메세지를 확인해보니까 Java Version 52.0 (JDK 8.0)이랑 호환이 안된다는 오류가 떴다. 당연하다. java 버전이 7인데 어떻게 8에 해당하는 java 버전 52랑 호환이 되겠는가.. 그래서 java 버전 올리고, tomcat도 그김에 9로 올려서 테스트 해보았더니 정상적으로 되는 것을 확인했다. 이전에 인턴하면서 mysql 5.7 버전으로 하라고 하셨을 때 버전 문제 있을 테니 잘 해결해보라고 하셨는데 그때는 잘 몰랐지만 이번에 하면서 버전의 호환성 문제를 해결하기 위해서는 내가 설치한 각각의 패키지의 버전이 뭔지 명확히 아는 것이 중요하다고 느꼈다. 그냥 냅다 mysql 같이 이름 쳐버리면 제일 최신 버전을 설치해주는데 냅다 이름 쳐서 최신 버전 설치하는 것과 -y로 버전 확인 없이 설치해버리는 것 둘 다 안좋은 습관 같아서 고쳐야겠다. 만약 mysql도 8.0 버전을 사용하지 않고 5.7 버전을 사용했더라면 MySQL Connector Java를 설치하는 과정에서도 버전 호환성 문제로 제대로 동작하지 않았을 수도 있다. 

보완할 점

  • DB standby랑 active 상태를 아직 잘 이해하지 못해서 그 부분을 실습하면서 해봤으면 좋았을 것 같다. 어차피 비용 이슈 때문에 못해봤겠지만…. RDS 하나만 만들었던 게 좀 아쉽긴 하다. 아마도 active 상태인 애를 사용하고 standby가 dr용으로 필요한 게 아닐까.. active인 rds를 가용영역 a에서 사용하고 있다가 에러 때문에 예기치 못한 종료가 되었다거나 …. 그러면 active 였던 애가 꺼지고 standby가 대신 올라오는 느낌?
  • http → https 로 SSL 인증서 붙이니까 바로 바뀌긴 했는데 이거 과정이 어떻게 되는 건지 궁금하다. 원래 아무 생각 없었는데 그냥 redirect라고 표시만 해뒀지 어떤 순서로 저렇게 되는 건지 궁금해져서 이 부분도 조금 더 공부해봐야될 것 같다.
  • CIDR: 이 부분이 제일 문젠데 VPC에서는 왜 `/16` 을 사용하고 Subnet에서는 왜 `/24` 를 사용하고 인스턴스에는 `/32` 가 붙는가.. 고정 같은데 아직 이해를 못했다.