✅ 배포
다른 사용자들이 인터넷을 통해서 해당 서비스를 사용할 수 있게 만드는 것
자신의 컴퓨터에서 개발할 때는 localhost
라는 주소에서 테스트 및 개발을 진행한다
하지만 localhost
는 다른 컴퓨터에서 접근이 불가능한 주소이다
배포를 하게 되면 IP
(ex.124.16.2.1) 이나 도메인
(ex.www.naver.com) 과 같은 고유 주소를 받게 되고
다른 컴퓨터에서 해당 주소로 접속할 수 있다
✅ IP
네트워크 상에서 특정 컴퓨터를 가리키는 주소
ex) 13.250.15.132
naver.com
이라는 서비스도 IP 주소를 가지고 있다
-> Server : 61.41.153.2
✅ Port
한 컴퓨터 내에서 실행되고있는 특정 프로그램 주소
ex) 13.250.15.132.3000
13.250.15.132 = IP주소
:3000 = 포트 번호
✅ IPv4
vs IPv6
IPv4
주소는 일반 우리가 사용하는 10.47.73.60 과 같은 IP 주소를 의미한다
하지만 인터넷을 사용하는 사람들이 늘어나면서 IP 주소가 부족해질 것을 예상하고
더 많은 주소값을 가진 IPv6
를 추가로 만들었다
IPv6
는 128비트로 각 필드를 16진수로 표현한다 -> ex) 2dfc:0:0:0:0217:cbff:fe8c:0
한 컴퓨터에서는 여러 프로그램이 동시에 실행되고 있다 (카카오톡, 크롬, VSCODE) 등등..
실제 서버를 운영하는 컴퓨터도 동일하다
운영컴퓨터의 Spring boot라는 서버에 통신하고 싶은데, IP 주소만 알아서는 실행중인 여러 프로그램 중
어떤 프로그램과 통신을 해야 할 지 알 수가 없다. 그러므로
💡 해당 IP에는 여러가지 프로그램들이 있는데 그 프로그램들을 포트번호로 구별함
주소창에 도메인 주소를 입력해서 엔터를 누르면, 브라우저는 기본적으로 80번 포트로 통신을 보내게
설정되어 있다.
✅ 잘 알려진 포트
자주 사용하는 포트
22 번
: (SSH, Secure Shell Protocol) : 원격 접속을 위한 포트 번호 = EC2 인스턴스
에 연결할때 사용
80 번
: (HTTP) : HTTP로 통신할 때 사용
443 번
: (HTTPS) : HTTPS로 통신할 때 사용
스프링부트에서 HTTP통신할 때 8080번 포트를 사용하는 것 처럼 포트는 규약을 꼭 지키지 않아도 됨
✅ EC2 (Elastic Computer Cloud)
서버
, 스토리지
, 데이터베이스
등의 컴퓨팅 서비스를 제공쉽게 말해서 -> 하나의 가상 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스
✅ EC2를 배우는 이유?
내 컴퓨터로 서버를 배포하고 다른 사용자들이 내 서비스를 사용하려면 컴퓨터를 24시간 동안 켜놔야 함
인터넷을 통해 내 컴퓨터에 접근할 수 있게 만들다 보니 보안적으로 위험함
이러한 단점으로 내가 가지고 있는 컴퓨터를 사용하지 않고, AWS EC2
라는 컴퓨터를 빌려서 사용하는 것!
AWS EC2
는 주로 백엔드 서버를 배포할 때 주로 사용
프런트엔드 웹 페이지를 배포할 때는 EC2
로 사용할 수 도 있지만, vercel
netlify
또는 AWS S3
를 사용해서 주로 배포한다
AWS 사이트를 들어가서 로그인 후 -> 검색창에서 E2C를 검색해서 들어가기 -> 리전을 선택해줌
✅ 리전(Region)
E2C
를 통해 빌려서 사용하는 컴퓨터들이 위치한 지역애플리케이션의 주된 사용자들의 위치와 지리적으로 가까운 리전을 선택하는것이 유리하다
-> 사용자의 위치와 애플리케이션을 실행시키고 있는 컴퓨터와 위치가 멀수록 속도가 느려짐
ex) 일본 유저들이 주로 사용하는 서비스를 만들거라면 리전을 도쿄로 선택하면 된다
리전
까지 선택 하면 그 다음 인스턴스 시작을 클릭한다
✅ 인스턴스
AWS
클라우드에서 사용하는 하나의 가상 컴퓨터✅ EC2 세팅 - 기본설정
이름 설정
운영체제 설정 -> 우분투 사용 (window나 mac은 용량이 무겁기 때문에 가벼운 운영체제 사용 권장)
인스턴스 유형 설정 = (컴퓨터 사양 설정) = t2.micro
는 프리티어로 사용가능하지만, 성능이 전혀 문제가 없고 서비스를 운영하는데 크게 지장되지 않음
키 페어(로그인) = 빌린 E2C
컴퓨터에 접속 할 때 사용하는 비밀번호
키 페어를 생성하면 키페어 파일
이 다운 받아지는데 그 파일이 유출되지 않도록 조심해야한다
그 다음 네트워크 설정이다
우선 vpc
설정은 넘어가자
✅ 보안그룹 설정
보안그룹
: AWS 클라우드에서 네트워크 보안을 의미
EC2 인스턴스
를 집으로 비유하면, 보안그룹
은 집 울타리와 대문으로 비유된다
인바운드 트래픽
: 외부에서 EC2 인스턴스로 보내는 트래픽에서 어떤 트래픽만 허용할 지 설정 가능
아웃바운드 트래픽
: EC2 인스턴스에서 외부로 나가는 트래픽에서 어떤 트랙핀만 허용할 지 설정 가능
✅ 인바운드 보안 그룹 규칙
ssh
: 원격 접속하기 위한 경로
소스 유형을 위치 무관으로 설정하면 어떤 컴퓨터의 IP에서든 EC2
에 접속 가능
만약 본인이 집에서만 특정 IP로만 접속하고 싶으면 소스 유형을 사용자 지정으로 바꾸고 IP를 지정한다
추가로 보안 그룹 규칙을 추가하여 HTTP 유형
을 추가하고 소스 유형을 위치 무관으로 지정한다
-> 백엔드 서버를 만들면 포트가 80번으로 띄우므로 포트범위는 자동으로 80번으로 지정된다
-> 위치무관으로 한 이유는 백엔드 서버를 배포하면 모든 사용자들이 접근해야하기 때문이다
네트워크 설정까지 끝났으면, 스토리지 구성에 대해서 알아보겠다
스토리지
: 컴퓨터에서 장기적으로 데이터를 저장하고 액세스할 수 있도록 해주는 구성품으로, 하드 드라이브나 SSD(solid-state drive) 형태로 존재한다.
이처럼 EC2
컴퓨터에서도 저장소가 필요하다
✅ EBS (Elastic Block Storage)
EC2
안에 부착되어 있는 일종의 하드디스크 = 여러 파일들을 저장할 저장공간스토리지
, 볼륨
이라고도 부른다프리티어는 최대 30G 까지 무료로 제공한다
볼륨 유형은 최신으로 선택한다
스토리지까지 설정했으면, 인스턴스 시작을 누르고 생성되면 -> EC2 대시보드에서 확인한다
-> 내 인스턴스에서 외부에서 접속할 수 있는 IP 주소를 확인할 수 있다 -> 인스턴스 연결을 통해 만든 가상 컴퓨터로 접속 할 수 있다 (cmd창으로 접속)
인스턴스 상태에서 인스턴스 중지
와 인스턴스 종료
는 다르다
인스턴스 중지는 잠시 컴퓨터를 꺼두는 것이고, 인스턴스는 종료는 컴퓨터 자체를 삭제하는 것이다
인스턴스 종료를 하면 아예 인스턴스를 새로 만들어야함
✅ 탄력적 IP
EC2 인스턴스를 생성하면 IP를 할당 받는데, 이 인스턴스를 중지시켰다가 다시 실행시키면
IP가 바뀌어 있는 것을 볼 수 있다. 이 IP를 바뀌지 않고 계속 고정 IP를 할당 받는 것을 탄력적 IP라 한다
IP가 바뀌도록 설정한 이유
인터넷 사용자가 많아지면서 IP개수가 부족해져서 사용하지 않는 IP는 자동으로 반환되도록 설정한 것
탄력적 IP 설정 및 연결 방법
네트워키 및 보안 부분의 탄력적 IP 클릭 -> 주황색버튼의 탄력적 IP 주소 할당 클릭
-> 설정거리 해주고 할당 버튼 클릭 -> 탄력적 IP 생성됨 -> 이름 수정 -> 작업 메뉴 클릭
-> 탄력적 IP 주소 연결 클릭 -> 만든 인스턴트 선택 -> 연결
연결까지 하면 검은 CMD 창이 나온다
✅ 스프링 부트 서버를 E2C에 배포
cmd창에 붙여넣기 -> ctrl + shift + v
자동오나성 -> tab
JDK 설치
$ sudo apt update && /
sudo apt install openjdk-17-jdk -y
JDK
가 잘 설치되어 있는지 확인 -> java -version
git clone https://github.com/choi-ju-yung/SemiProject.git
cd SemiProject
git ignore
에 민감한 정보를 담았으면 vi로 만들어주기✅ EC2를 비용나가지 않게 종료하기