AWS 게이밍 DB 세미나

강재민·2022년 12월 2일
0
post-thumbnail

RDS & Aurora

와이파이 비번
BrokenWires@@2019

하현수 SA님 발표
세션 앞부분은 RDS가 무엇인지 설명하는것은 지루할 수 있어서 빨리 넘어가실예정

빠르게 변화하는 트랜드

자체 관리 데이터베이스 및 분석 서비스 단점

Legacy 상업용 데이터베이스의 한계

라이센스비용과 제반과 서드파티 툴까지 비용이 많이듦
돈과 시간, 노력


RDS특징

관리 용이성, 가용성 및 내구성, 뛰어난 확장성, 빠른 성능과 보안

Aurora도 리프트 앤 쉬프트 방식?

관리 용이성

성능 개선 도우미를 통해 인스턴스 사이즈와 DB사이즈를 최적화할 수 있따.

가용성 및 내구성

읽기 복제본으로도 부족한 경우 그 앞단에 Caching 서비스를 두는것임
Elastic cach와 Redis를 사용할 수 있음

다중ZM읽기 전용 복제본
동기식비동기식
프라이머리만 활성화모든것이 활성화
하나의 리전에 두개의가용영역하나의 가용영역, 교차 가용영역, 교차 리전까지도 가능

자동백업

뛰어난 확장성

빠른 성능과 보안


Aurora

가장큰 차이점은 스토리지이다.
스토리지를 공유하는 방식
로그레코드를 병렬로 처리를 해서 저장을 한다는 특징

RDSAurora
ABCDE를 로그는 로그대로, 스토리지는 스토리지대로ABCDE에 대한 로그 레코드들을 스토리지에 넣고 스토리지 안에서 저장한다.

이런 이유로 성능이 좋다는 것임
로그레코드들을 기반으로 특정시점으로 돌리거나 백트래킹이 가능하다.

Auror 클론

단순히 다른 조직에 데이터를 보내는 용도 뿐만 아니라 마이그레이션에서도 사용가능하다.

Aurora 글로벌 데이터베이스

DR, 리전과 데이터 통합에 사용
1초 지연시간이 있다. 크리티컬한 게이밍 서비스에는 부적합
그래도 관리포인트를 줄일 수 있기 때문에 편리한것은 사실

Aurora Serverless v2

개발용은 OK 운영은 아직..
테스트 하다가 해당 내용을 그대로 쉽게 마이그레이션 가능함

Enhanced Monitoring

Performance Insight
Performance Schema를 활성화 할 때는 CPU기준 10%이상 확보를 해야함

PI / EM Menu..

중간에 오로라 쿼리를 대규모로 하는 실수를 해서 CPU 사용량이 급증해서 인스턴스가 죽은 적이 있다고 하심
이를 위해 모니터링하고 관리하는 방법론에 대해서 추가적으로 이야기하심

Aurora/RDS Upgrade with minimum DownTime

복제본을 만들고 이걸 업그레이드하고 구 과정에서의 데이터를 다시 넣고 업그레이드 한 DB를 마스터로 변경

현실고충. 새로운 버전을 사용할 경우 테스트를 하거나 3~6개월종도 기다렸다가 하는게 나음..


DynamoDB

Tier 0 Service?
만약 DynamoDB가 장애가 나면 AWS가 마비됨 AWS 스토어를 사용하는 모든 서비스가 마비될 수 있음
하지만 10년동안 잘 운영되고있다고 하심

DB의 가장 큰 고통은 Scale..

예를들어 12월31~ 1월1일 넘어갈 때 메시징 서비스..
처럼 예상치 못할 때 탄력적으로 대응할 수 있다고 하심

글로벌 멀티 리전 서비스

디즈니에서 사용하고 있다고 하심
글로벌로 서비스하면서도 관리포인트가 적어서 좋다고 하심
다만, 개인정보가 들어간 DB는 글로벌 서비스를 하지 않는것이 좋음
DAX를 사용할거면 Elastic Cash를 사용하라고 하심

SQL? NoSQL?

여전히 SQL을 많이 사용하고있음 slack이나 Github같은 대규모 회사들도 이미 SQL을 사용하고있음
이 예시로 2명을 페라리를 타고 이동하는것은 좋지만 30명 이상급을 그렇게 할 수 있을까? 에대한 것으로 비슷하다고 하심

NoSQL은 중복된 데이터를 허용함

대규모 트래픽을 대비해서
처음에는 RR을 많이만들고
그걸로 안되서 캐싱을 만들고
그래도 마스터노드는 1개이기 때문에 나중에는
그걸로 안되서 샤딩을 하고
그러다보면 관리포인트가 늘어나고
그래서 결론은 DynamoDB이다. 라고 하심

DynamoDB는 스키마가 없시 데이터가 들어가있음

가능하다면 큰 오브젝트는 S3에 넣고 해당 메타데이터를 DynamoDB에 저장하는 방식으로 하는 것을 추천

BatchGetItem
GetItem의 차이
GetItem은 하나만 가져옴
BatchGetItem은 한 번에 100개의 데이터를 가져와서 성능에 영향을 줌


AWS ElastiCache overview

이덕현님의 발표
EC와 MemoryDB의 차이도 가져가면 좋겠다고 하심.

인메모리 DB의 필요성

사용자는 많아지고 데이터 크기는 커지고있고 서비스도 글로벌하게 커지기 때문이라고 하심.

Memchached

단순 키-값 만 저장 가능
고가용성 구성이 불가능함
Redis보다 빠르긴 함

Redis

다양한 인메모리 구조를 사용가능하다.
고가용성 구성이 가능하다.

완전관리형 서비스

Redis나 Memchached도 또한 리프트앤 시프트 방식을 관리형으로 제공하는것임.

MemoryDB

메모리 DB는 DB용도이다.
가장 중요한 차이점은 내구성이라고 하심

MemoryDB의 내구성

메모리DB의 경우 트랜젝션 로그에 명령로그를 남기고 ACK를 받고 나서 클라이언트에게 ACK를 보내기 때문에 가벼운 쿼리에 대해서 Elastic Cache보다 느릴 수 밖에 없다고 하심. 그래서 캐싱을 위해서라면 MemoryDB를 사용하면 비용도 나가고 성능도 떨어질 수 밖에 없다고 하심.

Redis

는 싱글쿼리가 되기 때문에 슬로우 쿼리를 했을 경우 전체 시스템이 느려질 수 있기 때문에 자제해야한다고 하심

싱글 스레드이기 때문에
2xlarge를 추천한다고 하심
스레드가 4개이기 때문에 코어가 딱4개일 때 최적화 된다고 하심
적으면 context slice가 일어나서 안좋다고 하심 많으면 어차피 다른 코어는 사용되지 않는다고 하심


DocumentDB

DocumentDB는 왜쓸까

JSON과 호환이 잘된다고 하심

필드명을 최소화하는 것이 중요하다고 하심.

0개의 댓글