배꼽파지 않도록 잘 개발해요

[엘리스sw] 실습으로 배우는 AWS - ③ AWS Storage, DB CDN 서비스 본문

교육/엘리스 SW 학습 내용

[엘리스sw] 실습으로 배우는 AWS - ③ AWS Storage, DB CDN 서비스

꼽파 2024. 5. 20. 09:04


◆ AWS RDS 

◆ RDS 기능 활용

◆ AWS S3 소개

◆ AWS CloudFront 소개


◆ AWS RDS 

관계형 모델과 SQL

  • 데이터베이스(Database) :  데이터를 저장하는 공간으로, 단순히 저장만 하는 것이 아니라 여러 개의 데이터를 조합하고 관리하면서 유의미한 정보를 추출할 수 있는 데이터의 집합
  • 데이터베이스 모델 : 데이터의 집합과 구조를 관리하는 방식 
  • 관계형 데이터베이스 모델(Relational Database Model) : 데이터를 테이블 형태로 표현함. 각 테이블은 행(Row)과 열(Column)로 구성되며, 행은 하나의 데이터 레코드(Record)를, 열은 데이터 속성(Attribute)을 나타냄.

  • 테이블(Table): 데이터를 행과 열의 형태로 저장하는 구조
  • 행(Row) 또는 튜플(Tuple): 하나의 데이터 레코드
  • 열(Column) 또는 속성(Attribute): 데이터의 개별 속성

 

대표적인 RDBMS : 관계형 데이터베이스 관리 시스템

  • MariaDB, MySQL, PostgreSQL, ORACLE, SQL Server
  • 기본적으로 관계형 모델을 사용하는 방식은 동일하지만 제공하는 기능들에 있어서 각각의 서비스, 차이점이 존재함.
  • 각 데이터베이스별로 종속성이 있어서, 서로 혼합하면서 사용할 수 없음.
  • RDS는 위 모든 DB엔진을 지원함.

 

AWS에서 RDBMS 구성하는 방식 2가지

 

Database on EC2 vs Amazon RDS

  • DB에 대한 모든 관리영역과 OS 부분까지 AWS가 관리해주기 때문에 사용자는 DB를 구축하는 시간을 절약하고 DB를 소비하는 역량에 집중해서 사용할 수 있음.

 

AWS RDS (Relational Database Service)

· AWS RDS는 AWS에서 제공하는 완전 관리형 RDBMS 서비스
· 자유롭게 확장 및 축소 가능
· 여러 AZ에 거친 고가용성 구성
· 백업 기능을 통해 안전하게 데이터 보호
· 읽기 전용 복제본(Read Replica) 기능을 통해 읽기 성능 확장

 

RDS 읽기 전용 복제본 (Read Replica)

· RDS에서는 읽기 성능의 향상과 가용성을 위해 읽기 전용 복제본 (Read Replica) 기능 제공
· Read Replica는 Master와 동일 AZ 혹은 다른 AZ 내에 존재
· Read Replica에서는 읽기 작업만 수행하며, 쓰기 작업은 Master에서만 일어남.
· Master에 있는 데이터 정보를 주기적으로 Read Replica에 복제 (비동기식 복제 방식)

 

RDS 구성 방식


◆ RDS 기능 활용

 

RDS Auto Scaling

• RDS 오토스케일링은 애플리케이션이 확장함에 따라 데이터베이스에서 용량이 추가적으로 필요할 경우, 자동으로 확장해주는 기능
• 최대 16TB까지 확장 가능함.
• 오토 스케일링 조건
- 사용 가능한 여유 공간이 할당된 스토리지의 10% 미만일 때
- 용량이 부족한 스토리지 상태가 5분 이상 지속될 때
- 마지막 스토리지 수정 이후 최소 6시간이 경과했을 때

 

RDS 가용성

• AZ에서 장애가 발생 시에 데이터를 보호하는 RDS 가용성 기능 : Master-Standby
• Master와 Standby는 동기식 복제
• AZ 혹은 Master 자체에 장애가 발생했을 경우, 자동으로 Standby로 Master 승격을 진행함.
• Standby는 Read Replica로 구성 가능함.

 

RDS Backup과 Snapshot

• 백업 : 백업은 데이터 전체가 소실되거나, 특정 시점으로 돌아갈 때 복구하는 용도로 사용
ex) Mulfi AZ 가용성 구성
• 자동 백업과 수동 스냅샷(영구적인 목적으로 데이터 보관 목적) 기능
• 자동 스냅샷의 경우, 백업이 저장된 어느 시점에서나 복구 가능 (최소 5분 전까지)

 

AWS Aurora란?

•  AWS Aurora : AWS에서 클라우드 환경에서 적합하도록 커스터마이징 된 관리형 데이터베이스 서비스
•  일반 MySQL보다 5배, PostgreSQL보다 3배 더 빠름.
•  지원하는 데이터베이스 : MySQL, PostgreSQL

 

