로컬 DynamoDB가 성장했다: ExtendDB 실습 리뷰

DynamoDB Local은 2013년부터 AWS DynamoDB의 랩탑 대체재였다. Java JAR로, 메모리 내에서 또는 SQLite 파일에 대해 실행되며, 거의 모든 요청 형태를 수락하고, 실제 인증이 없으며, Streams를 꽤 느슨하게 다룬다. 유닛 테스트용으로는 괜찮다. 하지만 코드가 PutItem과 GetItem 이상을 수행하는 순간 금이 가기 시작한다.
ExtendDB v0.1.0이 방금 출시되었다. Rust로 작성된, DynamoDB 와이어 프로토콜의 클린룸 구현이며, AWS 엔지니어들에 의해, PostgreSQL로 백엔드되고, Apache 2.0 라이선스다. 피치는 "DynamoDB Local, 하지만 진지하게 받아들일 수 있는 것." 이 글은 이것이 유지되는지에 대한 실습 리뷰로, 단일 Mac에서 나란히 실험실로 실행한 결과다.
ExtendDB가 실제로 무엇인지
ExtendDB는 DynamoDB의 포크가 아니다. DynamoDB 소스 코드는 전혀 들어 있지 않다. 이것이 하는 일은 DynamoDB 와이어 프로토콜(AWS SDK가 사용하는 JSON-1.0 X-Amz-Target 디스패치)을 말하는 것이다. 따라서 기존 boto3 또는 AWS CLI 클라이언트를 하나의 플래그 변경으로 ExtendDB 엔드포인트로 지정할 수 있으며 수정 없이 작동한다.
내부적으로는 작고 집중된 Rust 워크스페이스다. extenddb-storage 크레이트는 트레이트 정의일 뿐이며, extenddb-storage-postgres가 현재 유일한 구현이다. 다른 백엔드(sqlite, foundationdb 등)를 구현하는 것은 주로 트레이트를 구현하는 문제가 될 만큼 경계가 깔끔하다.
결론
DynamoDB Local을 보완하기 위해 테스트 코드를 작성해본 적이 있고(auth를 모킹하고, Streams 단언을 건너뛰고, TTL을 스텁하고) 실제 서비스가 다르게 동작할까 조용히 걱정해본 적이 있다면, ExtendDB는 흥미롭다. Auth, Streams, TTL, Multi-Account 격리, 내구성을 진지하게 다루는 최초의 로컬 DynamoDB 대체재이며, 스토리지 레이어는 psql로 접근할 수 있는 평범한 PostgreSQL이다.
현실적인 Auth 및 Stream 시맨틱이 필요한 CI 파이프라인, 온프레미스 또는 에어갭 배포, 그리고 "DynamoDB Local에서는 되는데..."로 시간을 낭비해온 개발 팀에게 v0.1.0은 이미 유용한 도구다. 실제 서비스와의 바이트 단위 와이어 호환성에 의존하는 모든 것에 대해서는 먼저 자체 검증을 거치는 것이 좋다.
Ercan의 다른 글
같은 저자, 다른 영역의 사이트 두 개.