AWS EC2 & RDS
클라우드 컴퓨팅
- 인터넷을 통해 가상화된 컴퓨터의 리소스(서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등)를 제공하는 것
- 리소스가 필요할 때(on-demand) 리소스를 사용한 만큼의 돈을 지불하고(usage-metered) 사용 -> 유동적으로 사양을 늘려야 하는 상황에 적합
IaaS
Infrastructure as a Service
- IT 서비스 구성을 위한 인프라 제공
- 서버, 스토리지 및 네트워킹 하드웨어, 가상화(하이퍼바이저) 계층을 포함하여
애플리케이션과 서비스를 제공하는 데 필요한 모든 물리적 및 가상 핵심 인프라를 제공하고 호스팅
PaaS
Platform as a Service
- 애플리케이션 및 서비스를 구축할 수 있는 플랫폼 제공
- IaaS + 미들웨어, DBMS, 개발 툴, 비즈니스 인텔리전스 및 분석 툴 등 제공
Saas
Software as a Service
- 클라이언트 조직의 최종 사용자에게 제공되는 완전한 소프트웨어 솔루션
- 가장 포괄적인 형식의 클라우드 컴퓨팅 서비스
- 모든 애플리케이션은 제공업체가 관리하며, 웹 브라우저를 통해 제공
AWS
Amazon Web Services
전세계 점유율 1위 클라우드
AWS 과금 요소
- Compute: 독립 가상 서버 제공하는 경우가 대표적(ex. EC2)
- Storage: 각 스토리지 서비스의 사용량에 따라
- Data transfer: 트래픽을 구별하고, 서비스/구간을 분류하여 전송량에 비례해 과금
이외에도 다양한 과금 요소들이 존재
직접 경험한 것...
탄력적 IP
- 탄력적 IP 주소가 EC2 인스턴스에 연결되어 있고,
- 탄력적 IP 주소와 연결된 인스턴스가 실행 중이고,
- 인스턴스에 연결된 탄력적 IP 주소가 하나만 있고,
- 탄력적 IP 주소가 첨부된 네트워크 인터페이스에 연결되어 있을 때
탄력적 IP 주소에 대한 비용이 발생하지 않음
이중 하나라도 충족하지 않으면 시간당 요금이 부과됨
https://repost.aws/ko/knowledge-center/elastic-ip-charges
✅ 즉, 탄력적 IP를 생성한 후에 인스턴스에 연결하지 않거나, 이와 연결된 인스턴스를 중단하면 안 됨
실습 - RDS 접속 테스트
MySQL Workbench에서
EC2에서
sudo apt-get update
sudo apt-get install mysql-server
sudo mysql -u root -p
IntelliJ에서
jar로 스프링부트 배포하는 법
bootJar 생성
- IntelliJ에서 Gradle탭 > Task > build > bootJar 실행
- build > libs 안에 생성된 jar 파일을 서버에 올리기
포그라운드 실행
java -jar 파일이름.jar
백그라운드 실행
nohup java -jar 파일이름.jar &
문제
java -jar
명령어를 실행했을 때 콘솔에 아무것도 뜨지 않은 채로 무한 로딩
./gradlew build
명령어를 실행 시 아래와 같이 compile 단계에서 무한 로딩
인텔리제이에서는 프로젝트 실행에 문제가 없었는데, 서버에서는 실행되지 않음