E2C 뜻과 생성과정

WAS·2025년 5월 12일
0

AWS

목록 보기
1/4

✅ 배포
다른 사용자들이 인터넷을 통해서 해당 서비스를 사용할 수 있게 만드는 것

자신의 컴퓨터에서 개발할 때는 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번 포트로 통신을 보내게
설정되어 있다.

✅ 잘 알려진 포트

  • 포트 번호는 0 ~ 65535 번까지 사용 가능
  • 그 중에서 0 ~ 1023 번 까지의 포트번호는 주요 통신을 위한 규약에 따라 이미 정해져있음

자주 사용하는 포트
22 번 : (SSH, Secure Shell Protocol) : 원격 접속을 위한 포트 번호 = EC2 인스턴스 에 연결할때 사용
80 번 : (HTTP) : HTTP로 통신할 때 사용
443 번 : (HTTPS) : HTTPS로 통신할 때 사용

스프링부트에서 HTTP통신할 때 8080번 포트를 사용하는 것 처럼 포트는 규약을 꼭 지키지 않아도 됨


✅ EC2 (Elastic Computer Cloud)

  • 아마존 웹 서비스(AWS)에서 제공하는 클라우드 컴퓨팅 서비스
  • 클라우드 컴퓨팅은 인터넷을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공

쉽게 말해서 -> 하나의 가상 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스

✅ 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

  1. 스프링부트를 실행시키기 위한 JDK 설치
    3.XX 버전을 사용한다는 예시로 JDK 17를 다운받을 것이다
$ sudo apt update && /
sudo apt install openjdk-17-jdk -y
  1. JDK 가 잘 설치되어 있는지 확인 -> java -version
  2. 깃허브에 올려놓은 본인 프로젝트를 클론(다운) 받아서 명령어 입력
    -> git clone https://github.com/choi-ju-yung/SemiProject.git
    -> 그 후 본인 프로젝트로 이동 -> cd SemiProject
  3. git ignore 에 민감한 정보를 담았으면 vi로 만들어주기
  4. 서버 실행시키기

✅ EC2를 비용나가지 않게 종료하기

  • 인스턴스 종료 해주기
  • 탄력적 IP 릴리즈(삭제) 하기

profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글