시스템 설계 · 심화
다중 테넌트(Multi-tenant) SaaS 애플리케이션을 위한 데이터베이스를 설계한다고 가정해 봅시다. 테넌트 데이터 격리 수준(개별 DB, 스키마, 테이블)에 따른 장단점을 설명하고, 각 방식이 데이터 보안, 성능, 확장성, 운영 복잡성에 미치는 영향에 대해 구체적인 설계 전략과 함께 논하시오.
힌트 · 테넌트별 DB, 스키마, 테이블 방식의 격리 수준을 비교하고, 각각의 구현 복잡성, 비용, 보안, 성능 특성을 고려해야 합니다. 샤딩 전략과 확장성을 함께 고려하는 것이 중요합니다.
데이터 격리스키마 분리성능 격차확장성 제약운영 오버헤드
모범답안
다중 테넌트 SaaS 데이터베이스 설계 시 데이터 격리 수준은 중요한 고려 사항입니다. 크게 개별 DB, 스키마 분리, 테이블 분리 방식이 있습니다.
개별 DB 방식은 가장 강력한 격리를 제공하지만, 리소스 사용률이 낮고 관리 복잡도가 높습니다. 스키마 분리는 격리 수준은 낮지만, DB 리소스 효율성이 높고 관리가 용이합니다. 테이블 분리는 구현이 간단하지만, 격리 수준이 가장 낮고, 쿼리 성능에 영향을 줄 수 있습니다.
데이터 보안을 위해서는 개별 DB가 가장 안전하지만, 비용이 많이 듭니다. 성능은 데이터 양과 쿼리 패턴에 따라 달라지는데, 스키마 분리 시 샤딩 전략을 통해 성능을 개선할 수 있습니다. 확장성은 개별 DB가 가장 유리하지만, 스키마 분리도 샤딩을 통해 충분히 확장 가능합니다. 운영 복잡성은 개별 DB가 가장 높고, 테이블 분리가 가장 낮습니다.
따라서, 보안 요구사항, 성능 요구사항, 비용, 운영 복잡성을 종합적으로 고려하여 적절한 격리 수준을 선택해야 합니다. 예를 들어, 높은 보안이 요구된다면 개별 DB를 선택하고, 비용 효율성이 중요하다면 스키마 분리를 선택할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 데이터베이스 설계 면접 질문
- 뷰(View)와 물질화된 뷰(Materialized View)의 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 적절한가요? 특히 물질화된 뷰가 대용량 데이터 환경에서 쿼리 성능 최적화에 어떻게 기여할 수 있는지 설명해 주세요.
- 대용량 테이블의 관리 및 성능 향상을 위해 파티셔닝(Partitioning)을 고려할 때, 어떤 종류의 파티셔닝(예: Range, List, Hash)을 선택할 수 있으며, 각각의 장단점과 적합한 사용 시나리오는 무엇인가요?
- 데이터베이스 트랜잭션의 격리 수준(Isolation Level)이 무엇이며, 'READ COMMITTED'와 'REPEATABLE READ' 수준의 차이점과 각각 어떤 상황에서 사용해야 하는지 설명해 주세요.
- 대규모 분산 데이터베이스 시스템에서 일관성(Consistency), 가용성(Availability), 파티션 허용(Partition Tolerance) 중 두 가지를 선택해야 하는 CAP 이론의 제약사항을 극복하기 위한 데이터베이스 설계 전략을 설명하고, 특정 비즈니스 요구사항(예: 금융 거래 vs. 소셜 미디어 피드)에 따라 어떤 일관성 모델(강력, 최종, 세션 등)과 분산 트랜잭션 처리 방식을 선택할지 구체적인 시나리오와 함께 논하시오.
- 기업의 데이터 분석 및 의사결정을 위한 데이터 웨어하우스를 설계해야 합니다. OLTP 시스템과 OLAP 시스템의 데이터 모델링 접근 방식의 근본적인 차이점을 설명하고, 스타 스키마(Star Schema)와 스노우플레이크 스키마(Snowflake Schema)의 장단점을 비교하여 특정 분석 요구사항(예: 복잡한 차원 분석 vs. 저장 공간 최적화)에 따라 어떤 스키마를 선택할지 설계 관점에서 설명하시오.
- 마이크로서비스 아키텍처 환경에서 각 서비스가 독립적인 데이터베이스를 소유하도록 설계할 때 발생할 수 있는 데이터 일관성 및 분산 트랜잭션 문제를 해결하기 위한 데이터베이스 설계 패턴 및 전략(예: Saga 패턴, CQRS, Event Sourcing)을 설명하고, 각 패턴의 장단점과 적용 시나리오를 구체적으로 제시하시오.