📚 관련 독서/스프링 부트 3 백엔드 개발자 되기 - 자바 편

[SpringBoot] 11장 AWS에 프로젝트 배포하기

imname1am 2024. 2. 22. 22:51
반응형

📗 AWS ⭐

배포 : 실제 서버에 스프링 부트 서버를 올려 실행하는 것

AWS란?

클라우드 컴퓨팅 서비스를 이용해 배포하는 것

 

 

AWS로 서비스 배포하기 ⭐

 

🧩 EC2

-  AWS에서 제공하는 클라우트 컴퓨팅 서비스. (원격 서버)

- 가상의 PC = 서버 1대

 

🧩 오토 스케일링 그룹

- 유동적으로 EC2 관리

- 사용자의 요청 횟수에 따라 EC2 늘이거나 줄임

 

🧩 로드 밸런서

- 요청 분산시키는 역할

- 대상 그룹 (타깃 그룹) : 요청 어디로 분산시킬지 정하는 그룹

 

🧩 RDS

- AWS에서 제공하는 원격 DB

 

S3

- 파일 저장소

 

 

일래스틱 빈스토크 ⭐

앞의 서비스를 한 번에 설정.

서버 업로드용 코드만 작성해도 서버를 쉽게 올릴 수 있음

② 번들 형태 (.war 파일)로 일래스톡 빈스토크에 업로드

③ 일래스틱 빈스토크가 자동으로 환경 실행, 코드 실행에 필요한 AWS 리소스 생성&구성

④ 환경 직접 관리하고, 필요한 경우 버전 업데이트 / 새 앱 버전 배포

 

 

📗 일래스틱 빈스토크로 서버 구축하기

📌 일래스틱 빈스토크로 서비스 생성하기

 

[Chapter 11] 새로운 AWS UI에서 Elastic Beanstalk 환경 생성 (p. 318) · Issue #18 · shinsunyoung/springboot-developer

AWS의 Elastic Beanstalk 환경 생성 UI가 이전과 달라져서 어떻게 바꿔야할지 모르겠는 분들을 위해 가이드를 작성합니다. 아래 순서를 따라해주세요. (p. 318) Step 1. IAM 역할 생성 AWS > IAM > 역할 > 역할

github.com

 

1. IAM 역할을 생성한다.

1) AWS - IAM - 역할 - [역할 만들기]

 

 

2) [1단계] 'AWS 서비스', 'EC2' 선택

 

 

3) [2단계] 권한을 추가한다.

  • AWSElasticBeanstalkMulticontainerDocker
  • AWSElasticBeanstalkWebTier
  • AWSElasticBeanstalkWorkerTier

 

 

4) 마지막으로 역할 이름을 적고, 권한들이 잘 추가되었는지 확인

 

 

2. EB (Elastic Beanstalk)를 생성한다.

1) 일라스틱 빈스토크의 [새 환경 생성] 버튼을 눌러  '환경'을 구성한다.

 

 

2) [2단계] 서비스 액세스 구성을 다음과 같이 설정하고 [검토 단계로 건너뛰기] - [제출]

 

 

3) 완료!

상태가 OK면 잘 만들어진 거!

 

 

3. 제공받은 도메인 주소로 접속 시 샘플 애플리케이션 페이지가 잘 나오는지 확인

 

 

 

📌 일래스틱 빈스토크에서 RDS 생성하기

1) 일래스틱 빈스토크 환경 - [구성] - 네트워킹 및 데이터베이스 탭 - [편집]

 

 

2) 사용할 DB 엔진으로 mysql 선택하고 용량은 db.t2.micro 선택(프리티어 지원)하고, 사용자 이름과 암호 채우고 [적용]

 

 

 

3) DB 생성이 완료됐다면, [구성] - [네트워킹 및 데이터베이스 구성] - [편집] - [데이터베이스]의 엔드포인트 복사해둔다.

- H2 DB에서 RDB로 연결 시 사용

엔드포인트 찾느라 30분은 헤맨 듯;;

 

 

4) 다시 EB 환경의 [구성] - 아래쪽에 있는 탭 [업데이트, 모니터링 및 로깅] - [편집] 

 

 

 

5) [환경 속성 추가] 통해 DB 정보인 환경 속성들을 추가하고 [적용]한다.

→ 스프링 부트의 환경변수 properties.yml 파일의 설정값 역할 수행

 

 

그럼 이렇게 [구성] 아래로 내려 [환경 속성]을 확인하면 적용된 것을 볼 수 있다.

 

 

 

6) application.yml 파일에서 spring 항목의 datasource 항목들만 지운다.

(애플리케이션 실행 시 일래스틱 빈스토크에서 값을 덮어쓰므로)

 

 

