AWS
AWS EC2
가상 서버 호스팅, 웹 애플리케이션 호스팅, 데이터베이스 호스팅을 지원
AWS RDS
관계형 데이터베이스를 쉽게 설정, 운영 및 확장할 수 있는 완전관리형 서비스
EC2 vs RDS
직접 요리하거나 전문 요리사를 고용하는 차이
-
EC2: 직접 요리하는 것
-
RDS: 요리사를 고용하는 것
-
EC2의 경우
- 서버를 세팅하고, 소프트웨어를 가져오고, 데이터베이스 관리도 해야함. 원하는 데이터베이스 소프트웨어와 구성을 선택할 수 있지만 시간과 노력이 필요하다. EC2를 사용할 시 모든 일을 스스로 해야함
-
RDS의 경우
- 알아서 다 해주기 때문에 서버 관리를 걱정할 필요가 없다. 그러나 비용이 더 비싸다. RDS와 EC2를 둘 다 사용하기도 한다. 이유는 서버 인스턴스와 DB 인스턴스를 분리하기 위해서이다.
웹 서버에서 DB를 운영하는 방법 두가지
💡 1. 서버 내에 DB를 설치하는 방식
- 초보자도 쉽게 관리가 가능하고, 비용도 저렴
- 그러나 고가용성 있는 서버 구축이 어려움
- 서버와 DB를 분리하는 방식 - RDS(DB)와 EC2(서버)를 연결하는 방식을 사용
- 서버와 DB를 분리해두기 때문에 하나의 서버가 고장나도 새로 추가하여 교체할 수가 있다.
- 서버에 DB가 설치 되어 있지 않기 때문에 DB의 정보가 손상될 일이 없다.
- 많은 IT 업체들이 클라우드 서비스로 전환하는 큰 이유이다. 접속자의 수에 따라 서버를 자유롭게 늘리고 줄일수 있고, 이 과정에서 DB 손상이 일어나지 않는다.
위의 설명을 보면 결국 서버와 DB를 분리하는 방식이 복잡하지만 더 좋다는 것을 알 수 있다.
그러므로 우리는 서버와 DB를 분리해서 사용할 것이다. (서버: AWS EC2, DB: AWS RDS)
AWS S3
데이터 저장(파일, 이미지, 비디오 등), 정적 웹 호스팅
-
파일, 데이터 및 다양한 유형의 미디어 등을 저장하고 관리하는 데 사용되는 웹 기반 스토리지 시스템이다.
-
저장하는 데이터 양에 대한 비용도 저렴하고, 저장할 수 있는 데이터 양도 무한에 가갑다.
-
동적 웹페이지와 정적 웹페이지가 섞여있을 때 동적 웹페이지만 EC2에서 서비스하고 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감한다.
-
사용 이유
- 파일, 이미지, 비디오 문서 등의 데이터를 저장하기 위한 공간을 제공한다. 이를 '버킷'이라고 한다.
- 확장 가능
- 정적 웹 페이지나 웹 사이트를 호스팅 할 수 있다. 이를 통해 비용을 절감하고, 빠르고 안정적인 웹 호스팅 환경을 구축 가능
- EC2 인스턴스를 사용하여 웹 애플리케이션을 호스팅하고, 이 애플리케이션에 필요한 정적 자원(이미지, CSS, JS 파일 등)을 AWS S3에 저장한다.
- 이렇게 하면 EC2 인스턴스의 리소스를 줄일 수 있으며, S3는 정적 파일을 신속하게 제공하고 확장성이 높다.
- 정적 웹사이트 호스팅을 하기 위해 S3를 사용하고, EC2 인스턴스를 사용하여 동적 요청을 처리한다. 이는 비용을 절감하고 확장성을 높인다.
AWS EKS(Elastic Kubernetes service)
- 쿠버네티스 컨트롤 플레인이나 작업자 노드를 설치 및 운영할 필요 없이 AWS에서 쿠버네티스를 손쉽게 실행할 수 있도록 지원하는 관리형 서비스
💡 쿠버네티스: 컨테이너화 된 어플리케이션을 관리할 수 있는 소프트웨어 중 하나
쿠버네티스의 대표적 특성
- 어플리케이션 환경의 통일: 개발 환경과 운영 환경이 동일한 환경(컨테이너)에서 애플리케이션의 구동을 보장함으로 어플리케이션의 환경의 통일성을 보장할 수 있다.
EKS를 사용하지 않고, 쿠버네티스를 직접 운영하게 되면?
인스턴스 정보/ 인스턴스의 어플리케이션 정보 / 컨테이너의 메타데이터나 정보들을 직접 운영 관리해야한다.
- 만약 마스터 노드에 문제가 생기면?
- 평소 마스터 노드나 Etcd를 백업하고 스냅샷을 찍고 관리하다가 문제 발생 시 정상적인 인스턴스로 교체하는 작업이 필요하다.
클러스터 확장시 마스터 노드 확장 또는 스케일 업/아웃의 구조를 직접 만들어야하는 작업들이 있다.