2022. 5. 4. 16:58ㆍBackEnd(Java)/Spring Boot
먼저, 이 글은 SpringBoot를 사용하여 로컬 환경에서 개발하다가 나도 한번 요즘 핫한 AWS(Amazon Web Service)를 사용해서 서버 구축 및 배포해볼까?라는 생각이 조금이나마 있으신 분들이나 혹은 구글링 하면서 스스로 하시다가 막혀서 중간에 포기하신 분들 혹은 관심 있는 분들에게 AWS를 활용하여 쉽게 서버 구축 및 배포를 할 수 있도록 가이드를 제공할 예정입니다.
저의 개발환경은 아래와 같습니다
개발환경
- Spring Boot 2.6.3
- JPA(Hibernate)
- JAVA 11
- Mysql
- Spring Security
저희는 AWS EC2와 RDS를 사용하여 서버를 구축할 예정입니다.(참고 : https://pearlluck.tistory.com/83)
(쉽게 설명하자면 EC2는 서버라고 생각하시면 되고, RDS는 DB라고 생각하시면 됩니다.)
1편에서는 EC2 서버를 먼저 구축해보겠습니다.
그러면 시작해 볼까요?(레즈 기릿! 😁😁😁)
1. AWS 계정 생성하기
먼저, AWS를 사용하기 위해서는 계정부터 생성해야 합니다. 링크에서 무료 계정 만드는 법을 참고하세요!
AWS는 프리티어를 통하여 1년 동안 일부 무료(제한적임)로 사용할 수 있는 계정을 제공하고 있습니다.
2. EC2 인스턴스 생성하기
EC2(Elastic Compute Cloud)는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버로 보통 AWS에서 "리눅스 서버 혹은 윈도우 서버를 사용하면" EC2를 사용한다는 뜻입니다.
계정을 만든 후 아래의 AWS 홈페이지에서 오른쪽 상단 위에 있는 콘솔에 로그인을 클릭하여 로그인을 합니다.(회원 가입 시 등록한 email로 로그인하시면 됩니다)
로그인 후 아래 그림처럼 화면이 보이실 텐데 오른쪽 위의 *리전을 아시아 태평양(서울)으로 변경하셔야 합니다.
(리전이란 AWS의 서비스가 구동될 지역을 이야기합니다. AWS는 도시별로 클라우드 센터를 지어 해당 센터에서 구축된 가상 머신들을 제공하여 사용할 수 있도록 하였습니다.)
리전까지 설정을 완료하였다면 이제 EC2 인스턴스를 생성하기 위해 모든 서비스를 클릭하여 EC2 선택합니다.
EC2 클릭하시면 아래 그림처럼 화면이 보이실 텐데 저는 이미 EC2서버 하나를 실행 중이라 리소스 항목에 뜨고 있지만, 처음 생성하시는 분들은 없으실 겁니다. 무시하셔도 되고 여기서 중요한 것은 주황 색상을 가진 인스턴스 시작 버튼을 클릭합니다.
인스턴스 설정 화면이 뜨게 될 텐데 이름 및 태그 항목에서 추가 태그 추가를 클릭합니다.
(태그에는 웹 콘솔에서 표기될 태그인 Name 태그를 등록합니다. EC2의 이름을 설정한다고 이해하시면 됩니다.)
Name태그에 값 정보를 입력하시고 리소스 유형에 인스턴스, 볼륨이 설정되도록 선택합니다.(저는 그냥 TEST_SERVER라고 했습니다. 본인 서버를 나타낼 수 있는 값을 입력하시면 됩니다)
다음은 AMI(Amazon Machine Image)를 설정해야 하는데 저는 그냥 디폴트인 Amazon Linux 2 AMI를 사용하겠습니다.(AMI는 운영체제를 설치할 수 있게 구워 넣은 이미지로 생각하시면 됩니다.)
다음은 인스턴스 유형을 선택해야 합니다. 그러나 t2.micro만 프리티어 사용 가능이라고 표시돼있기 때문에 저희는 선택권이 없습니다 ㅠㅠ(다른 유형 선택하셔도 되지만 돈 나갑니다)
다음은 키 페어를 생성인데 굉장히 중요합니다!! 😲😲
인스턴스(EC2)에 접근하기 위해서는 pem키(비밀키)가 필요합니다. 인스턴스는 지정된 pem키와 매칭 되는 공개키를 가지고 있어, 해당 pem키 외에는 접근을 허용하지 않습니다. 일종의 마스터키이기 때문에 절대 유출되면 안 됩니다. 잘 관리하실 수 있는 곳에 안전하게 저장하세요.
아래 그림에 있는 새 키 페어 생성을 선택하여 키 페어 이름 입력 후 키 페어를 생성합니다. pem키를 생성하면 .pem으로 파일이 다운로드가 됩니다.(잘 보관하세요!)
다음은 네트워크 설정(방화벽 설정이라고 보시면 될것 같습니다)입니다. 저는 내 IP에서만 트래픽 허용 가능하도록 설정하였습니다. (PEM 키 + 특정 IP에서만 접근 가능하니 보안성에서 더 좋겠죠?)
마지막으로 스토리지 구성입니다. Default값은 8 GIB입니다. 프리티어는 30 GIB까지 가능하니 30으로 변경합니다.
위의 순서대로 설정 후 마지막으로 인스턴스 시작 버튼을 누르면 인스턴스 생성이 완료됩니다.
인스턴스 생성 완료 후 아래 그림처럼 인스턴스가 생성이 완료됩니다.
그러나 아직 끝난 게 아니죠~ 설정할게 조금 더 남았습니다..
인스턴스는 하나의 서버이기 때문에 IP가 존재합니다. 인스턴스 생성 시 항상 새 IP를 할당하는데, 인스턴스를 중지하고 다시 시작할 때도 새 IP가 할당됩니다.(IP 주소가 변경됨)
인스턴스의 IP주소는 변경되지 않게 고정 IP주소로 할당을 해야 합니다. 그 설정을 하러 가봅시다~~
왼쪽의 카테고리의 네트워크 및 보완에서 탄력적 IP(고정 IP)를 선택합니다. 그 이후 오른쪽 상단 위의 탄력적 IP 주소 할당을 클릭합니다.
네트워크 경계 그룹 설정 후 우측 젤 하단의 할당 버튼을 클릭합니다.
할당이 완료되면 할당된 IP 주소를 선택하고 작업 -> 탄력적 IP 주소 연결을 선택합니다.
탄력적 IP주소를 아까 생성한 EC2 인스턴스에 연결시킵니다. 인스턴스 및 프라이빗 IP 주소를 선택 후 연결 버튼을 클릭합니다.
인스턴스 목록 페이지로 이동 후 확인하시면 퍼블릭, 탄력적 IP가 모두 잘 연결되었는지 확인합니다.
방금 생성한 탄련적 IP는 생성하고 EC2 서버에 연결하지 않으면 비용이 발생합니다. 따라서, 탄련적 IP는 생성 후 무조건 EC2에 바로 연결해야 하며 만약 사용하지 않을 경우 탄련적 IP를 반드시 삭제해야 합니다!(삭제 안 하면 돈 나가요 ㅠ)
여기까지 진행했으면 EC2 인스턴스 생성 과정은 끝 낫습니다! ✌✌
다음 2편에서는 로컬 PC에서 EC2 서버에 접속하는 과정을 설명하겠습니다.
참고자료
- https://velog.io/@dohaeng0/AWS%EC%97%90-Spring-Boot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%B0%B0%ED%8F%AC-1-RDS-MySQL-%EC%84%B8%ED%8C%85
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- https://dev-coco.tistory.com/6
- https://pompitzz.github.io/blog/Java/awsEc2InstallJDK11.html#jdk-%E1%84%89%E1%85%A5%E1%86%AF%E1%84%8E%E1%85%B5
'BackEnd(Java) > Spring Boot' 카테고리의 다른 글
누구나 쉽게 AWS와 Spring Boot로 서버 구축&배포 해보기 - 3편 (0) | 2022.05.13 |
---|---|
누구나 쉽게 AWS와 Spring Boot로 서버 구축&배포 해보기 - 2편 (0) | 2022.05.07 |
JWT 토큰을 통한 로그인 기능 구현 (0) | 2022.04.26 |
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 오류 해결 (0) | 2022.04.18 |
@NotNull, @NotEmpty, @NotBlank 차이점 (0) | 2022.03.23 |