BE전문가 프로젝트

4. DB 계층 본문

AWS이론 자습

4. DB 계층

원호보고서 2022. 2. 18. 22:24

1. DB 계층 고려사항

고려사항
확장성 - 얼마나 많은 처리량이 필요한가
- 선택한 솔루션이 이후에 확장이 가능한가
총 스토리지 요구 사항 - 데이터베이스가 얼마나 커야 하는가
- 데이터의 규모가 어떻게 되는가(GB, TB, PB)
객체 크기 및 유형 - 단순 데이터 구조, 대용량 데이터 객체 또는 모두를 저장해야 하는가
내구성 - 어떤 수준의 데이터 내구성, 데이터 가용성 및 복구성이 필요한가
- 관련 규제 의무가 있는가

1.1 DB 유형

DB 옵션 기존 예
관계형 - Microsoft SQL Server
- Oracle Database
- MySQL
비 관계형 - MongoDB
- Cassandra
- Redis

관계형

- SQL 데이터베이스는 데이터를 행과 열로 저장함

- 행은 하나의 항목, 열은  데이터 요소를 분리하는 속성을 포함

- SQL DB 스키마는 고정되어있으며 열은 데이터 입력 전에 잠겨 있어야 함

- DB가 전체적으로 변경되고 오프라인인 경우, 스키마 수정 가능

관계형 DB를 선택해야 하는 경우
엄격한 스키마 규칙 및 데이터 품질 적용이 필요
DB가 과도한 읽기/쓰기 용량을 필요로 하지 않은 경우
최상의 성능을 필요로 하지 않는 관계형 DB의 경우 RDBMS가 자원 소비가 적은 최고의 선택이 될 수 있음

비관계형

- 키와 값으로 이루어져 있음

- NoSQL DB는 키 값 페어, 문서 및 그래프를 비롯한 다양한 스토리지 모델 중 하나를 사용하여 데이터를 저장함

- NoSQL스키마는 동적

- 각 행은 각 열에 대한 데이터를 포함할 필요가 없음

- DB의 데이터는 문서 수집에 집중하여 쿼리함

- 서버를 추가하는 방법으로 수평적으로 확장함

비관계형 DB를 선택해야 하는 경우
데이터베이스를 수평적으로 확장해야하는 경우
데이터가 기존 스키마에 적합하지않은 경우
읽기/쓰기 속도가 기존 SQL DB에서 경제적으로 지원할 수 있는 범위를 초과하는 경우
  관계형(SQL) 비 관계형(NoSQL)
데이터 스토리지 행 및 열 키 값, 문서 및 그래프
스키마 고정 동적
쿼리 SQL 기반 쿼리 문서 수집에 집중
확장성 수직적 수평적

비 관리형 데이터 베이스

- 일반적으로 사용자가 모든 보안 백업, DB 튜닝 및 복제를 책임짐

- 규정 준수 의무에 따라 애플리케이션에 대하여 자체 관리형 DB솔루션을 생성해야 할 수도 있음

관리형 데이터 베이스

시스템에 고가용성, 확장성, 백업을 제공함

- 반복적 업무 감소(OS설치, 서버 유지관리, 랙 앤 스택, 전력, 네트워크 등)

2 RDS 및 DynamoDB

관계형 데이터베이스 비관계형 데이터베이스
Amazon RDS Amazon DynamoDB
Amazon Redshift Amazon Elasticache
Amazon Aurora Amazon Neptune

2.1 Amazon Relational Database Service(RDS) for Oracle (관계형)

-  Active Data Guard로 읽기 전용 복제본을 지원함

- 사용시 Active Data Guard구성을 완벽하게 관리하고 기본 DB인스턴스와 해당 복제본 간에 보안 네트워크 연결을 유지 관리하여 기본 DB인스턴스와 동일한 AWS 리전에 복제본을 쉽게 생성 가능

관계형 
Amazon RDS
완전 관리형 관계형 데이터베이스 서비스
몇 분이면 새 인스턴스를 프로비저닝
몇 번의 마우스 클릭으로 수직으로 조정
관계형 Amazon RDS
적합 사례 보다 복잡한 데이터를 사용
데이터 세트를 결합하고 연결해야함
구문 규칙을 적용해야 함

- 데이터 손실 및 실수로 인한 삭제를 방지하기 위해 RDS는 데이터베이스 삭제 후 자동 백업 보존을 지원함

- 보존된 자동 백업은 삭제된 DB에 지정된 수명 지기 정책을 준수함

- MySQL, MariaDB, PostgreSQL, Oracle 및 Microsoft SQL Server 데이터베이스 엔진에서 사용 가능

 

Amazon RDS 및 Amazon Aurora

