AWS EC2로 Spring 프로젝트 배포하기 (1)

DongHyun Kim·2023년 4월 18일
0

백엔드

목록 보기
11/16

이 글의 GOAL 🚩

  • AWS이 무엇인지, AWS에 어떤 서비스가 있는지 살펴보기
  • AWS의 EC2로 인스턴스를 생성해서 나만의 서버 만들기

AWS를 이용하는 이유

우리가 만든 API를 클라이언트에서 사용하기 위해서는 API가 계속 실행중이어야 한다. 그리고 이것을 계속 실행시키기 위해선 24시간 운영하는 컴퓨터가 필요하다. 그런데 개인 또는 소규모의 기업이 이런 서버용 컴퓨터를 장만하기 위해서 본체를 하나 맞추기엔 서비스의 개수가 늘 수록 비용도 기하급수적으로 늘 것이다.
이러한 비용을 줄이기 위해 외부에서 컴퓨터 자원을 촘촘하게 필요한 용량의 서버를 빌려주는 서비스를 클라우드 서비스라 하며, AWS, 구글 클라우드 플랫폼(GCP), MS의 Azure가 대표적이다. 그 중 친숙한 AWS를 사용해보고자 한다.

AWS의 다양한 서비스

AWS는 제공하는 서비스에 따라 다양한 이름의 서버가 존재한다. 배포를 위해 자주 사용하는 서비스를 간략하게 설명하자면

EC2 (Elastic Compute Cloud)

  • 클라우드 가상 머신
  • 컴퓨팅 리소스에 대한 자유로운 제어(작은 컴퓨터를 빌리는 느낌)
  • 다양한 운영체제, 스토리지 크기 등 선택 가능

S3 (정적 파일 관리)

  • 사진이나 비디오 문서 등 정적인 파일을 저장하는 서비스
  • 간단한 엑세스 제어

Route 53 (DNS 설정)

EC2로 생성한 서버를 외부에서 접근할 때 기본적으로 퍼블릭 IP 주소만 있고 우리가 평소 사용하는 https://{DNS명} 같이 URL의 DNS는 기본 제공하지 않는다. 그래서 Route 53에서 원하는 도메인 이름을 사서 호스팅 영역을 통해 우리 서버의 IP에 연결해줄 수 있다.

RDS (관계형 데이터 베이스 서비스)

EC2에 운영체제에 따라 Mysql을 설치해서 운영, 관리 하는 작업은 반복적이고 귀찮다. 그래서 RDS는 이러한 과정을 생략해서 6가지 SQL 종류에서 필요한 것을 골라 간편하게 이용할 수 있게 해준다. 비용은 아마존에서 빌린 서버 (인스턴스)에 직접 설치해서 관리하는 것보다 비싸지만 편리함을 얻는 이점이 있다.

AWS EC2 사용 방법

AWS를 처음 가입하면 1년동안 제한적인 서비스를 무료로 이용할 수 있다.

AWS에 가입해서 메인 홈페이지를 가면 이런 화면이 뜰 것이다. 여기서 가상 머신 시작(EC2)를 선택

인스턴스란 우리가 사용할 수 있는 서버 컴퓨터라 생각하면 된다. 우리 서버의 이름을 적고 서버에 처음 깔릴 운영체제를 선택하자. 필자는 평소 윈도우에서 우분투 WSL을 사용한 경험이 있기 때문에 우분투를 선택했다

프리티어가 사용할 수 있는 t2.micro 선택
키 페어는 우리가 앞으로 외부 컴퓨터에서 아마존 서버에 있는 인스턴스에 접속하기 위해 필요한 파일을 생성해준다. "awskey" 같은 이름으로 생성해주자

네트워크는 우분투로 운영체제를 골랐다면 유닉스 계열의 SSH를 통해 외부 네트워크에 대한 보안을 선택한다. 참고로 익숙한 운영체제 중 Window🪟만 유닉스 계열이 아닌 독자 운영체제 이기 때문에 후에 AWS EC2 인스턴스에 연결하기 위해 Putty나 Ubuntu WSL이 필요하다

스토리지는 8기가 gp2로 설정, 그리고 인스턴스 시작을 클릭

생성한 인스턴스를 살펴보면, 방금 생성한 인스턴스의 이름, 상태(중지 중, 실행 중) 세부 정보를 살펴보면, 퍼블릭IPv4 주소는 외부에서 접근할 수 있는 IP이며 프라이빗 주소로 연결하기 위한 주소라 보면 된다. 퍼블릭 IPv4 DNS는 퍼블릭 IP 주소 대신 사용할 수 있는 주소명이지만 어떤 서비스인지 직관적이지 않기 때문에 나중에 DNS 명을 구입해서 호스팅을 하는 것이 좋다. 탄력적 IP는, 퍼블릭 IPv4는 인스턴스가 중지, 실행되면 IP 주소를 재할당받는 특징이 있기 때문에 고정적인 공인 IP가 필요할 때 사용할 수 있다.

외부에 공개할 포트 번호와 연결할 수 있는 IP를 0.0.0.0/0 으로 해서 모든 IP에서 연결할 수 있도록 설정해준다. 각 포트번호의 종류는
HTTPS, HTTP는 약속으로 포트번호 443과 80을 할당받는다
SSH는 22번 포트를 할당받는다
MySQL은 기본적으로 3306번 포트를 할당받는다
Tomcat은 기본적으로 8080번 포트를 할당받는다

이제 2번 째 인스턴스 시작 을 누르면 컴퓨터 전원을 키듯이 인스턴스가 실행된다

다음 게시글은 EC2를 외부에서 접속해서 프로젝트를 실행해보자! 😊

profile
do programming yourself

0개의 댓글