배포(Deployment)
- 다른 사용자들이 인터넷을 통해 사용할 수 있게 만드는 것
- 우리가 개발을 할 때는 localhost로 개발하게 되나, 다른 컴퓨터에서는 접근이 불가하다
EC2(Elastic Compute Cloud)란?
- 컴퓨터를 원격으로 접속해 사용하는 서비스
- 서버를 배포하기 위해서는 컴퓨터가 필요하나, 시간적 경제적 비용이 막대하다.
- 따라서 AWS EC2라는 컴퓨터를 빌려 사용하는 것
- 주로 백엔드 서버 배포에 사용
EC2 배포
- Region 설정
: 리전이란 인프라를 지리적으로 나누어 배포한 데이터 센터
: EC2는 원격으로 컴퓨터를 빌리는 것이다.
: 어디에 있는 컴퓨터를 빌릴 것인가? 에 대한 설정이 region
: 사용자의 위치와 지리적으로 가까울수록 전송 속도가 빠르다
ec2 기본 세팅
- ec2 대시보드에서 인스턴스 시작을 클릭
주요 설정 사항
- 이름 및 태그 : 내가 빌리는 컴퓨터의 이름/ 추후 개발용-배포용 서버 구분 등에 사용
- 애플리케이션 및 OS 이미지 : 서버 배포에 가장 가벼운 OS는 ubuntu
- 인스턴스 유형 : 빌리려는 컴퓨터의 스펙
- 키 페어 : ec2 컴퓨터의 인증 키
- 키 페어 생성
- 유출과 분실에 주의
- 네트워크 설정
-- 편집을 눌러 세부 설정 가능
-- 보안 그룹 설정
--- AWS 클라우드에서의 네트워크 보안
--- EC2에 접속 가능한 그룹을 설정
--- EC2 인스턴스를 하나의 집이라 가정하면 보안그룹은 집 바깥의 쳐진 울타리와 대문이다
--- 보안그룹 규칙
---- 인바운드 트래픽 : 외부 > Ec2 인스턴스
---- 아웃바운드 트래픽 : 외부 < Ec2 인스턴스
--- 보안그룹 설정시, IP의 범위와 포트를 설정할 수 있다
[인바운드 규칙 예시]
- ssh 22포트 : 원격제어/ 데이터 전송 프로토콜인 ssh의 22번 포트에 대한 요청을 허용하겠다.
- 위치무관 : 요청 IP를 따로 제한하지 않는다
> IP와 Port의 개념
IP : 특정 컴퓨터를 가리키는 주소
ex) 13.250.15.132
Port : 한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소
ex) 13.250.15.132:3000 > 3000번 포트를 의미
- 한 컴퓨터 내에서 실행되는 여러 프로그램 중 하나
-- 잘 알려진 포트(well-known-port)
--- 0-1023번까지는 주요 통신을 위한 규약에 따라 이미 정해놓음
--- 22번(SSH) : 원격 접속을 위한 포트 번호
--- 80번(HTTP) : Http로 통신을 할 때
--- 443번(HTTPS) : Https로 통신을 할 때 사용
- 스토리지 세팅(EBS-Elastic Block Storage)
: EC2안에 부착되어 있는 일종의 하드디스크
: 스토리지, 볼륨이라고도 불림
- EC2 접속하기
-- 퍼블릭 IPv4 주소 : 빌려온 컴퓨터의 주소
-- 인스턴스 상태
-- 인스턴스 중지 : 일시정지
-- 인스턴스 종료 : 컴퓨터를 삭제
- 보안 그룹
- 모니터링 : 실제 서버를 운영할 때 사용되는 리소스 그래프 표시
탄력적 IP 연결하기
-- EC2는 인스턴스를 생성하면 임시적인 IP를 할당 받음
-- 만약 인스턴스를 중지했다 다시 실행하면 새로운 IP를 할당받음
-- 그러나, 고정 IP 할당이 필요할 때가 있다 == 탄력적 IP
> 네트워크 및 보안 > 탄력적 IP > 탄력적 IP 주소 할당
그렇게 되면 탄력적 IP 주소를 할당받게 된다
여기에선 43.203.97.44가 할당되었다.
이제 작업 > 탄력적 IP 주소 연결로 들어간 후 인스턴스와 연결해준다
다시 인스턴스에 접속해보면 설정한 탄력적 IP주소로 변경되어 있는 모습을 확인가능하다
이제 인스턴스를 중지하더라도 IP주소가 변경되지 않는다
우리가 빌린 인스턴스의 IP주소가 탄력적 IP주소로 고정된 것이다.
SpringBoot 서버를 배포하기
- jdk 설치하기 : ex) 17버전
sudo apt update && / sudo apt install openjdk-17-jdk -y
- 설치 확인 : java -version
- 17버전이 잘 설치된 것을 알 수 있다
- github clone
git clone {repo 주소}
-- gitignore에 있는 주요 파일은 직접 vi를 통해 작성
- 실행하기
-- clean 설정은 기존에 build된 파일을 삭제하고 새로운 build
./gradlew clean build
build > libs 로 접속
cd build
cd libs
실행하기
sudo java -jar {jar 파일명}.jar
'프로젝트 > 오디' 카테고리의 다른 글
🌐NAT gateway로 private 서브넷에서 외부 API 호출하기 (0) | 2024.10.29 |
---|---|
CD 배포 스크립트 실행 중 오류가 발생한다면? : tag를 활용한 롤백 전략 구축 하기 (1) | 2024.10.28 |
🙉 Test Fixture 생성전략에 대한 고민 feat) FixtureMonkey (2) | 2024.10.12 |
Odsay 대중교통 길찾기 API를 쓰며 느낀 3가지 단점 (2) | 2024.08.26 |
[Google Maps vs Odsay] 대중 교통 길찾기 API 비교하기 (1) | 2024.07.21 |