
자바 기반의 프레임워크인 Spring Framework를 간편하게 사용할 수 있도록 돕는 도구
복잡한 Spring 설정을 자동화하고, 신속하게 독립형 애플리케이션을 개발할 수 있음

1) 백엔드 모듈 구성
2) Elasticbeanstalk 구성
3) s3 구성
4) React 구성(가볍게)
5) RDS 구성
6) VPC 구성
7) 도메인 구성
8) SSL 구성
9) CI/CD 구성
https://velog.io/@tengury5/Gradle-설치-프로젝트-생성-Java-파일-추가
Amazon VPC (Virtual Private Cloud)
AWS에서 사용자가 가상 네트워크를 구성하여 자원을 안전하게 배포할 수 있도록 제공하는 서비스
VPC 생성 -> VPC 등 선택 -> 이름 설정, 가용영역 설정(2개, a랑 c로 하는걸 추천)

퍼블릭2개, 프라이빗2개, NAT게이트웨이 1개의 AZ에서 -> VPC 생성

애플리케이션을 쉽게 배포, 관리 및 확장할 수 있도록 돕는 AWS의 관리형 서비스
애플리케이션에 필요한 인프라(서버, 데이터베이스, 네트워킹 등)를 자동으로 설정하고 관리
Elastic Beanstalk 대시보드 -> 환경 -> 환경 생성 클릭 -> 환경 구성 설정하기



인스턴스 퍼블릭 활성화, private 서브넷 2개 선택

데이터베이스 private 서브넷 2개 선택

루트 볼륨 범용3 선택 후 환경 생성

Amazon EC2 (Elastic Compute Cloud)
AWS에서 제공하는 클라우드 기반의 가상 서버 서비스
인스턴스 이름 입력(bastonhost)

vpc, 서브넷(퍼블릭), 퍼블릭 활성화 -> 생성

Baston Host: 퍼블릭 서브넷에 위치하며 외부에서 접속할 수 있는 인스턴스Citron 인스턴스: 프라이빗 서브넷에 위치해 직접 외부 접속이 불가능합니다. 배스천 호스트를 경유해 접근해야 함SSH 프록시를 이용해 배스천 호스트를 경유하여 프라이빗 인스턴스에 접근
1) EC2 인스턴스에서 만들어진 인스턴스를 클릭하면 AMI 이름을 알 수 있음.
ec2-user
2) SSH를 사용해 EC2 인스턴스에 접근
ssh -i [키 이름] [기본 사용자 계정]@[인스턴스의 퍼블릭 IP]
ssh -i minji-test-key.pem ec2-user@3.35.17.209


vi minji-test-key.pem에 원래 minji-test-key.pem 에 있던 키내용을 복사해서 해당 단계에 붙여넣기하고 :q! 명령어로 빠져나오면 됨
3) 키를 통해 프라이빗 서브넷 안에 있는 Beanstalk 접속하기
Elastic Beanstalk -> 환경 -> Citron 환경 클릭
구성 -> 서비스 액세스 편집
적용

4) citron 인스턴스의 프라이빗 IP 복사

5) 프라이빗 서브넷 안에 있는 Beanstalk에 접속 성공!

Amazon RDS (Relational Database Service)
AWS에서 제공하는 관리형 관계형 데이터베이스 서비스
서브넷 그룹 탭 클릭 -> DB 서브넷 그룹 생성 버튼 클릭
RDS 대시보드에서 데이터베이스 생성 버튼 클릭

엔진 옵션 : MySQL

DB 인스턴스 식별자, 마스터 이름, 마스터 암호 설정

VPC, DB 서브넷 그룹, 퍼블릭 액세스( 예 ), 기존 VPC 보안 그룹 선택 -> 데이터베이스 생성 버튼 클릭

IntelliJ에 데이터베이스 연결 기능 추가하는법
https://velog.io/@tengury5/IntelliJ-IDEA무료버전에서-데이터베이스-연결-기능-사용하는법-feat.-JDBC-드라이버
IntelliJ Database Navigator 로 데이터 연결

