✏️ 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 보면서 스터디 한 내용을 정리하였습니다
https://www.yes24.com/product/goods/83849117
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 예스24
가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링
www.yes24.com
6장 AWS 서버 환경을 만들어보자 - AWS EC2
외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버가 필수
- 집에 PC를 구동시킨다
- 호스팅 서비스 (CAFE 24, 코리아 호스팅 등) 을 이용한다
- 클라우드 서비스(AWS, AZURE,GCP 등)을 이용한다
일반적으로 비용은 호스팅 서비스나 집 PC가 저렴하지만
특정 시간에만 트래픽이 몰리면?
→ 유동적으로 사양을 늘릴 수 있는 클라우드가 유리
💠클라우드란?
- 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공하는 것
💠클라우드의 형태
- Infrastructure as a Service(IaaS, 아이아스, 이에스)
- Platform as a Service (PaaS, 파스)
- Software as a Service(SaaS , 사스)
책에서 진행하는 모든 AWS 서비스는 IaaS를 사용한다
💜EC2 인스턴스 생성하기
EC2는 AWS에서 제공하는 성능, 용량 등을 유동적으로 사용할 수 있는 서버
AWS에서 리눅스 서버 혹은 윈도우 서버를 사요압니다라고 하면 EC2를 이야기하는 것

- 인스턴스를 생성하는 첫단계는 AMI를 선택하는 것
💠아마존 리눅스 AMI
- 아마존이 개발하고 있기 때문에 지원받기 쉽다
- AWS의 각종 서비스와의 상성이 좋다
- Amazon 독자적인 개발 리포지터리를 사용하고 있어 yum이 매우 빠르다

💠인스턴스 유형
- 프리티어로 표기된 t2.micro를 선택

💠스토리지 구성
- 서버의 용량을 얼마나 정할지 선택하는 단계
- 30GB 까지 프리티어로 가능
- 인스턴스로 접근하기 위해서는 Pem (비밀키)가 필요하다


AWS EC2 인스턴스는 기본적으로 동적 IP를 사용
따라서 EC2 인스턴스를 시작할 때마다 IP 주소가 변경될 수 있다. 이 경우, 매번 접속해야하는 ip가 변경되면 pc에서 접근할 때마다 ip 주소를 확인해야한다
→ 번거로우므로 인스턴스의 ip가 매번 변경되지 않고 고정 ip를 갖게한다
💜EIP 할당

AWS의 고정 IP를 Elastic IP(EIP, 탄력적 IP)라고 한다

주소 연결을 위해 생성한 EC2 이름과 IP를 선택하고 연결하면 된다
💜EC2 서버에 접속하기
윈도우이기 때문에 putty로 실습을 진행했다

Download PuTTY: latest release (0.82)

putty는 pem 키로 사용이 안되며 pem 키를 ppk 파일로 변환을 해야만 한다
puttygen 은 이 과정을 진행해 주는 클라이언트이다

save private key를 클릭하여 ppk 파일을 생성한다

putty를 실행하여 다음과 같이 작성한다
- HostName: username@public_ip 등록
- Port : ssh 접속 포트인 22등록
- Connection type : SSH 선택

아까 받은 ppk를 입력한다

Session 탭으로 이동해서 saved sessions에 현재 설정을 저장할 이름을 등록하고 저장한다
그 다음 open을 누르면 ssh 접속 알림이 뜨는데 accept를 누른다
💜아마존 리눅스 1 서버 생성 시 꼭 해야하는 설정
아마존 리눅스 1 서버를 처음 받았다면 몇 가지 설정들이 필요하다
이 설정들은 모두 자바 기반의 웹 애플리케이션 (톰캣과 스프링부트)가 작동해야하는 서버들에선 필수로 해야하는 설정이다
💠아마존 리눅스 1 서버 설정
- Java 8 설치
- 타임존 변경 → 기본 서버 시간은 미국 시간대이므로 한국 시간대로 변경해줘야한다
- 호스트네임 변경→ 현재 접속한 서버의 별명을 등록. 실무에서는 한 대의 서버가 아닌 수십 대의 서버가 작동되는 데 , IP 만으로 어떤 서버가 어떤 역할을 하는지 알 수 없다. 따라서 이를 구분하기 위해 보통 호스트 네임을 필수로 등록한다
- Java 8 설치
아마존 리눅스 1의 경우 기본 자바 버전은 7이다
따라서 java 8로 변경해준다
//저장소 업데이트 명령어
sudo yum update -y
//자바 8 설치 명령어
sudo yum install -y java-1.8.0-amazon-corretto-devel
//java 버전 변경
sudo /usr/sbin/alternatives --config java
//java 버전 확인
java -version

2. 타임존 변경
EC2 서버의 기본 타임존은 UTC
세계 표준 시간으로 한국의 시간대가 아니며 한국의 시간과는 9시간 차이가 나므로 수정해야함
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime
3. Hostname 변경
각 서버가 어느 서비스인지 표현하기 위해 호스트 네임 변경
sudo vim /etc/sysconfig/network
다음 명령어로 vim 편집기를 열어 i를 눌러 hostname을 적어준후, esc를 눌러 명령 모드로 이동하여 :w로 저장한다

변경한 후 다음 명령어로 서버를 재부팅한다
sudo reboot
그 다음 다음 명령어로 /etc/hosts 파일을 열어 다음과 같은 화면에 등록한 호스트네임을 등록한다
sudo vim /etc/hosts

curl 명령어로 등록한 호스트 네임을 확인한다
curl 등록된 호스트네임
잘 등록되었다면 다음과 같이 80 포트로 접근이 안된다는 에러가 발생한다
이는 아직 80포트로 실행된 서비스가 없음을 의미한다
→ 즉 curl 호스트 이름으로 실행은 잘 되었음을 의미

'⚙️ Back-end > SpringBoot' 카테고리의 다른 글
[SpringBoot] 단방향, 양방향 연관관계 정리 (0) | 2025.05.15 |
---|---|
[Spring Boot] 3주차 스터디 : 7장 AWS에 데이터베이스 환경을 만들어보자 - AWS RDS (0) | 2025.02.04 |
[Spring Boot] 3주차 스터디 : 5장 스프링 시큐리티와 OAuth 2.0으로 로그인 기능 구현하기 (1) | 2025.01.24 |
[Spring Boot] 2주차 스터디 : 4장 머스테치로 화면 구성하기 (0) | 2025.01.15 |
[Spring Boot] 2주차 스터디 : 3장 스프링 부트에서 JPA로 데이터 베이스를 다뤄보자 (1) | 2025.01.14 |