이번 포스팅에서는 스프링 프레임워크를 이용한 프로젝트를 AWS 를 통해 배포하는 과정을 정리해보겠다.
목차
1. AWS 세팅 및 인스턴스 생성
2. 발급 받은 ssh 키로 EC2 우분투 콘솔 접속하기
3. 우분투 콘솔에서 git ssh 연동 후 git clone 하기
4. 내려받은 파일로 빌드하고 jar 파일 실행시켜 스프링 부트 서버 실행시키기
AWS 세팅 및 인스턴스 생성
(1) AWS Region 설정하기
먼저 AWS 사이트에 접속하고 로그인 한 뒤, 리전이 서울로 되어있는지 확인하자.
( 다른 리전에 인스턴스를 생성하게 되면 그 지역에 인스턴스가 생성되어 성능도 안좋을 뿐더러 서울 리전에서는 확인이 불가능하기 때문에 서울 리전으로 맞춰주도록 하자.)
(2) EC2 인스턴스 생성하기
1. 인스턴스 시작
검색 창을 통해 EC2 검색 후 EC2 대시보드로 들어가 인스턴스 시작을 눌러 인스턴스를 생성하자.
2. 인스턴스 이름 및 AMI 설정
이후 우리가 만들 EC2 인스턴스의 이름을 정해두는 항목인데, 정해주지 않더라도 인스턴스 생성이 가능하나 헷갈리지 않게 이름을 정해주는 것이 좋다.
이제 AMI 를 세팅해줄 차례인데 여기서 어떤 종류의 서버로 구성할 지 선택하자.
OS는 원하는 것이 있다면 원하는 것으로 해주면 되고, 본인은 프리티어가 제공하는 Ubuntu LTS 버전으로 진행하도록 하겠다.
3. 인스턴스 유형 설정
인스턴스 유형은 프리티어를 사용하고 있다면 t2.micro 로 설정해주어야 한다. 다른 유형으로 설정하면 과금요소가 추가된다.
4. 키 페어 생성하기
키 페어는 EC2 인스턴스에 원격으로 접속하기 위해 필수적으로 필요하기 때문에 생성해줘야 한다.
또한, 한번 생성하면 두번 다시 다운로드 받을 수 없기 때문에 잘 보관하고 있어야 한다.
새 키 페어 생성을 누르고, 키 페어 유형은 RSA로 지정하고 프라이빗 키 파일 형식은 .pem 형식으로 지정해준 뒤 이름을 작성해 생성한다.
4. 네트워크 설정
- 보안 그룹 : 방화벽 관련 내용으로 추후 세팅 예정이므로 넘어가도록 하자. (기존에 설정해둔 그룹이 있다면 적용해도 무방)
- 새 보안 그룹 규칙 : SSH 통신을 사용하기 위해 SSH 트래픽 허용 , 웹 서버 생성 시 엔드포인트를 설정하기 위해 HTTPS , HTTP 트래픽 허용을 체크하도록 하자.
- 위치는 고정된 ip로 접근하는 것이 아닌 이상, 위치 무관(0.0.0.0/0)으로 설정하도록 하자.
5. 스토리지 세팅
프리티어는 최대 30GiB까지 지원해주기 때문에 스토리지를 30으로 설정해주고,
볼륨 유형은 범용 SSD로 선택하도록 하자.
만약, Provisioned IOPS SSD (프로비저닝된 IOPS SSD) 를 선택한다면 사용하지 않아도 활성화한 기간만큼 계속 비용이 발생하게 되므로 프리티어를 사용한다면 주의해야 한다.
6. 인스턴스 시작
마지막으로 인스턴스 시작을 통해 , 인스턴스를 최종적으로 생성하도록 하자.
인스턴스가 다음과 같이 생성된 목록에 출력된다면 , 성공적으로 인스턴스 생성이 완료된 것이다.
(3) 보안 그룹 수정하기
: 이제 기존에 생성한 인스턴스의 보안 그룹을 수정해 주도록 하자.
보안 그룹 ?
: AWS 에서 제공하는 방화벽으로 인바운드 규칙, 아웃 바운드 규칙이 존재한다.
- 인바운드 규칙(inbound) : 외부에서 EC2나 RDS 등의 내부로 접근할 때 사용되는 방화벽 규칙
- 아웃바운드 규칙(outbound) : EC2나 RDS 등의 내부에서 외부로 접근할 때 사용되는 방화벽 규칙
우리는 EC2에 접속해서 서버를 띄우는 것이 목적이기 때문에 인바운드 규칙만 설정해주도록 하자.
1. EC2 메뉴의 네트워크 및 보안 탭의 보안 그룹을 눌러 보안 그룹 세팅 창으로 들어간다.
2. 보안 그룹 생성을 눌러 새로운 보안 그룹을 생성해 주도록 하자.
먼저 생성하고자 하는 보안 그룹의 이름과, 설명을 작성합니다.
이후 인바운드 규칙의 규칙 추가를 눌러 세팅 하도록 하자.
순서대로,
- 원격 EC2 인스턴스에 접속할 때 사용되는 SSH 관련 방화벽으로 고정 ip가 아닌 Anywhere-IPv4로 설정하고, 기본 포트로 22번 포트가 사용된다.
- HTTP 연결시 사용된다.
- HTTPS 연결시 사용된다.
- 스프링 부트 기반 서버를 열어줄 것이기 때문에 사용자 지정으로 8080 포트를 설정해준 뒤 url을 아는 누구나 접속할 수 있도록 Anywhere-IPv4로 설정하자.
- 데이터베이스 MySQL을 사용한다면 가장 아래의 설정또한 추가해주면 된다.
(4) 보안 그룹 설정하기
: 이제 생성한 보안 그룹을 아까 생성했던 EC2 인스턴스에 설정해주도록 하자.
EC2 콘솔에 들어가 아까 생성한 인스턴스를 우클릭하고 보안 -> 보안 그룹 변경을 눌러주고, 생성한 보안 그룹으로 교체해주도록 하자.
이후 적용된 인바운드 규칙을 살펴보면 우리가 생성한 보안 그룹의 인바운드 규칙이 잘 적용된 것을 확인할 수 있다.
여기까지, AWS 세팅 및 EC2 인스턴스 생성을 완료했고 다음 포스팅에서는 실제 빌드를 통해 서버를 띄워보고 접속해보도록 하자.
출처