HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📖
공부한 책
/
클린 아키텍처
클린 아키텍처
/
[30장] 데이터베이스는 세부사항이다

[30장] 데이터베이스는 세부사항이다

개요

  • 아키텍처 관점에서 볼 때 데이터베이스는 엔티티가 아니다. 즉 데이터베이스는 세부사항이라서 아키텍처의 구성요소 수준으로 끌어올릴 수 없다
  • 소프트웨어 시스템의 아키텍처와 데이터베이스의 관계를 건물로 비교하면 건물의 아키텍처와 문 손잡이의 관계와 같다.
  • 애플리케이션 내부 데이터의 구조는 중요하지만 데이터베이스는 데이터 모델이 아닌 일개 소프트웨어 일 뿐이다. 데이터베이스는 데이터에 접근할 방법을 제공하는 유틸리티
 

관계형 데이터베이스

  • 관계형 테이블은 특정한 형식의 데이터에 접근하는 경우에는 편리하지만, 데이터를 테이블에 행 단위로 배치한다는 자체는 아키텍처적으로 볼 때 전혀 중요하지 않다.
  • 애플리케이션의 유스케이스는 이러한 방식을 알아서는 안되며 관여해서도 안 된다.

디스크가 없다면 어떻게 될까?

  • 한때는 디스크가 성행했지만, 이제는 소멸 중인 부품이다. 머지않아 디스크는 테이프드라이브, 플로피 드라이브, CD가 지나온 길을 따를 것이다. 디스크는 RAM으로 대체되고 있다.
  • 모든 데이터가 RAM에 저장된다면 데이터를 어떻게 체계화할 것인가? ⇒ 연결 리스트, 트리, 해시 테이블, 스택, 큐 혹은 여타 무수히 많은 데이터 구조로 체계화할 것이며, 데이터에 접근할 때는 포인터나 참조를 사용할 것
  • 데이터가 데이터베이스나 파일 시스템에 있더라도 RAM으로 읽은 후에는 다루기 편리한 형태로 그 구조를 변경한다. 입맛에 맞는 임의의 구조로.
  • 데이터베이스가 세부사항이라고 말하는 이유는 바로 이러한 현실 때문이다. 데이터베이스는 그저 메커니즘에 불과하며, 디스크 표면과 RAM 사이에서 데이터를 이리저리 옮길 때 사용할 뿐

하지만 성능은?

성능은 아키텍처와 관련된 관심사가 아닌가? 당연히 맞다
  • 데이터 저장소의 측면에서 성능은 완전히 캡슐화하여 업무 규칙과는 분리할 수 있는 관심사다.
  • 데이터 저장소에서 데이터를 빠르게 넣고 뺄 수 있어야 하는 것은 맞지만, 이는 저수준의 관심사다.
 
💡
체계화된 데이터 구조와 데이터 모델은 아키텍처 적으로 중요하다. 반면, 그저 데이터를 회전식 자기 디스크 표면에서 이리저리 옮길 뿐인 기술과 시스템은 아키텍처 적으로 중요치 않다.