📗 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) 완료!
3. 제공받은 도메인 주소로 접속 시 샘플 애플리케이션 페이지가 잘 나오는지 확인
📌 일래스틱 빈스토크에서 RDS 생성하기
1) 일래스틱 빈스토크 환경 - [구성] - 네트워킹 및 데이터베이스 탭 - [편집]
2) 사용할 DB 엔진으로 mysql 선택하고 용량은 db.t2.micro 선택(프리티어 지원)하고, 사용자 이름과 암호 채우고 [적용]
3) DB 생성이 완료됐다면, [구성] - [네트워킹 및 데이터베이스 구성] - [편집] - [데이터베이스]의 엔드포인트 복사해둔다.
- H2 DB에서 RDB로 연결 시 사용
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
'📚 관련 독서 > 스프링 부트 3 백엔드 개발자 되기 - 자바 편' 카테고리의 다른 글
부록 (값 검증, 예외처리) (0) | 2024.02.28 |
---|---|
[SpringBoot] 12장 CI/CD 도입하기 (0) | 2024.02.27 |
[SpringBoot] 10장 OAuth2 ver. 로그인/로그아웃 구현 (0) | 2024.02.21 |
[SpringBoot] 09장 JWT ver. 로그인/로그아웃 구현 (0) | 2024.02.13 |
[SpringBoot] 08장 스프링 시큐리티 ver. 로그인/로그아웃, 회원 가입 구현 (0) | 2024.02.13 |