AWS Aurora 특징

•  데이터 정합성 속도 ↓ → 최대 15개의 Read replica 지원 : RDS 보다 더 빠른 읽기 성능
•  3개의 AZ에 걸쳐 데이터를 분산해서 저장
•  Master에 장애가 발생해도 자동으로 Failover (페일오버)

 

AWS RDS vs Aurora 비교

  • Read Replica의 개수차이
    두 DB 서비스가 구조적인 차이로 RDS는 최대 5개의 Read Replica 생성, 오로라는 최대 15개의 Read Relica 생성 가능함.
    → 오로라가 성능이 조금 더 높음.
  • 데이터를 저장하는 방식
    RDS는 AZ 내에서 볼륨 단위로 데이터를 적재,
    오로라는 최초로 데이터를 저장하는 단계부터 AZ에 걸쳐서 분산하는 방식으로 데이터를 적재함.
  • 고가용성
    RDS에서도 고가용성을 구성할 수 있지만 오로라에서 좀 더 쉽고 효율적인 고가용성아 반영됨.

◆ AWS S3 소개

AWS S3 (Simple Storage Service)

• AWS S3는 데이터 저장, 수집, 분석을 하기 위한 대표적인 오브젝트 스토리지
• EBS나 EFS와 달리, EC2 인스턴스에 마운트하는 방식이 아닌, REST API로 데이터 접근
  (GET, PUT, POST, PATCH, DELETE)

• S3 용량을 무제한으로 확장 가능
• 99.9999999%의 내구성 제공
• 데이터를 저장하기 위해 객체(Object)라는 개념 사용
• 객체는 버킷(Bucket)이라는 리소스에 저장

참고)
EBS, EFS는 EC2에 마운트시켜서 자신이 가진 볼륨처럼 보이는 스토리지

- Block Storage : EBS
- File Storage : EFS

 

S3 Object와 bucket

  S3 Object : 데이터를 담기 위한 단위
- 각각의 Object는 Key를 가짐 (Key-Value 구조)
- Object의 최대크기는 5TB (하나의 파일 (Object)가 5TB를 넘어설 수 없음)


•  S3 Bucket : Bucket은 Object를 담기 위한 데이터 보관 단위
- Bucket은 Region 단위로 배포 가능

 

S3 저장소 유형

  • 데이터를 보관하고 사용하는데 범용성이 굉장히 좋음.
  • 다만 데이터 크기에 따라 요금을 부과하거나 얼마나 데이터를 호출했는지에 따라 요금을 부과함.

  • S3 Standard : 데이터를 호출하거나 검색하는 비용은 가장 낮음. 자주 액세스하는 데이터타입을 저장하기 좋은 클래스임.
  • S3 Glacier : 데이터 아카이빙, 장기간 백업 등의 목적으로 사용됨.
  • 단, 3개월 이전에 저장된 데이터의 삭제를 시도하려는 경우, 조기 삭제 요금이 부과될 수 있음.
  • S3 Intelligent Tiering : 데이터를 액세스하는 패턴에 따라 데이터를 티어링(단계를 나눔).

 

S3 가용성 : 리전별 데이터 복제

  • 리전 단위로 존재하는 S3 서비스는 리전 간 데이터 복제 기능을 제공함.
  • S3 데이터를 저장하는 경우, 서로 다른 리전간 복제 또한 지원함.
  • 국내 뿐만 아니라 해외 사용자 대상으로 서비스 운영할 때 유용함. 해외 사용자가 국내에 존재하는 서비스에 접근하려고 할 때, 지연시간이 다소 오래걸렸다고 하면, 해외 사용자들과 근접한 Region을 기준으로 데이터를 복제해서 서비스를 제공한다면 낮은 지연시간으로 서비스를 제공할 수 있음.

 

스토리지 종류 비교

S3 (Simple Storage Service) EBS (Elastic Block Store) EFS (Elastic File System)
· Rest API 통신 기반
· 용량의 무제한 확장이 가능함.
· Region 단위로 배포되면서 분산 저장함.
· 스토리지 중 가장 낮은 지연시간, 가장 빠른 성능을 가짐.
· AZ 단위로 배포할 수 있음.
· 여러 개의 볼륨을 하나의 단위로 마운트 시켜서 사용할 수 있음.
· AZ 외부의 네트워크 방식
· 하나의 볼륨에 여러 개의 인스턴스를 마운트해서 인스턴스 간 파일 공유가 가능함.
· 빅데이터분석, 파일 공유 목적으로 사용

 

AWS S3 사용 사례


◆ AWS CloudFront 소개

 

AWS CloudFront란?

먼 지역 혹은 다른 나라에서 웹 서버를 접근하기에 너무 오랜 시간이 걸리는 문제가 발생함.

