TDD ‐ Managing System Data - thought-corner/backend-roadmap GitHub Wiki
데이터베이스에서 시작하는 설계 주요 흐름
- 테이블 스키마 설계에 요구사항을 투영한다.
- 테이블 스키마를 반영하기 위해 입출력 계약 설계를 변경한다.
- 데이터베이스에 CRUD 연산을 위임한다.
- 데이터베이스 제약 조건을 통해 데이터의 일관성과 무결성을 유지하기 쉽다.
- 데이터베이스 스키마는 모델과 코드에 비해 변경 비용이 크기 때문에 시스템 설계 유연성이 낮아진다.
- 데이터베이스 스키마는 비즈니스 지식 표현력이 낮다.
- 작업 부하 분산이 어렵다.
- 응용 프로그램의 역할을 클라이언트와 데이터베이스 연산의 연결수단으로 바라본다.
- 인터페이스 설계가 데이터베이스 스키마에 논리적으로 의존하게 되어 변경이 까다롭다.
- 기능 및 비기능 요구사항 난이도가 낮고 변경이 적은 방식이라면 유용하다.
데이터베이스 중심 아키텍처란?
인터페이스에서 시작하는 설계 주요 흐름
- 인터페이스 설계에 요구사항을 투영한다.
- 인터페이스 명세에 기반해 클라이언트에 제공할 기능을 구현한다.
- 기능 구현에 필요하다면 테이블 스키마 설계를 변경한다.
- 클라이언트에 제공되는 가치가 설계 결정의 주도권을 가진다.
- 비즈니스 지식이 시스템에 풍부한 어휘로 표현된다.
- 인터페이스 설계는 데이터베이스 스키마에 의존하지 않는다.
- 구현 기술을 다양하게 검토할 수 있다.
TDD를 사용하는 주요 설계 흐름
- 인터페이스 설계에 요구사항을 투영한다.
- 테스트 시나리오 목록을 작성한다.
- 한 가지 항목을 테스트로 전환한다.
- 테스트를 통과하도록 기능 구현한다.
- 기능 구현에 필요하다면 테이블 스키마 설계를 변경한다.
- 테스트 시나리오 목록이 비워졌는지 확인한다.