- Amazon Aurora는 MySQL 및 PostgreSQL과 호환되는 완전 관리형 관계형 데이터베이스 엔진임

 ㆍMySQL 처리량의 최대 5배

 ㆍPostgreSQL의 처리량의 최대 3배

 ㆍ3개의 가용 영역에 6개의 복제본

 ㆍ기존 애플리케이션을 최소한으로 변경

 ㆍAurora 글로벌 데이터베이스 지원

 

2.2 Amazon DynamoDB

비관계형
Amazon
DynamoDB
완전 관리형 비관계형 데이터베이스 서비스
이벤트 중심 프로그래밍(서버리스 컴퓨팅)
최상의 수평 확장기능
속도가 빠른 NoSQL 데이터베이스 서비스로, 간단하고 비용 효율적인 방법으로 데이터를 저장
DynamoDB의 처리량과 10밀리초 미만의 지연 시간은 게임, 광고, 모바일 등 다양한 애플리케이션에 적합
API와 사용이 쉬운 관리 콘솔을 통해 원할한 처리량과 스토리지 확장 기능을 제공하므로 사용자의 요구에 맞게 쉽게 확장 및 축소가 가능

- DynamoDB 테이블은 스키마가 고정되어 있지 않으며 각 항목마다 속성 수가 서로 다를 수 있음

- SSD(Solid Storage Drive)스토리지 자동 3방향 복제 기능으로 성능, 안정성 및 보안이 기본 제공됨

 

DynamoDB 트랜잭션

- DynamoDB 트랜잭션은 테이블 내, 외에서 여러 항목을 한번에 모두 수행하거나 아무것도 수행하지 않도록 조정하여 개발자 경험을 간소화 함

- DynamoDB 트랜잭션 읽기 및 쓰기 API를 사용하면 여러 항목을 추가, 업데이트 또는 삭제해야 하는 복잡한 비즈니스 워크플로를 한번에 모두 수행하거나 아무것도 수행하지 않도록 관리할 수 있음

- 단인 AWS 계정 및 리전 내에 있는 하나 이상의 테이블에서 ACID를 제공함

- 여러 항목에 대한 삽입, 삭제, 업데이트를 조정해야하는 애플리케이션에 사용할 수 있음

DynamoDB
적합한 애플리케이션 대용량의 단순 데이터를 보유
신속하고 간편하게 확장해야 함
복잡한 조인이 필요하지 않음
DanomoDB
사용 사례
순위표 및 점수 매기기
임시 데이터(온라인 카트)

DynamoDB일관성 옵션

- 읽기 일관성은 성공적인 쓰기 또는 데이터 항목의 업데이트가 동일한 항목에 대한 읽기 작업에 반영되는 방법과 시기를 의미함

Dynamo DB가 제공하는 논리에 따라 애플리케이션에서 사용자가 원하는 대로 각 읽기 요청의 일관성 특징을 지정할 수 있음

DynamoDB일관성 옵션
최종적
일관된 읽기
- DynamoDB테이블의 데이터를 읽을 때,응답은 최근 완료된 쓰기 작업의 결과를 반영하지 않을 수 있음
- 응답에는 변경 전 데이터가 일부 포함될 수 있음
- 잠시 후 읽기 요청을 반복하면 응답이 최신 데이터를 반환한다
- 별도로 지정하지 않을 시 설정됨
강력한
일관된 읽기
- 요청 시 Dynamo DB는 성공한 모든 이전 쓰기 작업의 업데이트를 반영하여 가장 최신 데이터로 응답을 반환함
- 네트워크 지연 또는 중단이 발생한 경우 사용이 어려울 수 있음

3 보안 제어 RDS 및 DynamoDB

Amazon RDS 보안제어

