Gom3rye

AWS의 Database 본문

현대 오토에버 클라우드 스쿨

AWS의 Database

Gom3rye 2025. 7. 23. 17:44
728x90
반응형

AWS의 Database

  1. 데이터 저장소 종류
  • RDBMS
    • 관계형 데이터베이스 서비스
    • Amazon Aurora, Amazon RDS, Amazon Redshift
    • 과거의 애플리케이션, ERP, CRM, 전자 상거래 등에 많이 이용된다.
  • Key-Value Database
    • 데이터를 구분하는 키와 값 쌍으로 저장하는 구조
    • Amazon Dynamo DB
    • 높은 트래픽의 웹 애플리케이션, 전자 상거래 시스템, 게임 애플리케이션에 활용
  • In-Memory DB
    • 데이터를 메모리에 저장하는 방식으로 속도가 빠르다.
    • Amazon의 ElasticCache, Amazon Memory DB for Redis
    • Caching, 세션 관리(클라이언트의 정보를 서버에 보관), 게임 순위표, 지리 공간 애플리케이션 등에 활용
  • Document DB
    • 하나의 데이터를 하나의 문서로 취급한다.
    • Amazon Document DB(Mongo DB와 호환)
    • 콘텐츠 관리, 사용자 프로필 ,카탈로그 등에 활용된다.
  • Wide Column
    • 데이터를 열 단위로 저장
    • 쿼리의 성능을 향상시키고 대량의 데이터를 효율적으로 처리하는데 중점을 둔 데이터베이스이다.
    • 데이터 분석 작업에 많이 상요된다.
    • Amazon Keyspaces를 제공한다.
    • 장비 관리, 플릿 관리 및 경로 최적화에 주로 활용된다.
  • Graph
    • 그래프 형태로 데이터를 저장하는 구조
    • 저장소에 직접 데이터 항목들의 관계를 저장한다.
    • Amazon Neptune
    • 부정 탐지, 소셜 네트워킹, 추천 엔진 등에 활용된다.
  • Time Series(시계열)
    • 하나 이상의 시간과 하나 이상의 값을 쌍으로 저장하는 시스템
    • Amazon Timestream 제공
    • 사물 인터넷, DevOps, 산업용 텔레메트리 등에 활용된다.
  • Ledger
    • 거래 원장을 저장하는 데이터베이스
    • Amazon Quantum Ledger Database(QLDB)
    • 공급망 관리, 은행 거래 등에 활용된다.
    • 블록체인의 개념을 도입한 것
    • 모든 변경 내역을 추적 가능하며 이를 검증할 수 있는 장점을 가진다.
    • update, delete가 없고 오로지 insert만 있다. (데이터가 변경되면 안되니까) → 저널이라는 개념(모든 변경 내역이 시간순으로 기록됨) 사용

Amazon RDS

  • 관계형 데이터베이스 6종류의 제품을 클라우드에 최적화된 상태로 제공한다.
  • Amazon Aurora, PostgreSQL(Aurora 버전 제공), MySQL(Aurora 버전 제공), MariaDB, Oracle, MS SQL Server, IBM DB2를 지원한다.
  • Aurora 버전은 기존 소스들을 AWS에 맞게 수정한 버전이다.
  • 데이터베이스 제공 방식은 EC2와 비슷한데 VPC 상에 인스턴스 형태로 구축하면 다양한 인스턴스 클래스를 사용할 수 있다.
  • EC2와 다른 점은 RDS는 Managed Service라서 업데이트 등의 관리가 AWS에 의해 자동으로 수행된다.
  • 백업과 같이 번거로운 관리 작업도 자동화되어 있어 관리자가 수행할 필요가 없다.
  • AWS Database Migration Server를 사용하면 기존 데이터베이스를 이전하거나 복제하는 것도 가능하다.

인스턴스 클래스

  • RDS는 EC2와 같이 인스턴스 형식으로 사용된다.
  • 클래스는 표준, 메모리 최적화, 버스트 성능의 3종류로 나누고 그 안에 여러 가지 인스턴스 클래스를 제공한다.
  • 표준은 범용적인 인스턴스 클래스이다.
  • 메모리 최적화는 메모리를 많이 사용하는 애플리케이션에 최적화되어 있다.
  • 버스트 성능은 CPU를 최대 100%까지 사용할 수 있는 구조이다.