하지만, 해당 db가 프라이빗이기 때문에 처음엔 연결 오류가 남

bastonhost 통해서 연결해야 함(SSH)

DB 연결 성공!


일반적으로 "프론트엔드"는 웹사이트나 애플리케이션의 사용자가 직접 보는 부분, 즉 사용자 인터페이스(UI)와 관련된 모든 요소를 포함
https://nodejs.org/en/ 접속하여 LTS 버전 설치 (current 버전도 상관없으나 LTS 권고)

npm install npx -g
S3 대시보드에서 버킷 생성 버튼 클릭속성 -> 정적 웹 사이트 호스팅 편집
React 프로젝트 간단하게 생성하는 법
https://velog.io/@tengury5/React-프로젝트-간단하게-생성하기
프로젝트 디렉토리 이동
cd <프로젝트 이름>
npm start 명령어 입력해 실행npm start

npm run build

serve: 정적 파일을 간단히 서버에서 제공하기 위해 사용하는 npm 패키지
npm install -g serve
serve -s build
npm install serve
npx serve -s build
- serve 패키지 페이지로 이동 https://www.npmjs.com/package/serve
- 원하는 버전의 GitHub 페이지로 이동하여 소스코드 .zip 다운로드 https://github.com/vercel/serve
- 프로젝트 디렉토리에 압축해제해서
package.json파일이 있으면 완료- 해당 폴더에서
npm install serve->serve -s build-> 빌드 성공!
S3 대시보드에서 생성했던 버킷 에 업로드 버튼 클릭

build 폴더 안의 모든 객체를 드래그앤드롭하여 추가해주고 업로드

해당 버킷에서 권한 탭 클릭 -> 퍼블릭 액세스 차단 체크 해제

퍼블릭 액세스 차단(비활성화) 확인 후 아래에 버킷 정책 편집하기

S3 버킷에 대한 정책 생성하여 복사하기

버킷 정책 붙여넣고 저장

속성 탭 맨 하단의 정적 웹 사이트 호스팅 엔드포인트 주소 클릭하여 페이지가 열리는지 확인
S3 통해서 열린 React 프로젝트

로컬에서 열린 React 프로젝트

CodePipeline 대시보드에서 파이프라인 생성 버튼 클릭 -> 파이프라인 이름 설정

소스 스테이지 추가

빌드 스테이지 추가 (codebuild 에서 빌드 만든 후 해당 프로젝트 선택)

배포 그룹 생성 (서비스 역할도 없다면 IAM에서 codedeploy에 대한 역할 추가 해줘야함, 로드밸런서(ELB)와 연동 되도록 대상 그룹도 생성해줘야함)

배포 스테이지 추가 (미리 codedeploy 에서 배포, 배포 그룹 만들어둬야 함) -> 파이프라인 생성 버튼 클릭
퍼블릭에 있다면 beanstalk으로 하면 되는데 프라이빗 안에 있는 것을 연동하는 경우, codedeploy를 별도로 만들어서 elb에 묶어서 배포할 예정


Route 53 대시보드에서 도메인 등록 섹션에 원하는 도메인 이름을 적고 검색 버튼 클릭

다른 곳에서 이미 도메인을 구입했으면 호스팅 영역 생성 버튼 클릭

구매한 도메인 이름 입력 -> 호스팅 영역 생성 버튼 클릭

구매한 도메인의 NS(네임서버) '값/트래픽 라우팅 대상' 으로 바꿔주면됨

CloudFront 대시보드에서 배포 생성 버튼 클릭

만들어둔 S3 버킷 선택

CloudFront 배포 완료

Route 53에 생성한 호스팅 영역에서 레코드 생성 버튼 클릭

라우팅 정책 선택

단순 레코드 정의 버튼 클릭

배포된 CloudFront or Beanstalk 등 라우팅 대상을 선택해주고 단순 레코드 정의를 해주면 검색창에 복잡한 엔드포인트를 입력하지 않아도 내가 산 도메인을 검색하면 빠르고 간단하게 접속이 가능해짐
