본문 바로가기
Skills/AWS

[AWS EC2로 배포하기] 3. 나의 프로젝트 EC2 배포하기

by Hoseok 2023. 3. 15.
728x90
반응형

 

https://velog.io/@jaybon/series/infra

 

시리즈 | 인프라 infra - jaybon.log

EC2와 mobaXterm을 연결한다.리눅스에 한국 시간으로 timezone 설정을 한다.리눅스에 JDK를 설치한다.Spring boot와 AWS RDS와 연결한다.프로젝트를 jar 파일로 빌드한다.Spring boot 서비스를 배포한다.로그파

velog.io

 

*링크의 블로그를 보고 작성하였음을 알립니다.

 

인스턴스 생성

 

OS 선택하기

 

Ubuntu를 사용하는 이유?

 

Linux는 cmd로 입력하기 때문에 가볍다.

ubuntu가 요즘 유명하고 무료이고 참고자료도 많다.

aws linux와 ubuntu는 아마존에서 기술지원이 가능하다는 장점도 있다.

 

아키텍처 선택

 

*데스크톱과 관련된 시스템.

*모바일과 관련된 시스템

 

마이크로서비스 아키텍처

테이블별로 서버를 만든다.

서로 통신할 수 있게 하는 것.

 

포트 포워딩

 

스토리지 구성

EC2에서 서버만 배포하면 적은 용량으로도 가능하다.

 


 

인바운드, 아웃바운드

 

[EC2 기준]

 

*인바운드 규칙

외부에서 EC2로 접속할 때 경비대 역할.

기본 설정은 모두 받는 것.

도메인과 실제 IP를 연결.

실제 IP는 도메인만 허용하게 설정해 줄 수 있다.

만약 도메인은 https, 실제 ip는 http와 같은 경우라면

암호화되는 https로만 접속하게 설정해주어야 한다.

 

*아웃바운드 규칙

EC2 내부에서 외부로 나갈 때 막는 역할.

EC2 서버, 개발자 PC.

우리가 설정한 서버에만 보내지도록 하는 것.

실무에서는 설정한 서버로만 보내지도록 해야 한다.

 

[RDS 기준]

 

EC2가 데이터 요청(인바운드)

RDS는 인바운드 확인 후, EC2 아이피가 열려 있으면 OK.

RDS는 MYSQL에서 쿼리를 실행해서 데이터 출력.

RDS는 아웃바운드 확인 후, EC2 아이피가 없으면 데이터 전송 불가.

→ 열어줘야 된다.

 

*lightsail

https://lightsail.aws.amazon.com/ls/webapp/home/instances

 

작은 서비스를 운영할 때는 lightsail를 사용하자.

저렴한 가격으로 서비스 운영이 가능하다.

간단한 기능, VPN( 내 ip를 다른 ip로 설정) 제공.

EC2는 기본 제공 서비스로 탄력적 ip를 제공

탄력적 ip→고정 아이피.

인스턴스 하나당 1개 기본 제공.

그러나 lightsail은 탄력적 ip 요금을 내야 한다.

 


RDS

 

RDS 자동 백업

 

스냅샷

하루에 한 번씩 스냅샷으로 데이터를 저장해준다.

 

파라미터 그룹

DB를 생성할 때마다 설정을 해주어야 한다.

테이블이 100개 있다고 가정해보자.

파라미터 그룹만 설정하면 손댈 일 없이 db 관리가 가능하다.

 

*DB 사용하는 회사 예시

 

[스타트업]

mariaDB(무료)

mysql 8버전(무료)

PostgreSQL(무료)

 

[대기업]

Oracle(유료, 기술지원→1년에 수억에서 수십억)


 

배포

 

배포

java -jar 명령.

컴퓨터가 하드디스크에 있는 jar 파일을 메모리에 올리고(프로세스) 실행한다.

 

*이미 메모리에 올라갔기 때문에 하드디스크에 있는 jar 파일을 수정해도 문제가 없다.

 

종료시 H2에 올린+변경한 데이터가 다 날아간다.

메모리 DB는 주로 연습용으로 사용.

실제 서비스 시에는 잘 사용하지 않는다.

 

WAR파일로 배포해야 하는 이유?

Jsp 템플릿 엔진을 사용할 때,

 

웹서버 → 정적파일 html/css/js

웹 애플리케이션 서버 → 동적파일(템플릿)을 정적파일로 변환해서 전송

 

템플릿은 String.

브라우저는 정적파일만 해석 가능하다.

 

jsp, 톰캣이 jstl문법로 쓰여진 코드를 보고

그것을 해석해서 바꿔놓는다.

⇒ 브라우저가 해석 가능하다.

 

jsp는 현재 Spring 프레임워크에서 사용을 권장하지 않는 상태.

 

Thymeleef 또는 Mustache를 사용한다.

 

jsp는 jar가 작동하지 않는다.

 

그래서 옛날 버전인 war 파일로 출력해야 작동한다.

 

build시

war / bootWar

jar / bootJar

 

두 확장자의 차이는 내장 톰캣의 여부이다.

boot가 붙으면 내장 톰캣으로 작동하기 때문에 간편하다.

 

배포 순서

  • 프로젝트가 로컬에서 잘 작동하는지 확인
  • DB 연결 아이피 확인
  • RDS에서 DB 인바운드, 아웃바운드 확인
  • mobaX로 jar, war파일 업로드
  • java -jar(nohup 등 옵션) 파일 실행
  • 작동확인 1. cat log.out / 2. tail -f log.out / 인터넷에 주소 입력
  • 에러 발생 시 에러 코드 확인해서 프로젝트 수정
  • 기존에 업로드했던 jar, war 삭제
  • 새 jar, war 빌드
  • mobaX에 업로드
  • 업로드하는 동안 프로세스 확인 / 프로세스 종료
  • ps -ef | grep *.jar
  • kill -9 PID
  • java -jar(nohup 등 옵션) 파일 실행
  • 작동확인 1. cat log.out / 2. tail -f log.out / 인터넷에 주소 입력

 

728x90
반응형