본문 바로가기
SW

클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 6부 : 세부사항 (30장)

by 라꾸스떼(YR) 2020. 3. 24.
반응형

[6부] 세부사항

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

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

 

[관계형 데이터베이스]

데이터가 테이블 구조를 가진다는 사실은 오직 아키텍처의 외부 원에 위치한 최하위 수준의 유틸리티 함수만 알아야 한다. 많은 데이터 접근 프레임워크가 테이블과 행이 객체 형태로 시스템 여기 저기에서 돌아다니게 허용하는데, 아키텍처적으로 잘못된 설계다. 이렇게 하면 유스케이스, 업무 규칙, 심지어는 UI조차도 관계형 데이터 구조에 결합되어 버린다.

 

[데이터베이스 시스템은 왜 이렇게 널리 사용되는가?]

이처럼 디스크 때문에 피해갈 수 없는 시간 지연이라는 짐을 완화하기 위해, 색인, 캐시, 쿼리 계획 최적화가 필요해졌다. 그리고 데이터를 표현하는 일종의 표준적인 방식도 필요했는데, 이러한 색인, 캐시, 쿼리 계획에서 작업중인 대상이 어떤 데이터인지 알 수 있어야 했기 때문이다.

파일 시스템, 관계형 데이터베이스 관리 시스템(RDBMS). 파일 시스템은 문서(document) 기반이다. 파일 시스템은 문서 전체를 자연스럽고 편리하게 저장하는 방법을 제공한다. 일련의 문서를 이름을 기준으로 저장하거나 조회할 때는 잘 동작하지만, 내용을 기준으로 검색할 때는 그리 크게 도움되지 않는다. 데이터베이스 시스템은 내용 기반이다. 데이터베이스 시스템은 내용을 기반으로 레코드를 자연스럽고 편리하게 찾는 방법을 제공한다. 정형화되지 않은 문서를 저장하고 검색하는 데는 대체로 부적합하다.

 

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

데이터가 데이터베이스나 파일 시스템에 있더라도, RAM으로 읽은 후에는 다루기 편리한 형태로 그 구조를 변경한다. 데이터를 파일이나 테이블 형태로 그대로 두는 경우는 거의 없다.

 

[세부사항]

데이터베이스가 세부사항이라고 말하는 이유는 바로 이러한 현실 때문이다. 데이터베이스는 그저 메커니즘에 불과하며, 디스크 표면과 RAM 사이에서 데이터를 이리저리 옮길 때 사용할 뿐이다. 아키텍처 관점에서 본다면 디스크 자체가 존재한다는 사실조차도 인식해서는 안 된다.

 

[하지만 성능은?]

데이터 저장소의 측면에서 성능은 완전히 캡슐화하여 업무 규칙과는 분리할 수 있는 관심사다.

 

[개인적인 일화]

여기에 공학적인 근거는 없었다. 다시 말해 합리성은 전혀 고려되지 않았다. 비합리적이며 대외적일 뿐인, 그리고 근거가 아예 없이 그저 필요하다는 인식 때문이었지만, 현실 세계는 이런 것이었다.

 

[결론]

체계화된 데이터 구조와 데이터 모델은 아키텍처적으로 중요하다. 데이터는 중요하다. 데이터베이스는 세부사항이다.

반응형

댓글