기존 구조는 MAS 구조로 아래와 같았다. 백엔드 서버만 총 6개로 스프링 서버 4개, FastApi 서버 2개로 이루어졌다.
하지만 이제 프리티어 계정만으로 축소해서 배포해야한다! 그래서 아래와 같이 게이트웨이 서버를 없애고 스프링 서버는 하나로 통합하고, FastApi 서버는 2개뿐이라서 하나의 EC2로도 충분히 돌아갈 것 같아서 냅두기로 했다.
Docker로 EC2에 배포하기
제일 먼저 FastApi 서버를 EC2에 배포하기로 했다. 코드는 변경할 것이 거의 없었다. 초반에 잘못 설정한 포트 번호만 8001 -> 8000으로 바꿔주고, 8000 -> 8001로 바꿔줬다.
EC2에서 도커 이미지를 다운 받는 방법은 1. DockerHub에서 업로드 후 다운 받는 방법과 2. ECR(Elastic Container Registry)에 업로드 후 다운 받는 방식이 있다. 두 방법 모두 해봤는데 기존부터 ECR에 올린 후 다운 받고 있는 방식을 사용하고 있어서 ECR에 올리기로 했다. 하는 방법이 별 차이가 없다.
1. EC2 생성
가장 먼저 EC2를 만들어야 한다. EC2 창에서 인스턴스 시작 버튼을 누른 후 이름을 입력하고 사용할 OS 이미지를 선택한다. 제일 기본인 Linux를 선택했다.
중요한 퍼블릭 IP 자동 할당을 활성화 해주고, 또 중요한 보안 그룹을 설정해줘야 한다.
보안 그룹 창에서 보안 그룹 생성을 누른다.
인바운드 규칙을 추가해준다. 인바운드 규칙은 다른 컴퓨터(네트워크)에서 자신의 컴퓨터로 네트워크 데이터가 들어올 수 있도록 정의하는 규칙이다. 반대로 아웃바운드 규칙은 자신의 컴퓨터에서 네트워크 데이터가 다른 컴퓨터(네트워크)로 나갈 수 있도록 정의하는 규칙이다.
인바운드 규칙은 기본적으로 HTTP의 80포트와 HTTPS의 443 포트, SSH 프로토콜의 22 포트를 모두 열어주는 것이 편하다. 그리고 서버에서 다른 포트 번호를 사용한다면 그것들도 추가 해줘야 한다. 그리고 소스의 0.0.0.0/0은 모든 IP를 허용한다는 의미이다.
이렇게 보안그룹을 생성하고 마저 EC2 생성 창에서 기존 보안 그룹을 선택하여 생성한 보안 그룹을 적용한다. 그리고 인스턴스 시작을 누르면 끝난다.
2. EC2 접속하기
이제 생성된 EC2에 접속하기 위해서는 원격으로 터미널을 통해 접속한다. 이를 위해 보안 규칙에서 22포트를 열어 준 것이다.
생성된 인스턴스의 ID를 클릭하고 연결 버튼을 누르면 아주 친절하게 명령어들이 나온다. 아래 작업 그대로 실행하면 된다. 터미널을 열어서 프라이빗 키 파일이 있는 곳으로 현재 디렉토리를 이동시킨 후, 3번 명령을 실행한다. 그리고 4번 말고 예: 밑에 있는 명령어를 복사해서 실행하면 EC2에 원격으로 접속할 수 있다.
이로써 무사히 EC2를 만들었다.
'Soma' 카테고리의 다른 글
MSA 구조를 Monolithic 구조로 변경하기 #2: ECR, EC2 배포하기 (0) | 2024.12.23 |
---|---|
pytest.fixture를 이용한 테스트 (0) | 2024.06.14 |
#1 별찍기 시각화 시도 (0) | 2024.05.18 |
2024년 소프트웨어 마에스트로 15기 합격 후기 (8) | 2024.03.30 |
2024년 소프트웨어 마에스트로 15기 면접 후기 (0) | 2024.03.16 |