caffeine-library / Domain-Driven-Design

🌱 에릭 에반스의 '도메인 주도 설계'를 읽는 스터디
4 stars 0 forks source link

[additional] DynamoDB를 사용하는 프로젝트에서 트랜잭션과 롤백을 사용하지 않고 있다면 그 이유는? #32

Closed JasonYoo1995 closed 1 year ago

JasonYoo1995 commented 1 year ago

연관 챕터

30

조사 내용

저희 팀은 DynamoDB를 사용하고 있는데 DynamoDB가 제공하는 트랜잭션과 롤백 기능을 사용하지 않고 자체적인 복구 메커니즘을 직접 구현해 복구를 수행하고 있습니다.

그렇게 하는 이유가 궁금해서 ChatGPT에게 물어보았고 그럴 듯한 답변을 준 것 같습니다.

Q. DynamoDB는 트랜잭션과 롤백 기능을 지원해주나요? A.

예, Amazon DynamoDB는 트랜잭션과 롤백 기능을 지원합니다.

DynamoDB는 ACID 원칙 중 일부를 충족시키는 트랜잭션을 제공합니다. 이를 통해 여러 개의 항목을 묶어서 하나의 원자적인 작업으로 수행할 수 있으며, 성공하거나 실패할 경우 모든 작업이 롤백됩니다.

DynamoDB에서 트랜잭션은 TransactWriteItems API를 사용하여 수행할 수 있으며, 모든 쓰기 작업 (PutItem, UpdateItem, DeleteItem) 및 일부 작업 (ConditionCheck, Lock)을 포함할 수 있습니다.

따라서 DynamoDB를 사용하면 안전하고 일관성있는 데이터 작업을 수행할 수 있습니다.

Q. 굳이 그 기능을 쓰지 않고 자체적인 복구 메커니즘을 사용하는 팀이 있다면 그 이유가 뭘까요? A.

DynamoDB의 트랜잭션과 롤백 기능은 데이터 무결성과 일관성을 유지하는 데 중요한 역할을 합니다. 그러나 이러한 기능을 사용하지 않는 팀이 있는 경우에는 다음과 같은 이유가 있을 수 있습니다.

1. 성능: 트랜잭션은 여러 작업을 하나의 원자적인 단위로 수행하므로 일반적으로 단일 작업에 비해 더 많은 리소스를 사용합니다. 또한 롤백 기능은 작업을 완료하고 나서도 일부 리소스를 유지해야 하므로 성능에 영향을 미칠 수 있습니다. 팀은 자체적인 복구 메커니즘을 사용하여 데이터 일관성과 무결성을 유지하면서도 성능을 개선할 수 있습니다.

2. 비용: DynamoDB에서 트랜잭션과 롤백 기능을 사용하려면 데이터베이스 용량과 처리량에 따라 추가 비용이 발생합니다. 팀이 이러한 기능을 사용하지 않으면 비용을 절감할 수 있습니다.

3. 복잡성: 트랜잭션과 롤백 기능은 구현하기가 복잡할 수 있습니다. 이러한 기능을 사용하는 경우에는 코드가 복잡해질 가능성이 높아집니다. 따라서 팀은 자체적인 복구 메커니즘을 사용하여 코드를 단순화할 수 있습니다.

4. 기술적 제약: 일부 애플리케이션에서는 DynamoDB의 트랜잭션과 롤백 기능을 사용할 수 없는 경우가 있습니다. 예를 들어, 트랜잭션의 범위가 제한되어 있거나 DynamoDB의 일부 기능과 호환되지 않는 경우입니다. 이러한 경우에는 팀이 자체적인 복구 메커니즘을 구현해야 할 수 있습니다.

따라서 이러한 이유로 인해 일부 팀은 DynamoDB의 트랜잭션과 롤백 기능을 사용하지 않을 수 있습니다.

JasonYoo1995 commented 1 year ago

여러분 팀에서는 어떻게 트랜잭션과 롤백을 처리하고 있는지, 그 이유는 무엇인지 나누어보고 싶습니다.

과거에 나누어보았던 '격리 수준' 관련 이슈를 리뷰하면서 답변하면 더 좋을 것 같습니다.

[관련 이슈]

JasonYoo1995 commented 1 year ago

본 책 6장은 도메인 모델의 생명주기와 관련하여 MODEL-DRIVEN-DESIGN을 효과적으로 구현하고 관리하기 위한 보조적 수단으로 FACTORYREPOSITORY가 있다고 했는데요

Entity가 사용하는 Value Object 등을 메모리 상에 캐싱하는 것 또한 중요한 보조적 수단이라고 생각이 듭니다 여러분 팀에서는 캐싱을 어떻게 관리하고 계신지 해당 도메인의 특성과 요구사항과 연관 지어 나누어보면 좋을 것 같습니다.

[관련 이슈]