Architecture Decision Record

Active theme: Light

← 의사결정 기록 예시

아키텍처 의사결정 기록: 데이터베이스 기술 선택

상태

수락됨

맥락

우리는 확장 가능하고 성능이 좋은 방식으로 데이터를 저장하고 검색해야 하는 새 애플리케이션을 설계하고 있습니다. 흔히 사용되는 세 가지 유형의 데이터베이스 기술을 파악했습니다: 관계형 데이터베이스, 문서 데이터베이스, 이벤트 데이터베이스.

관계형 데이터베이스는 고정된 스키마를 가진 테이블에 데이터를 저장하고 엄격한 데이터 무결성 제약을 적용합니다. 복잡한 데이터 관계와 트랜잭션이 필요한 애플리케이션에 적합합니다. 예로 MySQL, PostgreSQL, Oracle이 있습니다.

문서 데이터베이스는 JSON과 유사한 문서로 데이터를 저장하며 스키마가 없습니다. 유연한 데이터 모델과 수평 확장이 필요한 애플리케이션에 적합합니다. 예로 MongoDB, Couchbase, Amazon DynamoDB가 있습니다.

이벤트 데이터베이스는 데이터를 일련의 이벤트로 저장하여 데이터의 모든 변경을 포착합니다. 감사, 이벤트 소싱, 복잡한 데이터 처리가 필요한 애플리케이션에 적합합니다. 예로 Apache Kafka, Apache Pulsar, AWS Kinesis가 있습니다. 결정

우리 애플리케이션의 요구사항과 제약을 신중하게 평가한 후, 문서 데이터베이스를 사용하기로 결정했습니다.

근거

우리가 문서 데이터베이스를 선택한 이유는 다음과 같습니다:

  1. 우리 애플리케이션은 시간이 지남에 따라 진화할 수 있는 유연한 데이터 모델을 필요로 합니다. 문서 데이터베이스를 사용하면 스키마 없는 형식으로 데이터를 저장할 수 있으므로 데이터베이스 스키마를 수정하지 않고도 새 필드를 추가하거나 기존 문서의 구조를 변경할 수 있습니다.

  2. 우리 애플리케이션은 대량의 데이터와 트래픽을 처리하기 위해 수평 확장이 필요합니다. 문서 데이터베이스는 샤딩과 복제를 기본으로 지원하므로 여러 서버에 데이터를 분산하고 높은 읽기 및 쓰기 처리량을 감당할 수 있습니다.

  3. 우리 애플리케이션은 빠르고 효율적인 데이터 검색을 필요로 합니다. 문서 데이터베이스는 강력한 인덱싱 및 쿼리 기능을 제공하여 데이터를 빠르고 효율적으로 검색할 수 있게 합니다.

  4. 우리 애플리케이션은 복잡한 트랜잭션이나 데이터 관계를 필요로 하지 않습니다. 관계형 데이터베이스는 데이터 무결성 제약을 적용하고 복잡한 트랜잭션을 처리하는 데 뛰어나지만, 우리 애플리케이션에는 그러한 요구사항이 없습니다. 문서 데이터베이스는 우리 사용 사례에 충분한 일관성과 내구성 보장을 제공할 수 있습니다.

결과

문서 데이터베이스를 선택하면 사용하기로 한 특정 기술을 배우고 이해하는 데 투자해야 합니다. 또한 성능과 확장성을 극대화하기 위해 애플리케이션의 데이터 모델이 문서 데이터베이스의 데이터 모델과 잘 맞도록 해야 합니다.

그러나 우리는 문서 데이터베이스 사용의 이점이 비용을 능가하며, 이것이 우리 애플리케이션의 요구사항과 제약에 가장 잘 맞는다고 믿습니다.