데이터 스토어 - AWS에서 마이크로서비스 구현

데이터 스토어

데이터 스토어는 마이크로서비스에 필요한 데이터를 유지하는 데 사용됩니다. 세션 데이터의 인기 스토어는 Memcached 또는 Redis와 같은 인 메모리 캐시입니다. AWS는 관리형 Amazon ElastiCache 서비스의 일부로 두 기술을 모두 제공합니다.

애플리케이션 서버와 데이터베이스 사이에 캐시를 배치하는 것은 데이터베이스에 대한 읽기 로드를 줄여 쓰기를 지원하는 데 리소스를 더 많이 사용할 수 있도록 하는 일반적인 메커니즘입니다. 캐시를 사용하면 대기 시간을 개선할 수 있습니다.

관계형 데이터베이스는 정형 데이터와 비즈니스 객체를 저장하는 데 여전히 많이 사용됩니다. AWS는 Amazon Relational Database Service(Amazon RDS)를 통해 관리형 서비스로 6개의 데이터베이스 엔진(Microsoft SQL Server, Oracle, MySQL, MariaDB, PostgreSQL 및 Amazon Aurora)을 제공합니다.

그러나 관계형 데이터베이스는 무한한 확장이 가능하도록 설계되지 않았으므로, 대량의 쿼리를 지원하도록 기술을 적용하는 작업은 매우 어렵고 시간이 오래 걸릴 수 있습니다.

NoSQL 데이터베이스는 관계형 데이터베이스의 일관성보다 확장성, 성능 및 가용성을 높이도록 설계되었습니다. NoSQL의 한 가지 중요한 요소는 NoSQL 데이터베이스가 일반적으로 엄격한 스키마를 적용하지 않는다는 것입니다. 데이터는 수평으로 확장할 수 있는 파티션에 분산되며 파티션 키를 사용하여 검색됩니다.

개별 마이크로서비스는 한 가지 작업을 잘 수행하도록 설계되었으므로 일반적으로 NoSQL 지속성에 적합한 단순화된 데이터 모델을 사용합니다. NoSQL 데이터베이스는 관계형 데이터베이스와 액세스 패턴이 다르다는 것을 이해하는 것이 중요합니다. 예를 들어, 테이블 조인을 수행할 수 없습니다. 테이블 조인이 필요한 경우, 애플리케이션에 해당 로직을 구현해야 합니다. Amazon DynamoDB를 사용하여 데이터 규모에 관계없이 데이터를 저장 및 검색하고, 어떤 수준의 요청 트래픽이라도 처리할 수 있는 데이터베이스 테이블을 생성할 수 있습니다. DynamoDB는 한 자릿수 밀리초 성능을 제공하지만 마이크로초의 응답 시간을 필요로 하는 일부 사용 사례가 있습니다. Amazon DynamoDB Accelerator(DAX)는 데이터 액세스에 캐싱 기능을 제공합니다.

DynamoDB는 또한 실제 트래픽에 대해 응답하여 처리량을 동적으로 조절하는 자동 확장 기능을 제공합니다. 그러나 애플리케이션에서 활동이 단기간에 급증함으로 인해 용량 계획이 어렵거나 불가능한 사례가 있습니다. 이러한 상황을 위해 DynamoDB는 단순한 요청당 지불 방식을 제공하는 온디멘드 옵션을 제공합니다. DynamoDB 온디맨드는 용량 계획 없이 초당 수천 개의 요청을 즉각적으로 처리할 수 있습니다.