일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 딥러닝
- GPT-4
- 분류
- LG
- gpt
- LG Aimers
- LLM
- regression
- AI
- PCA
- 티스토리챌린지
- 회귀
- Machine Learning
- supervised learning
- LG Aimers 4th
- ChatGPT
- 해커톤
- deep learning
- OpenAI
- 머신러닝
- 지도학습
- Classification
- 오블완
- Today
- Total
SYDev
[핸즈온 AWS] Chapter 6. AWS 데이터베이스 서비스 본문
6.1. 데이터베이스와 DBMS
6.1.1. 데이터와 데이터베이스
- Data: 어떤 이론을 세우는 데 기초가 되는 자료로, 문자와 숫자, 그림, 영상 등의 형태로 된 단위
- Information: 데이터를 특정 목적에 따라 가공, 이론을 세워 의미와 가치를 부여한 결과
- Database: 데이터를 하나로 모아 두는 것
- DBMS(DataBase Management System): 데이터베이스를 관리하는 시스템 -> 데이터에 대해 사용자의 논리적 명령을 해석, 필요한 데이터를 찾아 주는 시스템
6.1.2. 데이터베이스 모델 유형
데이터베이스는 구조, 운영, 저장 방식에 따라 계층형, 네트워크형, 관계형, 객체 지향형 모델 유형으로 구분
Hierarchical Databse Model
- tree 구조 기반, 데이터 - 1:N 상하 종속 구조
- 데이터에 빠르게 접근 가능
- 구조 변경에 대한 유연성 부족
Network Database Model
- Hierarchical Database의 정형화된 구조를 해결하기 위해 1:N 뿐만 아니라 1:1, N:N 형태의 구조도 가짐
- 하위 개체는 다수의 상위 개체를 가질 수 있어 형태가 좀 더 자유로움
- 다양한 개체 간 연결에 따라 복잡성 증가 -> DB 전반의 구조 이해 어려움
Relational Database Model
- 논리적 관계를 초점으로 특정 개체 정보를 이용하여 column과 row로 된 table이라는 최소 단위로 구성
- Hierarchical, Network DB: 데이터의 변화에 따라 모든 데이터 변경, Relational DB: 데이터 변화 쉽게 적용
- system resource를 많이 차지해서 상대적으로 느림
- Relational DBMS -> 현재 가장 많이 사용하는 DB Model
- SQL(Structured Query Language)을 사용하여 DB 읽고 쓰고 해석
Object-oriented Database Model
- 객체(object)라는 형태의 최소 단위로 표현
- 객체 집합을 정의, 연결 구조 확립 -> 복잡한 객체 구조 표현, 사용자 정의 데이터, 멀티미디어 등 비정형 데이터도 지원
- 보편적으로 사용하는 DB의 호환성 문제와 복잡성에 따른 문제
- 특수한 전문 분야가 아니면 잘 쓰지 않음
6.1.3. Relational DBMS의 SQL 언어
SQL DDL(Data Definition Language)
- 데이터의 형식과 구조를 정의하는 기능
- CREATE: 테이블 구성, 속성에 대한 제약을 정의하는 명령어
- ALTER: 생성된 테이블 속성을 정의하고 변경하는 명령어
- DROP: 생성된 테이블을 삭제하는 명령어
SQL DML(Data Manipulation Language)
- 데이터 조작어 -> 데이터 검색, 삽입, 삭제 등을 처리하는 인터페이스 제공하는 기능
- SELECT: 테이블에 있는 정보를 가져오는 명령어
- INSERT: 테이블에 새로운 데이터를 삽입하는 명령어
- UPDATE: 테이블에 있는 데이터를 수정하는 명령어
- DELETE: 테이블에 있는 기존 데이터를 삭제하는 명령어
SQL DCL(Data Control Language)
- 데이터 무결성 유지와 접근 권한 및 다수의 사용자 데이터베이스에 정확하게 접근하는 기능
- GRANT: 테이블에 대한 권한을 허용하는 명령어
- DENY: 테이블에 대한 권한을 차단하는 명령어
- REVOKE: 테이블에 대한 권한을 회수하는 명령어
6.2. AWS 데이터베이스 서비스
6.2.1. Amazon RDS
- Amazon RDS(Relational Database Service): 클라우드 환경에서 데이터베이스를 간편하게 설정하고 운영할 수 있는 서비스
- 원하는 성능 요구에 따라 DB Instance 유형을 선택할 수 있음 -> Amazon Aurora, PostgreSQL, MariaDB, Oracle Database, SQL Server
- RDB 엔진을 사용 -> SQL 언어 기반으로 DB 제어 가능
- 사용 편의성이 높음
- 모니터링 지표와 이벤트 알람을 이용 -> 높은 관리 효율성
- 상대적으로 저렴한 비용
- 간편한 복제 기능(Multi-AZ, Read Replica) 이용 -> 워크로드의 가용성과 확장성 확보
6.2.2. Amazon RDS 데이터 복제
Multi-AZ 복제 방식
- 기본적으로 active-standby 형태로 동작 -> Primary DB가 active 상태, 보조 Standby Replica가 standby 상태
- Primary DB에 문제 발생 -> Standby Replica를 Primary DB로 승격
- Multi-AZ 복제 방식은 데이터 정합성(데이터가 서로 일관되게 일치) 유지가 가장 중요 -> 동기식 복제(synchronous replica)로 다른 availability zone에 있는 DB를 데이터와 동기화
- 동기식 복제(synchronous replica): 데이터에 변화가 일어나면 원본 데이터를 복제해서 전달하여 동기화하는 것
동기식: 팔로워가 모두 복제가 다 될때까지 리더가 기다려줌
- 리더와 일관성 있게 최신 데이터 복사본을 가지는 것을 보장
- But, 팔로워 중 하나 고장나면 데이터베이스 시스템 전체가 고장
비동기식: 리더는 변경사항만 팔로워에게 전달하고 자기 할일 함
- 동기식처럼 하나 고장나면 시스템 전체 고장나는 것을 막을 수 있다
- But, 최신 데이터 복사본 가지는 것을 보장 못함
출처: https://velog.io/@matteblack9/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A4%91%EC%8B%AC-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%84%A4%EA%B3%84-%EC%9A%94%EC%95%BD-05.-%EB%B3%B5%EC%A0%9C
Read Replica 복제 방식
- 원본 데이터를 Primary DB에 두고, 읽기 전용의 복제 데이터를 Read Replica DB에 생성하여 유지
- Read Replica DB는 확장이 가능, 데이터 읽기 처리 속도를 높일 수 있음
- Amazon RDS는 최소 다섯 개의 Read Replica DB를 복제 가능 -> 다른 Region까지 Read Replica DB를 가질 수 있음
6.2.3. Amazon Aurora
- AWS 자체 개발 Cloud Database Engine
- Enterprise 수준의 Relational Database Engine
- 오픈 소스 기반 -> 다른 관계형 데이터베이스와 호환성 우수, 비용 효율이 높음
- Amazon RDS에서 관리하며 프로비저닝, 패치, 백업, 복원, 장애 복구 등 작업을 수행
Amazon Aurora 복제 방식
- 다른 RDB보다 내결함성이 우수
- MySQL: 데이터베이스 인스턴스에 EBS 스토리지가 연결되어 서로 다른 가용영역으로 동기식 복제
- Amazon Aurora: 공유 스토리지를 통해 최소 3개의 가용 영역에서 두 개씩 총 여섯 개의 복제 데이터를 가지고 있어 더욱 안정적으로 서비스
6.2.4. Amazon DynamoDB
- 비관계형 데이터베이스 -> 데이터가 서로 연결되지 않는 개별 형태로 저장 -> 복잡하고 구조화되지 않은 데이터 유형에 적합한 DB
- key-value Database
- SQL문 사용 X -> NoSQL 데이터베이스라고 함
- key: 데이터의 고유한 식별자
- value: 유형의 제한이 없어 단순한 entity, 복잡한 집합체 -> 무엇이든 가능한 비정형 데이터 입력 가능
- 데이터베이스 구조가 단순 -> 빠른 처리 가능 -> 대규모 환경에서도 일관되게 10ms 미만의 처리 성능
- 별도 서버 구축 X -> Serverless 동작 -> 서버에 대한 프로비저닝, 패치, 소프트웨어 설치가 필요 X
- 용량에 따라 테이블을 자동으로 확장 및 축소 -> 관리 편의성 높음
6.2.5. Amazon ElastiCache
- Amazon ElastiCache: In-memory Databse로, 데이터를 메모리에 저장하는 형태로 동작
- 데이터를 메모리에 저장 -> 데이터를 빠르게 처리할 수 있다는 장점
- 데이터 양이 많아지면 데이터 처리가 느려질 수 있음 -> 대용량 데이터에는 비적합 -> 데이터를 빠르게, 자주 접근해야 할 때 사용
- Memcached 방식과 Redis 방식으로 구분됨
Amazon ElastiCache for Memcached
- 보편적으로 사용하는 메모리 객체 캐싱 시스템
- Amazon ElalstCache for Memcached는 Memcached와 호환하여 자주 접근할 데이터를 메모리에 놓고 빠르게 처리
Amazon ElastiCache for Redis
- 데이터베이스, 캐시, 메시지 브로커 및 대기열 용도로 사용
- 오픈 소스인 Redis 기반으로 구축 -> Redis API와 호환하여 개방형 Redis 데이터 형식으로 저장
- 실시간 application을 지원할 수 있도록 1ms 미만의 지연 -> 빠른 데이터 처리
6.3. 웹 서버와 Amazon RDS 연동하기
실습 목표: Amazon RDS 배포 및 웹 서버 연동 + 고가용성 확보를 위한 Multi-AZ 기능
& 성능 확장을 위한 Read Replica 기능 학습
- 실습을 위한 기본 인프라를 ClooudFormation으로 배포
- Amazon RDS를 생성하고 웹 서버와 연동
- Amazon RDS의 고가용성을 위한 Multi-AZ를 구성하고 동작을 확인
- Amazon RDS의 성능 확장을 위한 Read Replica를 구성하고 동작을 확인
- 실습을 위해 생성된 자원을 모두 삭제
6.3.1. CloudFormation으로 기본 인프라 배포
-> CLoudFormation으로 위 인프라 구성
6.3.2. Amazon RDS를 생성하고 웹 서버와 연동
-> 정상적으로 생성
-> 웹 서버에 접속해서 각각의 RDS 엔드포인트를 변수로 선언
mysql -h $RDS1 -uroot -pqwe12345
- -h: 데이터베이스 ㅈ소
- -u: 사용자 ID
- -p: 암호
-> RDS2 데이터베이스와 연동하기 위해 CH6-WebSrv의 index.php 수정
-> ec2 인스턴스에 접속해서 데이터 추가
-> RDS2와 연결하여 데이터베이스 확인
RDS2가 중지될 경우 동작 확인
현재 RDS2는 multi-AZ 기능 동작 X (단일 데이터베이스로 동작) -> 장애에 대한 failover(장애 극복 기능) 수행 불가능
-> DB를 일시중지하면 더이상 테이블 정보를 가져오지 못함
6.3.3. Amazon RDS의 고가용성을 위한 Multi-AZ 동작 확인
-> primary DB와 standby Replica는 서로 다른 가용영역에 위치
-> failover 수행 가능
-> 재부팅 시에 primary DB 중지 -> 장애 조치를 위해 Standby Replica를 Primary DB로 승격시켜 자동으로 failover 수행
-> IP 주소가 10.6.3.64에서 10.6.2.140으로 변경된 것을 확인 가능
6.3.4. Amazon RDS의 성능을 확장하는 Read Replica 동작 확인
- 데이터 처리 성능 확장을 위한 Read Replica(Multi-AZ 같은 고가용성 서비스가 아님)
- 읽기 전용 DB인 Read Replica DB를 복제하여 데이터 처리 성능을 높이는 기능
-> Read Replica 설정 조건 중에 자동 백업 기능이 활성화 상태여야 한다는 조건이 있음 -> RDS2는 백업 보존 기간이 '0일'(자동 백업을 비활성화 한다는 의미) -> Read Replica 설정 불가능
-> 읽기 전용이기 때문에 데이터 추가 불가능
참고자료
- "한 권으로 배우는 도커 & 쿠버네티스", 장철원, 한빛미디어, 2024.04.29
'KHUDA 6th > Study' 카테고리의 다른 글
[핸즈온 AWS] Chapter 9. AWS 오토 스케일링 서비스 (0) | 2024.08.21 |
---|---|
[Docker & Kubernetes] 5주차 정리 (1) - Chapter 9. 쿠버네티스 기초 (0) | 2024.08.20 |
[Docker & Kubernetes] 4주차 정리 (2) - Chapter 8. 쿠버네티스 실습 환경 구축 (0) | 2024.08.13 |
[Docker & Kubernetes] 4주차 정리 (1) - Chapter 7. 쿠버네티스의 기본 구조 (0) | 2024.08.10 |
[핸즈온 AWS] Chapter 5. AWS 스토리지 서비스 (0) | 2024.08.07 |