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 |