하이브리드 데이터베이스 시스템 구현 모범 사례 - Amazon DynamoDB

하이브리드 데이터베이스 시스템 구현 모범 사례

하나 이상의 RDBMS(관계형 데이터베이스 관리 시스템)에서 Amazon DynamoDB로 마이그레이션하는 것이 유용하지 않는 경우도 있습니다. 이런 경우 하이브리드 시스템을 생성하는 것이 좋을 수도 있습니다.

DynamoDB로 일부만 마이그레이션하고 싶은 경우

예를 들어, 일부 조직은 회계와 운영에 필요한 여러 보고서를 생산하는 코드에 많은 투자를 했을 것입니다. 이들에게는 보고서 생성에 필요한 시간이 중요하지 않습니다. 관계형 시스템의 유연성은 이런 종류의 작업에 적합합니다. NoSQL에서 이런 보고서를 모두 다시 생성하는 것이 불가능할 정도로 어려울 수도 있습니다.

또 일부 조직은 수십 년에 걸쳐 획득하거나 물려받은 여러 다양한 레거시 관계형 시스템을 유지하고 있습니다. 이런 시스템에서 데이터를 마이그레이션하는 것이 지나치게 위험하고 값 비싸, 이런 노력이 정당화되지 않을 수도 있습니다.

하지만 이런 조직들이 트래픽이 많아 밀리초 응답이 반드시 필요한 고객용 웹사이트가 회사의 운영을 결정한다는 사실을 발견할 수도 있습니다. 관계형 시스템은 많은(때론 수용할 수 없는) 투자를 해야만 이런 요구 사항을 충족할 수 있습니다.

이런 상황에 대한 답은 DynamoDB가 하나 이상의 관계형 시스템에 저장된 데이터에 대한 구체화된 보기를 생성하고, 이런 보기에 대해 트래픽이 많은 요청을 처리하는 하이브리드 시스템을 생성하는 것입니다. 이런 시스템은 고객용 트래픽 처리에 필요했던 RDBMS 라이선스와 서버 하드웨어 유지관리를 없애 비용을 크게 절감시킬 수 있습니다.

하이브리드 시스템 구현 방법

DynamoDB는 DynamoDB Streams와 AWS Lambda를 활용하여 하나 이상의 기존 관계형 데이터베이스 시스템을 원활하게 통합할 수 있습니다.

DynamoDB와 기존 SQL 시스템 통합 방법을 보여주는 다이어그램

DynamoDB Streams와 AWS Lambda를 통합하는 시스템은 몇 가지 혜택을 제공할 수 있습니다.

  • 구체화된 보기의 지속형 캐시로 운영할 수 있습니다.

  • 점진적으로 SQL 시스템에 데이터를 채우고, 여기에서 이런 데이터를 쿼리 및 수정하도록 설정할 수 있습니다. 즉, 전체 보기를 미리 채울 필요가 없습니다. 이는 프로비저닝된 처리량 용량이 효율적으로 사용될 가능성이 더 높다는 것을 의미합니다.

  • 이는 관리 비용을 낮추고, 아주 높은 가용성과 신뢰도를 제공합니다.

이런 종류의 통합을 구현하기 위해서는 세 종류의 상호 운영이 필요합니다.

DynamoDB와 기존 SQL 시스템 통합에 필요한 코딩
  1. DynamoDB 캐시를 증분 방식으로 채웁니다. 항목을 쿼리하면, 먼저 DynamoDB에서 이를 찾습니다. 여기에 없다면, SQL 시스템을 검색해 DynamoDB로 로드합니다.

  2. DynamoDB 캐시를 통해 씁니다. 고객이 DynamoDB의 값을 변경하면, Lambda 함수가 트리거되어 SQL 시스템에 새 데이터를 다시 작성합니다.

  3. SQL 시스템에서 DynamoDB를 업데이트합니다. 재고 관리나 요금 같은 내부 프로세스가 SQL 시스템의 값을 변경하면, 저장된 프로시저가 트리거되어 DynamoDB의 구체화된 보기에 변경 사항을 전파합니다.

이런 작업은 아주 간단하며, 모든 것이 모든 시나리오에 필요한 것은 아닙니다.

하이브리드 솔루션은 DynamoDB를 주로 사용하고 싶지만, 동시에 시간이 중요하지 않거나 특별한 보안이 필요한 작업이나 1회성 쿼리용으로 작은 관계형 시스템을 유지하고 싶을 때 유용할 수 있습니다.