[AWS] DataBase

0ㅑ채
|2024. 4. 18. 21:18

1. 활용 방법

1) EC2 인스턴스에 Database를 설치해서 사용

  • 거의 모든 종류의 데이터베이스 사용 가능
  • 관리 직업해야하므로 데이터베이스에 익숙해야 함
  • 라이센스가 있는 데이터베이스 (Oracle이나 MySQL 등) 사용 시 주의!

 

2) AWS가 제공하는 관리형 데이터베이스 이용

  • 데이터베이스에 제한이 있음
    • 관계형 데이터베이스의 경우 Oracle, MySQL, Maria DB, Postgre SQL, MS SQL Server, IBM DB2만 사용 가능
    • Oracle과 MS SQL Server, DB2는 라이센스 비용이 같이 청구
  • No SQL 지원
    • Key - Value 데이터베이스 (Redis 호환) 와 Document DB (Mongo DB 호환) 지원
    • Dynamo DB는 아마존이 직접 만든 데이터베이스

 

 

 

2. 저장소 종류

1) RDBMS

  • Amazon Aurora
  • Amazon RDS
    • Oracle, MySQL, Maria DB, Postgre SQL, IBM DB2
  •  Amazon Redshift

 

2) Key-Value Database

  • Amazon DynamoDB
  • 높은 트래픽의 Web Applicatoin에 추천

 

3) In-Memory DB

  • ElsastiCache, Memory DB for Redis
  • Caching, 세션 관리, 게임 순위표, 자리 공간 애플리케이션 등에 추천

 

4) Document DB

  • Amazon의 Document DB - MongoDB 호환
  • 콘텐츠 관리, 카탈로그, 사용자 프로필 등 읽기 전용 애플리케이션에 추천

 

5) Wide Column DB

  • Amazon의 Keyspaces
  • 장비관리나 경로 최적화 등에 추천

 

6) Graph DB

  • Amazon의 Neptune
  • 부정 탐지, 소셜 네트워킹, 추천 엔진 등에 추천

 

7) Time Series

  • Amazon Timestream
  • IoT Application, DevOps, 산업용 텔레메트리 등에 추천

 

8) Ledger

  • QLDB: Amazon Ledger Database Service
  • 레코드 시스템, 공급망 관리, 은행 거래, 블록체인 등에 추천

 

9) S3와 같은 파일 저장소

 

 

 

3. Amazon RDS

  • Amazon에서 제공하는 관계형 데이터베이스 서비스
  • 장점: Managed Service, 관리나 업데이트를 직접 할 필요가 없음
  • 단점: 종류나 버전이 한정

 

1) 종류

  • MySQL: 현재까지 가장 많이 사용된 관계형 데이터베이스
  • Maria DB: MySQL의 fork
  • Oracle: 대기업에서 많이 사용되는 가장 안정적인 RDBMS
    • 금융이나 대기업이 주로 사용
    • 라이센스 비용 추가됨. 사용하려면 컴퓨터에 Oracle 설치하고 포트포워딩 이용해서 사용
  • MS SQL Server: 중소규모 기업에서 많이 사용하는 데이터베이스, 유료
    • 우리나라 게임 회사들은 MS SQL Server에서 MySQL이나 Maria DB 또는 Postgre SQL로 많이 이전
  • IBM DB2: 예전에 금융에서 많이 사용
  • Aurora MySQL, Aurora Postgre SQL: Amazon에서 코드를 수정해서 제공하는 RDBMS, 견고하고 성능이 뛰어남 
  •  

 

2) 외부에서 접속 가능한 RDS 서비스 생성

RDS 서비스 접속 > 데이터베이스 생성 클릭

표준 생성

엔진 옵션
템플릿 - 프리티어가 가장 저렴
사용자 이름과 비밀번호 생성



인스턴스 선택 (하드웨어 선택)
스토리지 선택 (저장 공간의 크기 선택)
EC2 인스턴스에 접근 가능 여부 설정

외부에서 접근 가능 여부 설정
추가 구성으로 처음 만들어지는 데이터베이스 생성

 

 

3) 외부에서 접속

  • RDS를 생성할 때 퍼블릭 엑세스가 가능하도록 생성을 하면 IPv4 주소가 주어지면서 End point가 만들어진다.
    • End Point: 외부에서 접속할 수 있는 URL이 됨 
  • 외부 접속이 되지 않는 경우
    • 보안 그룹에서 포트를 개방하지 않은 경우:
      보안 그룹을 확인해서 인바운드 규칙에 포트를 추가하고 0.0.0.0/0 으로 CIDR을 설정
    • 접속 정보가 잘못된 경우

 

4) MySQL의 파라미터 수정

- MySQL을 설치하면 설정 파일 수정해서 MySQL의 설정을 원하는 형태로 변경

- RDS는 직접 설치한 데이터베이스가 아니라서 환경 설정 파일을 직접 수정할 수 없음

- 파라미터 그룹을 만들어서 수정

- 수정 및 적용

RDS에서 파라미터 그룹을 클릭
파라미터 그룹 생성을 클릭  
파라미터 그룹 세부 정보 설정
> 데이터베이스 종류 선택
> 그룹 이름 과 설명을 작성
 
생성된 파라미터 그룹을 선택해서 파라미터를 수정  
편집 버튼을 클릭하고 원하는 파라미터 수정  
RDS의 데이터베이스를 선택  
수정 버튼을 누르고 추가 구성으로 가서 파라미터 그룹을 생성한 것으로 수정

 

RDS는 파라미터를 수정하면 재부팅을 해야 적용!!!

 

 

 

 

4. Mongo DB는 Document DB

1) 클러스터 생성

 

2) 클러스터를 클릭하면 접속 방법이 제공

- wget 명령은 linux 명령어라서 인증서를 받아올 수 없으므로 브라우저에 url을 직접 입력

  • global-bundle.pem 파일을 다운로드

- mongo shell에서 접속

  • mongosh --ssl --host docdb-2024-04-16-01-41-17.cluster-cesn3uejbkwe.ap-northeast-2.docdb.amazonaws.com:27017 --sslCAFile pem파일경로 --username 사용자계정 --password 사용자비밀번호

- 응용 프로그램에서 접속

  • mongodb://계정:비밀번호@docdb-2024-04-16-01-41-17.cluster-cesn3uejbkwe.ap-northeast-2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=pem파일경로&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false

- 파이썬이나 자바에서 사용하고자 하는 경우는 pem 파일의 경로가 절대로 변하면 안되기 때문에 s3 와 같은 저장소를 이용하거나 프로젝트 안에 포함

  • 프로젝트 안에 포함시키면 소스 코드를 다른 곳에 업로드하면 같이 업로드가 된다는 문제가 발생

 

 

 

 

5. 기본적인 CQRS 구현

- 읽기 서비스와 그 이외의 작업을 처리하는 서비스로 나눔

- 각 서비스는 별도의 데이터베이스를 사용

- 읽기 서비스는 NoSQL을 그 이외의 작업을 처리하는 서비스는 RDBMS를 사용하는 것을 권장

- 2개의 데이터베이스 동기화는 Kafka와 같은 Message Queue 프로그램을 이용해서 수행

 

 

 

 

 

 

 

 

 

 

'AWS' 카테고리의 다른 글

[AWS] EC2 Service  (1) 2024.04.18
[AWS] 개요  (0) 2024.04.11