요금

  • 기본적으로 EC2와 비슷하지만 DBMS에 따라 인스턴스 요금이 다르다.
  • DBMS는 무료와 유료가 있고 유료 DBMS는 AWS에서 라이선스 사용료가 부과되는데 라이선스 요금은 인스턴스 요금에 포함되어 있다.
  • 스토리지(확보하고 있는 용량) 요금 + 데이터베이스 인스턴스(가동한 시간당으로 부과되는데 다중 AZ로 구성하여 이중화를 구축하면 2배 + 라이선스 비용) 요금 + 백업 스토리지(스냅샷에 부과되는 요금으로 데이터베이스 스토리지 크기의 100% 넘는 경우만 발생) 요금 + 통신료(VPC

장점

  • Managed Service라서 AWS가 업데이트 등을 관리해주기 때문에 별도로 관리를 할 필요가 없다.
  • 간단하게 데이터베이스를 생성할 수 있으며 On-premise에서 데이터를 이전하기 쉽고 소프트웨어를 수정하지 않아도 이전이 가능하다.
  • EC2와 연동이 쉽고 같은 네트워크 내에 있다면 통신료도 무료이다.

단점

  • 사용자가 자유롭게 사용할 수 없다.

Aurora

  • MySQL이나 PostgreSQL과 호환할 수 있으며 AWS가 만든 관계형 데이터베이스
  • 요금이 조금 비싼 편이지만 견고하고 성능이 뛰어나다.
  • 호환성을 가지고 있기 때문에 일반적인 도구나 스냅샷을 사용해서 On-premise 환경의 MySQL 이나 PostgreSQL을 이전할 수 있고 SQL문도 그대로 사용할 수 있으며 코드, 애플리케이션, 드라이버 도구 등의 프로그램 및 소프트웨어를 수정할 필요가 없다.
  • AWS 용으로 설계가 되었기 때문에 일반적인 MySQL이나 PostgreSQL 데이터베이스에 비해 속도가 빠르고 Managed Service라서 안전하게 사용 가능하다.
  • AWS에서 MySQL이나 PostgreSQL을 사용하는 방법
    • EC2에 설치해서 사용
    • RDS를 사용
    • Amazon Aurora를 사용

MySQL(RDS) vs Aurora의 차이

  • MySQL의 경우는 자신의 EBS로 데이터를 쌓고 쌓은 데이터를 EBS로 미러링한 다음 Replication을 통해 Replica로 데이터를 보내고 Replica는 받은 데이터를 자신의 스토리지로 쌓는다.
  • Aurora의 경우는 4/6 Quorum을 사용해서 스토리지에 저장하며 Replica로 보내는 것은 frm 및 redo log이므로 network bandwidth 사용도 적으며 빠르게 변경 분을 저장하고 반영할 수 있는데 이는 인스턴스와 스토리지 영역을 나눴기 때문에 이와 같은 아키텍쳐를 그릴 수 있다.
  • 데이터의 변경이 많은 경우 효율적이다.

조작

  • EC2와 마찬가지로 데이터베이스 작업은 데이터베이스 준비와 데이터베이스 사용으로 나누어진다.
  • 데이터베이스 준비 작업은 데이터베이스를 만들거나 설정하는 등의 조작을 의미하는데 이러한 작업은 관리 콘솔에서 이루어진다.
  • 데이터베이스 사용 작업은 데이터를 입력, 삭제, 변경하는 조작을 의미하는데 이러한 작업은 데이터베이스 클라이언트나 소프트웨어를 통해서 이루어진다.

EC2에 MySQL을 설치하고 외부 접속 허용

  • 패키지 업데이트: sudo apt update
  • MySQL 서버 설치: sudo apt install -y mysql-server
  • 보안 설정: sudo mysql_secure_installation
    • 루트 계정 암호 설정이나 테스트 유저 삭제 등 보안 설정을 할 수 있다.
    • ynyy
  • 외부 접속 허용 설정: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf (외부 접속 허용을 위해서 설정 파일 수정)
    • bind-address 부분을 주석 처리하거나 bind-address를 0.0.0.0으로 설정
  • 설정 변경을 적용하기 위해서 mysql 재시작: sudo systemctl restart mysql
  • 외부에서 접속할 사용자를 생성
    • 관리자로 접속: sudo mysql -u root -p
    • 유저 생성: create user '유저이름'@'접속위치' identified by '비밀번호';
      • create user 'kyla'@'%' identified by '~~~~~~~~';
    • 권한 부여: GRANT ALL PRIVILEGES ON 데이터베이스이름.테이블이름 TO '유저이름'@'접속위치' WITH GRANT OPTION;
      • GRANT ALL PRIVILEGES ON . TO 'kyla'@'%' WITH GRANT OPTION;
    • 권한 설정 테이블을 업데이트: flush privileges;
  • 클라이언트 애플리케이션에서 EC2 Public IP를 이용해서 접속
    • 접속이 안되는 경우: 인바운드 규칙에서 3306번 포트가 열리지 않은 경우
    • 접속 프로그램의 경우는 allowPublicKeyRetrieval 설정 때문

RDS를 이용해서 MySQL Server 구축

  • 설정 항목
    • 생성 방식 선택: 옵션을 직접 설정할 것인지 아니면 자동으로 설정하도록 할 것인지 여부 확인
    • 엔진 옵션: 사용하고자 하는 데이터베이스 종류
    • 식별자와 관리자 계정과 비밀번호 설정
    • 인스턴스 구성에서 cpu 설정 (읽기를 많이 하면 cpu가 중요하지만 그렇지 않으면 별로 중요x)
    • 스토리지 설정
    • 기타 설정: 보안 그룹, 포트 등 설정
      • 생성이 되면 End Point를 이용해서 접근 가능
  • 설정 변경
    • RDS에서는 파라미터 그룹을 이용해서 설정을 변경할 수 있다.
    • 파라미터 그룹을 생성한 후 세부 내용을 수정한다.
    • 데이터베이스 인스턴스 수정을 눌러서 파라미터 그룹을 변경하면 된다.
  1. AWS의 File Storage

AWS를 이용한 백업

백업의 형태

  • On-premise 환경의 데이터를 AWS로 백업
  • AWS에 구축한 시스템을 백업

인프라 핵심 설계 사항

  • 로그 파일과 데이터베이스 파일은 장기간 보관
  • 비용을 절감하면서도 운영에 손이 많이 가지 않는 방식으로 진행한다.
  • 스토리지 게이트웨이를 이용한 자동 백업: 온프레미스 환경에 스토리지 게이트웨이를 사용해서 백업용 스토리지를 만들어서 S3에 자동 백업
  • S3와 글레이셔로 수명 주기 관리: 장기간 보관해야 하는 로그 파일의 경우 S3의 기능으로 백업하면서 온라인 보관 기간을 넘은 파일을 글레이셔로 아카이브
  • 용량의 대부분을 차지하는 이미지 파일과 데이터베이스는 S3에 백업: 스토리지 게이트웨이에 부과되는 종량제 요금을 줄이기 위해서 용량이 큰 데이터는 스크립트를 사용하여 S3에 백업

온프레미스 환경의 데이터 백업

방법

  • 오브젝트 스토리지 서비스인 S3를 명령행 인터페이스를 통해 이용하는 패턴
    • 백업 대상이 파일인 경우에 유효하며 간편하면서도 저렴하다.
    • S3는 범용적인 파일 저장 서비스로서 온라인 파일 서버처럼 사용할 수 있다.
    • S3는 서로 다른 가용 영역에 3중화 되어 있으면 99.99999999% 정도의 내구성을 가진다.(거의 사용 못하는 시간이 없다라고 보면 된다.)
  • 가상 서버인 EC2와 가상 스토리지인 EBS로 구축한 백업용 서버에 데이터를 동기화 시키는 패턴
    • 비용은 앞에 방법보다 많이 들지만 데이터베이스의 백업을 유연하게 실행할 수 있다.
    • 백업 대상 EC2에서 유틸리티를 실행시키면 DB를 온라인 백업할 수 있다.
  • 자동 백업 서비스인 AWS 스토리지 게이트웨이를 이용하는 패턴
    • 첫 번째와 두 번째 방법보다는 적은 노력으로 자동 백업 환경을 구축할 수 있으면서도 백업 관리의 일원화도 가능하다.
    • 스토리지 게이트웨이는 온프레미스 환경에 있는 서버에 스토리지 관련 전용 소프트웨어를 설치하여 AWS와 접속하는 서비스

S3

Simple Storage Service의 약자

  • 용량에 관계없이 파일을 저장할 수 있고 웹에서 파일에 접근할 수 있으며 안정성이 뛰어나고 가용성이 높으며 무제한 확장이 가능하다.
  • 대용량 파일 저장을 EC2와 EBS를 이용하면 많은 비용이 들고 노력이 요구되지만 S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있기 때문에 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 되고 비용이 저렴하다.
  • 정적 웹 서비스가 바로 가능하다.
  • 성능이 좋은 웹 서버로 구성되어 있어서 자동 횡적 확장(Auto Scaling)이나 부하 분산(Load Balancing)을 신경 쓰지 않아도 된다.
  • S3는 파일 업로드/다운로드를 모두 HTTP 프로토콜로 처리하기 때문에 별도의 클라이언트나 Active X 설치 없이 웹 브라우저에서 바로 가능하다.
  • 넷플릭스는 동영상 콘텐츠를 그리고 Airbnb는 10페타 바이트가 넘는 데이터를 S3에 보관한다.
  • 단점은 파일 저장 서비스이기 때문에 데이터베이스 백업용으로는 적당하지 않다.

기본 개념

  • 객체
    • 파일과 메타 데이터로 이루어진 데이터가 저장되는 기본 단위
    • 기본적으로 Key가 객체의 이름이고 값이 객체의 데이터
    • 객체 하나의 크기는 1Byte ~ 5TB
    • 메타데이터는 MIME 형식으로 확장자를 통해 자동 설정되고 사용자가 임의로 지정
  • Bucket
    • S3에서 생성할 수 있는 최상위 디렉토리
    • Bucket은 리전 별로 생성되며 계정 별로 100개까지 생성 가능하다.
    • Bucket 안에 객체가 저장되고 디렉토리 생성 가능하다.(객체 이름이 디렉터리 경로까지 포함)
    • 저장 가능한 객체의 개수 와 저장 가능한 용량은 무제한
    • 접속 제어 및 권한 관리가 가능하다.
    • http://examplebucket.s3.amazonaws.com/helloworld.jpg 처럼 URL로 접근 가능하다.
    • 내구성과 가용성
      • 99.9999999999% 내구성과 99.99%의 가용성
      • 내구성은 데이터가 유실되지 않는 확률을 의미하고 가용성은 언제나 정상적으로 사용 가능한 상태
    • 요금은 저장 용량과 데이터 전송량 그리고 HTTP 요청 개수로 측정한다.

버킷 생성

  • IAM 사용자 생성 및 권한 설정: S3를 외부에서 사용하고자 하는 경우 생성
    • 사용자 생성을 누르고 사용자 이름을 입력한 후 직접 정책 연결을 선택해서 S3 권한을 추가해 준다.
    • 사용자를 생성한 후 엑세스 키와 보안 엑세스 키를 생성해서 다운로드 해야 한다.
    • 사용자를 클릭하고 보안 자격 증명에서 엑세스 키 생성을 클릭한다.
    • 외부에서 실행되는 애플리케이션을 선택하고 생성한 후 csv 파일을 다운로드 한다.
  • 버킷 생성 이름은 영역에서 유일해야 한다.
    • Bucket 만들기 – ACL 설정(ACL 활성화됨 선택)
    • Bucket 만들기 – 퍼블릭 엑세스 차단 설정(차단 설정 해제)
  • 외부에서 버킷을 사용하기 위해서는 버킷에 권한 설정을 추가해야 한다.

✅ S3의 특징 요약

항목                             설명

이름 유일성 전 세계에서 유일해야 함
웹 호스팅 정적 웹사이트를 바로 서비스 가능
URL 접근 파일 업로드 후, 퍼블릭 설정하면 URL로 접근 가능
서버리스 EC2 없이 웹 호스팅 가능 (HTML/CSS/JS만으로 구성된 사이트)
  • 외부에서 Bucket을 사용할 수 있도록 [권한] – [버킷 정책] 에서 [편집]을 눌러서 Bucket 정책 추가
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicListGet",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:List*",
        "s3:Get*",
        "s3:Put*",
        "s3:Delete*"
      ],
      "Resource": [
        "arn:aws:s3:::Bucket이름",
        "arn:aws:s3:::Bucket이름/*"
      ]
    }
  ]
}
  • [권한] – [CORS] 에서 CORS 정책 추가
[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
    "AllowedOrigins": ["*"],
    "ExposeHeaders": ["Access-Control-Allow-Origin"]
  }
]
  • 파일 업로드 → 객체 URL 다운로드 받기
728x90
반응형

'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글

AWS- ECS  (1) 2025.07.28
AWS Container Service  (5) 2025.07.25
Kubernetes Service, AWS EC2  (4) 2025.07.22
AWS  (1) 2025.07.21
Jenkins  (0) 2025.07.18