Amazon RDS 보안제어 고려사항
DB자체에 대한 액세스
(액세스 제어)
누가 가시성을 보유하고 데이터 베이스에 대한 작업을 실행할 수 있는가
ㆍRDS 내에서 DB인스턴스에 대한 액세스를 제어하기 위해 RDS컨텍스트에서만 사용하게 됨
ㆍ마스터 계정은 모든 DB권한으로 DV인스턴스에 로그인 할 수 있음
ㆍDB 인스턴스 생성시 각 DB인스턴스에 연결할 마스터 사용자 이름과 암호 지정 가능
ㆍDB 보안 그룹을 통해 RDS 인스턴스에 대한 액세스 제어 가능
ㆍ보안그룹은 EC2 보안스룹과 유사하지만 서로 호환X
ㆍDB보안그룹은 DB인스턴스에 대한 네트워크 액세스를 제어하는 방화벽처럼 작동함
ㆍDB 보안 그룹 기본값은 "모두 거부"
저장 시 암호화 저장 시 암호화되는 데이터에는 DB인스턴스에 대한 기본 스토리지, 자동 백업, 읽기 전용 복제본, 스냅샷이 포함됨
ㆍ저장된 RDS DB인스턴스 및 스냅샷을 암호화 할 수있음
ㆍ암호화가 활성화되면, 인스턴스의 자동 백업, 읽기 전용 복제본 및 스냅샷이 AES-256을 사용해 암호화됨, 그 다음 RDS는 DB 클라이언트 애플리케이션을 변경할 필요 없이 성능에 대한 영향을 최소화하여 해당데이터에 대한 액세스 및 복호화 인증을 처리함 
전송 중 암호화 전송 중 암호화는 SSL을 사용하여 수행할 수 있음
ㆍSSL을 사용하여 애플리케이션과 DB인스턴스 사이의 연결을 암호화할 수 있음
ㆍMySQL 또는 SQL Server의 경우 RDS는 SSL인증서를 생성하고 이 인증서를 인스턴스가 프로 비저닝되면DB 인스턴스에 설치함
ㆍMySQL의 경우 연결을 암호화하기 위해 --ssl_ca 파라미터를 사용해 MySQL클라이언트를 시작하고 퍼블릭 키를 참조함
ㆍOracle RDS는 DB인스턴스에 Oracle 기본 네트워크 암호화를 사용함
ㆍAmazon RDS에서의 SSL 지원은 애플리케이션과 DB인스턴스간의 연결을 암호화하는 데 사용됨
따라서 DB인스턴스 자체를 인증할 수는 없음 
이벤트 알림 Amazon RDS 인스턴스에서 발생할 수 있는 다양한 중요 이벤트에 대한 알림을 받을 수 있음
ㆍAmazon RDS는 구독 가능한 범주로 이벤트를 그룹화함

DynamoDB 보안제어

DynamoDB 보안제어 고려사항
정의 가능한
액세스 권한
데이터베이스의 테이블에서 항목, 심지어 속성까지 모든 것에 대해 액세스 권한을 부여할 수 있음
저장 시 암호화 완전 관리형 저장 암호화 기능을 제공함
SSL/TLS 기본적으로 DynamoDB와의 통신은 SSL/TLS 암호화를 사용하여 네트워크 트래픽을 보호하는 HTTPS 프로토콜을 사용함
고객 관리형 키 데이터의 보안을 암호화하고 관리하는 방법을 완벽하게 제어할 수 있음

4 데이터베이스로 데이터 마이그레이션

AWS Database Migration Service(AWS DMS)

- 대부분의 사용 및 오픈소스 데이터베이스와의 마이그레이션을 지원함

- EC2, RDS, S3 및 온프레미스의 데이터베이스 간 마이그레이션에 사용할 수 있음

ㆍEC2 또는 RDS 데이터베이스로부터 On-Premise로의 마이그레이션이 포함됨

ㆍ대상 및 원본 데이터베이스 중 하나가 EC2에 있어야함(두개의 온프레미스 데이터베이스 간 migration은 지원X)

- 대상 데이터베이스에서 사용할 수 있도록 원본 데이터의 형식을 자동으로 처리함

마이그레이션 옵션 일회성 마이그레이션
지속적 마이그레이션

AWS Snowball Edge 및 DMS를 사용

데이터 마이그레이션이 힘든 경우(AWS Snowball Edge권장)
ㆍ데이터베이스가 너무 큼
ㆍ연결이 너무 느림
ㆍ개인 정보 및 보안 문제
Snowball Edge 디바이스를 사용하여 하나 이상의 데이터베이스를 마이그레이션할 수 있음
ㆍ멀티 테라바이트 스토리지
ㆍ인터넷 또는 DX 대역폭을 사용하지 않음
외부에서 포트를 여는것이 아닌 데이터 센터 내부에서 직접 안전하고 견고한 디바이스를 물리적으로 연결할 수 있음
매우 큰 데이터베이스를 온프레미스에서 AWS클라우드로 이전 가능

AWS Schema Conversion Tool

사용자가 기존 데이터베이스 스키마를 한 데이터베이스 엔진에서 다른 데이터베이스 엔진으로 변환하도록 해주는 독립형 애플리케이션

원본 데이터베이스 대상 데이터베이스
Microsoft SQL Server Amazon Aurora, MySQL, PostgreSQL
MySQL PostgreSQL
Oracle Amazon Aurora, MySQL, PostgreSQL
Oracle 데이터 웨어하우스 Amazon Redshift
PostgreSQL Amazon Aurora, MySQL
Teradata Amazon Redshift

'AWS이론 자습' 카테고리의 다른 글

6. AWS 네트워킹(2)  (0) 2022.03.17
5. AWS 기반 네트워킹  (0) 2022.02.21
3. 컴퓨터 계층  (0) 2022.02.08
2. 간단한 아키텍처  (0) 2022.01.31
1. AWS  (0) 2022.01.30
Comments