📌 로컬에서 RDS 생성하기

1) RDS로 들어가서 [대시보드] - [DB 인스턴스 (1/40)] 클릭

 

 

2) DB 식별자 클릭

 

 

 

3) 일래스틱 빈스토크 [구성]의 엔드포인트 눌러 DB 관리 페이지로 이동

 

 

4) [연결 및 보안] - VPC 보안 그룹의 링크 클릭

 

 

 5) [인바운드 규칙] - [인바운드 규칙 편집]

→ DB 인스턴스 트래픽 관리 가능

 

 

6) 인바운드 규칙 기본값 수정하기 : [MySQL/Auroa] - [내 IP]

→ 로컬에서 일래스틱 빈스토크 DB에 접근 가능하다~~ 

 

 

7) IntelliJ에서 database navigator 플러그인 설치해 로컬에서 일래스틱 빈스토크 DB와 연결

: [File] - [Settings] - [Plugins] - Database Navigator (by Dan Cioca) 플러그인 설치하고 인텔리제이 재시작!

 

 

8) [DB Brower]에서 RDS의 정보인 Host, Port, User, Password 입력하기

 

→ Host : 엔드포인트에서 포트 번호 :3306 뺀 값

→ Port : 자동으로 입력된 값 3306 맞는지 확인

 

 

[결과]

 

 

9) DB Browser - [New SQL Console] 눌러 SQL문 작성하고 실행

create database blog;
use blog;

create table article (
    id bigint not null AUTO_INCREMENT,
    author varchar(255) not null,
    content varchar(255) not null,
    title varchar(255) not null,
    created_at timestamp,
    updated_at timestamp,
    primary key (id)
);

create table refresh_token (
    id bigint not null AUTO_INCREMENT,
    refresh_token varchar(255) not null,
    updated_at timestamp,
    primary key (id)
);

create table users (
    id bigint not null AUTO_INCREMENT,
    email varchar(255) not null,
    nickname varchar(255),
    password varchar(255),
    updated_at timestamp,
    primary key (id)
);

 

 

10) build.gradle 파일 열어 MySQL 관련 의존성 추가하기

dependencies{
	implementation 'mysql:mysql-connector-java'
}

 

 

 

📗 일래스틱 빈스토에서 서버 배포하기

애플리케이션 배포하기 (jar 파일 배포)

1) 인텔리제이 [Gradle] - [Tasks] - [build] - [build] 클릭해 빌드 진행

 

 

2) 빌드 끝나면 [build] - [libs]에 빌드 완성 파일(jar파일) 생성됨. 기억하기 쉬운 위치에 복사해두기 ([Open in - Explorer])

 

 

 

3) 일래스틱 빈스토크로 돌아가 생성된 환경의 이름 선택하고 [업로드 및 배포] - [파일 선택] - 위의 jar 파일 선택

 

 

4) [구성] - [업데이트, 모니터링 및 로깅] - [편집] - [환경 속성 추가]

  • SERVER_PORT               5000
  • JWT_SECRET_KEY        study-springboot
  • SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_ID        구글Oauth2에서 발급받은 클라이언트 ID
  • SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_CLIENT_SECRET         구글 Oauth2에서 발급받은 클라이언트 비밀키
  • SPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_GOOGLE_SCOPE               email,profile

 

5) 환경 업데이트 완료 후, 일래스틱 빈스토크에서 제공하는 URL에 접속한 후 /login 붙여 로그인 화면에 접속되는지 확인

 

 

 

OAuth 서비스에 승인된 URI 추가하기

1) 구글 클라우드 콘솔의 [API 및 서비스] - [사용자 인증 정보] - [OAuth 2.0 클라이언트 ID]에 추가된 클라이언트 ID 클릭

 

 

[승인된 리디렉션 URI] - 일래스틱 빈스토크에서 띄워준 서버의 URL + /login/oauth2/code/google 입력 - [저장]

 

 

[결과]

도메인 주소 + /login하고 로그인하면 OAuth 로그인도 잘 되고 글 목록도 잘 보인다~

 

 

 

 

(해당 글 내용은 📗 스프링 부트 3 백엔드 개발자 되기 - 자바 편을 읽고 정리한 내용입니다.)


+ 참고 +

광명 글.... 이거 아니었음 배포 울면서 했을 듯... AWS 인터페이스 너무 자주 바꾸심ㅠㅠ

 

Springboot : 24. AWS Elastic beanstalk

이 글에서는 지금까지 완성한 것을 배포하는 과정일 진행해 볼겁니다. 우선 아마존 웹 서비스 회원 가입부...

blog.naver.com

 

반응형