개요

CI/CD 파이프라인도 구축해보고, 정확한 부하테스트를 진행하려면 먼저 스프링을 EC2에 띄어보는 선행이 필요했다.
먼저 Spring boot서버를 배포해보자.!

진행 순서는 다음과 같다.

AWS EC2 세팅 -> EC2 접속 -> Git 설치 및 Clone -> java 설치 및 설정 파일 생성 -> 스프링 서버 띄우기

1.AWS EC2 세팅

1-1 AWS Region 설정하기

우측 상단에 지역을 서울로 설정

1-2 EC2 생성하기

검색에 EC2를 입력해 "EC2" > "인스턴스 시작"을 누릅니다.


이름을 적절하게 입력하고


본인이 원하는 구성을 선택합니다.(전 ubuntu 22.04 프리티어버전을 사용했습니다.)


인스턴스 유형도 프리티어로 골라줍니다.
프리티어는 1GB의 메모리를 제공하네요.


키 페어가 없다면 새 키 페어 생성을 통해, 새로운 키를 만듭니다.

그 후 다른 세팅은 원한다면 추가하시고, 잘모르시겠다면 건드릴 필요없이 맨 아래의 '인스턴스 시작'을 눌러 생성합니다.

1-3 보안 그룹 설정하기

ssh 접속을 위해 보안 그룹을 수정하겠습니다.

보안 그룹이란?
AWS 에서 제공하는 방화벽으로 인바운드 규칙, 아웃바운드 규칙이 존재합니다.

  • 인바운드 규칙(inbound) : 외부에서 EC2나 RDS 등의 내부로 접근할때 사용되는 방화벽 규칙
  • 아웃바운드 규칙(outbound) : EC2나 RDS 등의 내부에서 외부로 접근할때 사용되는 방화벽 규칙


인스턴스 클릭 후 > 보안 > 보안 그룹을 통해 수정 페이지로 이동합니다.


인바운드 규칙 > 인바운드 규칙 편집을 눌러 위와 같이 규칙을 추가 및 저장합니다.

  • 여기서 0.0.0.0/0 은 Anywhere-IPv4입니다.
  • 본인의 웹 서버 포트가 8080이 아니라면, 8080번 포트 대신 다른값을 입력하시면 됩니다.

2. EC2 Instance에 접속하기


인스턴스 선택후 연결 버튼을 누르면 설명 페이지가 나옵니다.


방법이 친절하게 설명되어 있으므로, 이것을 차례대로 따라하시면 됩니다.
저는 SSH 클라이언트 방식으로 진행하겠습니다.
터미널을 통해 위에서 다운받은 ssh키가 있는 경로로 접근후 아래 명령어를 통해 권한을 바꿔줍니다.

chmod 400 {키 이름}

그후, 아래 명령어를 통해 ssh 연결하시면됩니다.

ssh -i {여기에 키를 드래그&드롭하시면 경로가 채워집니다} ubuntu@퍼블릭 ip or DNS

저의 경우에는 아래와 같습니다.
ssh -i /Users/lcm/Documents/authKeys/awscarrotbat410.pem ubuntu@13.124.20.55


EC2 Instance에 성공적으로 연결된 모습입니다.

3. Git 설치 및 Clone 하기

패키지 리스트를 업데이트
1. $ sudo apt-get install git 

깃 설치
2. $ sudo apt install git

설치된 git의 버전 확인
3. $ git --version

자신이 원하는 프로젝트를 깃으로부터 내려받습니다.
4. $ git clone [url 주소] 

4. java 설치 및 설정 파일 생성

4-0 주의 사항

프리티어 제공 메모리 용량은 1GB밖에 되지 않습니다.
부족한 램 떄문에, build 과정중 EC2 멈춤 현상이 나타날 수 있습니다.
따라서, 아래 부분의 포스터의 내용을 먼저 따라해주세요!

[EC2, Spring Boot] EC2에서 Gradle build시 테스트단계에서 멈추는 현상
https://velog.io/@carrotbat410/EC2-EC2-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EC%97%90%EC%84%9C-.gradlew-build%EC%8B%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%8B%A8%EA%B3%84%EC%97%90%EC%84%9C-%EB%A9%88%EC%B6%94%EB%8A%94-%ED%98%84%EC%83%81

4-1 build.gradle에서 본인의 java 버전을 확인합니다.


저는 17버전이네요!

4-2 jdk 설치

$ sudo apt update
$ sudo apt install openjdk-17-jdk // 숫자만 변경

위 명령어로 본인 버전에 맞는 jdk설치합니다.

4-3 application.properties or application.yml 파일 생성하기

1. cd /{본인 앱 경로}/src/main //application.properties 만들 경로로 이동

2. mkdir /resources //resources 폴더 생성

3. cd /resources

4. sudo -s 관리자 권한 획득

5. vi application.properties // vi 편집기 사용해 파일 만들기

5-1. i (i누르면 Insert 가능해짐)

5-2. 입력할 내용 복사 붙여넣기

6. esc후 :wq 엔터키 (저장하고 나가기)

4-3 서버 실행하기

cd 명령어를 통해 git clone한 프로젝트 경로로 들어간 뒤 아래 명령어를 실행합니다.

$ ./gradlew bootRun // 빌드파일없이 바로 서버 띄우는 명령어

서버가 정상적으로 동작한것을 확인한 후


인스턴스의 퍼블릭 IPv4 주소:포트번호로 접속해보면...


드디어 서버 배포가 끝났습니다.

마무리

👏👏기나긴 배포가 끝났다!.👏👏
인생 첫 제대로 된(Vercel배포는 가짜였어...) 배포라 진짜 우역곡절의 연속이였는데, 배포가 되서 너무 행복했다.
이 내용을 바탕으로 github actions을 이용한 CI/CD, Load Balancing, Docker를 이용해 무중단 배포를 목표로 나아갈 예정이다.

profile
Starting the day with "git pull," it's good for mental health.

0개의 댓글