이번 포스팅에서는 AWS EC2를 사용해 간단한 스프링 부트 API를 배포하고, 브라우저에서 결과를 확인하는 과정을 단계별로 안내합니다.
1. EC2 인스턴스 생성
1. AWS 접속
- AWS Management Console에 로그인합니다.
2. EC2 검색
- AWS 검색창에서 "EC2"를 입력하여 EC2 대시보드로 이동합니다.
3. 인스턴스 시작
- 인스턴스 시작 버튼을 클릭하고 아래와 같이 설정합니다
- 이름: 원하는 이름 설정 (예: my-ec2-instance).
- OS 선택: Ubuntu (최신 LTS 버전 선택).
- 인스턴스 유형: 프리티어를 위해 t2.micro 선택.
- 키 페어: 이번 프로젝트는 바로 삭제할 예정이므로 키 페어 없이 계속 진행 선택.
- 네트워크 설정: 보안 그룹 생성을 선택하고 HTTP(80), HTTPS(443), SSH(22) 포트를 열어줍니다.
- 설정 완료 후 인스턴스 시작 버튼을 클릭합니다.
2. 간단한 스프링 부트 프로젝트 생성
1. 스프링 부트 프로젝트 생성
- Spring Initializr에서 새로운 프로젝트를 생성합니다.
- Dependencies: Spring Web.
- Build Tool: Maven 또는 Gradle.
- 생성된 프로젝트에서 간단한 API를 작성합니다
@RestController
public class MainController {
@GetMapping("/test")
public String test() {
return "EC2 quick test";
}
}
2. GitHub에 프로젝트 업로드
- 생성된 프로젝트를 로컬에서 GitHub에 업로드합니다.
3. EC2 인스턴스 연결
1. EC2 인스턴스 연결
- AWS 관리 콘솔에서 생성된 인스턴스를 선택하고, 연결 버튼을 클릭합니다.
2. 필수 소프트웨어 설치
sudo apt update
sudo apt install openjdk-17-jdk git -y
- EC2 인스턴스에 접속한 뒤, Java와 Git을 설치합니다
3. GitHub에서 프로젝트 클론
- HTTPS 방식을 사용하는 경우, Personal Access Token을 생성하여 클론합니다:
- git clone <https://github.com/>/.git
4. 보안 그룹 설정: 포트 8080 열기
- 보안 그룹 설정 확인
- AWS EC2 대시보드에서 인스턴스를 선택하고 보안 그룹으로 이동합니다.
- 인바운드 규칙 편집을 클릭하고 아래와 같은 규칙을 추가합니다:
- Custom TCP Rule: 포트 8080.
- Source: 0.0.0.0/0 (모든 IP 허용).
5. 스프링 부트 애플리케이션 실행
- 프로젝트 빌드 및 실행
- 클론한 프로젝트 디렉토리로 이동한 뒤, Gradle을 사용해 애플리케이션을 실행합니다:
- cd <your-repository> ./gradlew bootRun
- 애플리케이션 테스트
- 브라우저에서 아래 URL로 접속하여 API 응답을 확인합니다:
- http://<EC2_PUBLIC_IP>:8080/test
6. 결과
이제 간단한 스프링 부트 API가 EC2에서 성공적으로 실행되었습니다.
여기까지 따라오셨다면 EC2 서버와 스프링 부트를 연동하는 기본적인 과정을 이해하셨을 겁니다.
🎉 완성된 URL
- 테스트 URL: http://<EC2_PUBLIC_IP>:8080/test
7. 학습하면 좋을 내용
- 탄력적 IP (Elastic IP)
- EC2 인스턴스의 공인 IP 주소를 고정하여 인스턴스 재시작 후에도 동일한 IP를 유지하는 방법.
- EC2 인스턴스 완전 삭제
- 사용하지 않는 EC2 인스턴스를 안전하게 종료하고, 스토리지와 연결된 리소스를 삭제하는 방법.
- GitHub SSH 연동 방법
- SSH 키를 사용해 GitHub에 인증하고, 더 간단하고 안전하게 프로젝트를 관리하는 방법.
- Docker를 사용한 배포
- Docker를 활용해 애플리케이션을 컨테이너화하고, EC2에서 손쉽게 배포하는 방법.
추가 참고사항
- HTTPS 설정: HTTPS를 적용하려면 Spring Boot에서 SSL 인증서를 설정해야 합니다.
- 보안: 실제 서비스에서는 보안 그룹의 0.0.0.0/0 설정을 사용하지 말고, 허용할 IP를 제한하는 것을 권장합니다.