자주 쓰이는 데이터를 가까운 지역 (Edge Location)에 적재하여 접근 (=CloudFront)

· AWS CLoudFront는 전 세계에 데이터나, 동영상, 애플리케이션을 빠르고 안전하게 전송하는 콘텐츠 전송 네트워크 (CDN) 서비스
· 엣지 로케이션에는 자주 쓰이는 데이터(휘발성 데이터를 가짐)를 '캐싱'하여 읽기 성능을 극대화
· 전 세계적으로 215개 이상의 엣지 로케이션 위치 
· 원본 데이터가 적재되어 있는 곳을 'Origin'이라 부름.

 

CloudFront - Origin

  • Object 대상이 될 수 있는 서비스는 앞서 Object 스토리지의 서비스인 S3, EC2, ELB가 HTTP 통신을 통해서 Custom Origin으로 선택될 수 있음.

 

CloudFront 동작 방식

  • 미국 거주 사용자가 엘리스 아카데미 사이트를 접속하려고 함.
    rabbit.png 이미지 파일을 포함하고 있는 웹사이트
    해당 이미지를 불러오기 위해서 파일을 가져와야 하는데, 만약 CloudFront를 사용하는 경우에는 해당 주소로 직접 접속하는 것이 아니라, 가까운 Edge Location에 요청을 보냄. 이때 미국에 있는 Edge Location에 요청을 보냄.
    요청을 받은 Edge Location에서는 먼저 요청온 데이터가 로컬 캐시에 저장되어 있는지 확인을 함. 만약 데이터가 없다면 이때 다시 orgin으로 데이터를 요청함.
  • 한번 파일이 캐싱된 이후에는 다른 사용자가 동일한 웹페이지를 열 때에도 저장된 캐시로부터 Orgin을 거치지 않고도 Edge Location으로부터 즉각적으로 요청을 전달 받음. 
  • 만약 캐시를 수용하는 용량이 초과할 경우에는 가장 접근이 적은 캐시부터 대체하여 새로운 데이터를 적재함.

 

동적 데이터와 정적 데이터

  • 정적 콘텐츠들은 어느 사용자가 요청을 하든, 동일하게 결과값을 보여줌.
    - 이런 정적 데이터들은 Edge에 캐싱을 해서 반환할 수 있는 데이터로 적합한 형태임.
  • 동적 콘텐츠들은 요청하는 방식에 따라 다른 결과값을 보여주는 콘텐츠를 의미함.
    - '나의 강의실'에 들어가면 보이는 강의목록
    - DB와 연동되어 사용되는 언어들 (JSP, php)
    - 새로운 요청 시에 유효하지 않을 수 있어서 origin으로 다시 요청을 받아야 함.

 

CloudFront + S3 + ALB

  • CloudFront의 캐싱데이터를 결정할 때는 이와 같이 정적인 콘텐츠와 동적인 콘텐츠의 여부로 캐싱에 대한 속성을 선택해야함. 이렇게 데이터의 성격에 따라 종류를 분리했다면 앞서 배웠던 서비스를 통해서 활용해보자.
  • CloudFront에서는 요청하는 데이터타입에 따라서 어느 Origin으로부터 가져올지 설정하는 기능을 가지고 있음. 이렇게 경로에 대한 패턴 설정을 하는 방법Behavior라고 하는데, 이 Behavior을 통해서 정적인 콘텐츠에 대한 origin, 동적인 콘텐츠에 대한 origin을 분리하여 데이터를 가져오고 있음. 
정적 콘텐츠 정적인 콘텐츠로 적합한 origin 설정은 S3 스토리지 서비스임. 
정적인 콘텐츠를 적재하기 쉽고, 전 세계적으로 데이터를 적재할 수 있는 장점을 가짐.

CloudFront에서 origin에 대한 설정으로 .png와 같이 이미지 파일에 대해서는 S3를 origin으로 설정하는 것이 좋은 방법임.
동적 콘텐츠 동적 콘텐츠를 처리하기 위해서는 컴퓨팅 서비스가 위치한 origin으로 라우팅을 해야하는데, 앞서 말한 것처럼 동적 콘텐츠는 Edge에 데이터를 캐시해놓지는 않지만 CloudFront와 ALB, EC2를 origin으로 설정할 때 AWS 내부 네트워크 망을 이용하기 때문에 사용자가 직접적으로 origin에 접속하는 것보다 성능적으로 유리함.

 

요약

  • CloudFront는 콘텐츠를 빠르고 안전하게 제공하는 CDN(네트워크 전송 서비스)이다.
  • 엣지 로케이션에서 Origin의 콘텐츠를 적재하여 네트워크 지연시간을 줄일 수 있다.
  • 정적 콘텐츠의 경우, S3과 연계, 동적 콘텐츠는 EC2 + ALB 콘텐츠를 가져와 성능을 향상시킬 수 있다.
728x90