현재 선택한 데이터 아키텍처 과정

DAsP 이론 학습

이론 목록으로 돌아가기

CRUD 매트릭스로 데이터-프로세스 검증

CRUD 매트릭스는 프로세스와 데이터 객체의 생성·조회·수정·삭제 접점을 같은 분석 수준에서 교차시켜 누락·고립·책임 과다·경계 오류를 찾는 검증 도구입니다. 빈 셀이나 특정 CRUD 부재를 즉시 오류로 단정하지 말고 외부 생성·보존 정책·분석 범위를 근거로 판정해야 합니다.

예상 읽기 7

핵심 요약

CRUD 매트릭스는 보통 행에 프로세스, 열에 엔터티·주요 데이터 객체를 두고 각 교차점에 C(Create), R(Read), U(Update), D(Delete)를 표시한다. 핵심은 문자를 채우는 데 있지 않다. 어떤 프로세스가 어떤 데이터를 어떤 책임으로 다루는지, 생성 주체가 없는 데이터·사용되지 않는 데이터·너무 많은 데이터를 갱신하는 프로세스·여러 프로세스에 분산된 핵심 변경 책임을 찾아 모델과 업무 경계를 검증한다.

학습 목표

  • CRUD 매트릭스의 축·분석 수준·표기 규칙을 정의한다.
  • 빈 행·빈 열·C 부재·R 부재·과밀 CUD를 근거와 함께 판정한다.
  • 외부 인터페이스·배치·수기 보정까지 포함해 생성·변경 흐름을 추적한다.
  • 매트릭스 결과를 누락 프로세스·엔터티·관계·서비스 경계 개선으로 연결한다.

1. CRUD 표기의 의미

기호의미확인 질문
C새로운 인스턴스 생성최초 생성 주체와 식별자 부여 주체는 누구인가?
R조회·참조의사결정·검증·출력에 실제로 사용하는가?
U기존 인스턴스 변경변경 가능한 속성과 업무 소유자는 누구인가?
D인스턴스 삭제·논리 폐기물리 삭제, 상태 종료, 이력 보존 중 무엇인가?

한 셀에 CR, RU, CRUD처럼 여러 기호가 들어갈 수 있다. 조직이나 방법론에 따라 셀에 하나의 대표 기호만 표시하는 우선순위를 쓰기도 하지만, 그 요약 규칙은 실제 상호작용 전체를 숨길 수 있으므로 원시 근거를 별도로 보존한다.

D는 물리 DELETE만 뜻하지 않을 수 있다. 업무에서 삭제를 취소상태·종료일·비활성화로 구현한다면 매트릭스 표기 규칙에 그 의미를 명시해야 한다.

2. 작성 전 정렬해야 할 분석 수준

프로세스와 데이터 객체의 추상화 수준이 맞아야 한다.

잘못된 예:

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
프로세스: 주문 관리(대분류)
데이터: 주문라인상태이력(세부 엔터티)

권장 예:

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
프로세스: 주문 접수 / 결제 확정 / 출고 처리 / 주문 취소
데이터: 주문 / 주문라인 / 결제 / 재고 / 주문상태이력

대분류 프로세스와 세부 엔터티를 섞으면 한 행에 CRUD가 과밀하게 보이고 실제 책임을 분석하기 어렵다. 매트릭스를 만들기 전에 프로세스 분해 수준과 논리 엔터티 수준을 합의한다.

3. 실제 CRUD 매트릭스

다음은 주문 업무의 예다.

프로세스 \ 데이터고객상품주문주문라인재고결제주문상태이력
고객 등록C
상품 마스터 수신CU
주문 접수RRCCRUC
결제 승인RRURCC
출고 처리RURURC
주문 취소RUUUUC
주문 조회RRRRRRR

판독 예

  • 상품 원천의 최초 생성 책임은 외부 시스템에 있고, 내부에는 상품 마스터 수신CU로 나타난다. 외부 원천과 내부 복제본의 생성·갱신 경계를 명시해야 한다.
  • 주문상태이력은 여러 프로세스에서 C만 발생한다. 상태 이력은 보통 과거 행을 수정·삭제하지 않는 설계일 수 있으므로 U·D 부재가 오류는 아니다.
  • 주문 취소가 주문·주문라인·재고·결제·이력을 모두 변경한다. 정상일 수 있지만 트랜잭션 경계, 실패 보상, 책임 과다 여부를 검토해야 한다.
  • 주문 조회는 모든 객체를 읽는다. 단일 화면이 정말 전부 필요한지, 조회 모델이 과도하게 결합됐는지 확인한다.

4. 이상 징후와 판정 원칙

4.1 빈 열: 어떤 프로세스도 다루지 않는 데이터

가능한 원인:

  • 모델에만 남은 미사용·중복 엔터티
  • 누락된 배치·인터페이스·수기 프로세스
  • 분석 범위 밖 데이터
  • 감사·보존용으로 일반 프로세스가 직접 사용하지 않는 데이터

빈 열은 즉시 삭제 대상이 아니라 존재 근거를 확인하는 신호다.

4.2 빈 행: 데이터를 전혀 다루지 않는 프로세스

  • 순수 계산·승인·외부 호출 프로세스일 수 있다.
  • 프로세스 정의가 너무 상위 수준이거나 실제 데이터 접점이 누락되었을 수 있다.
  • 산출 데이터가 모델에 빠졌을 수 있다.

4.3 C 부재

  • 외부 시스템이 생성하고 내부는 조회·갱신만 하는 마스터일 수 있다.
  • 초기 일괄 적재 후 신규 생성이 없는 기준 데이터일 수 있다.
  • 실제 생성 프로세스가 누락되었을 수 있다.

따라서 C 없음=오류가 아니라 생성 경계와 원천을 확인한다.

4.4 R 부재

  • 보존·감사용 이력으로 운영 프로세스가 직접 조회하지 않을 수 있다.
  • 생성되지만 사용되지 않는 불필요 데이터일 수 있다.
  • 보고·감사·복구 프로세스가 범위에서 빠졌을 수 있다.

4.5 과도한 CUD와 책임 분산

  • 한 프로세스가 너무 많은 핵심 엔터티를 생성·수정하면 거대한 트랜잭션과 결합 위험이 있다.
  • 하나의 핵심 엔터티를 여러 프로세스가 서로 다른 규칙으로 U하면 변경 책임이 분산될 수 있다.
  • 반대로 업무상 원자적 처리라면 여러 객체의 동시 갱신이 정당할 수 있다.

판정에는 업무 트랜잭션, 소유권, 실패 처리와 일관성 요구가 필요하다.

5. 작성·검증 절차

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
프로세스·데이터 객체 범위와 수준 확정
  ↓
요구서·화면·인터페이스·배치·운영절차에서 CRUD 근거 수집
  ↓
각 셀에 CRUD와 근거 문서·규칙 기록
  ↓
빈 행·빈 열·C/R 부재·과밀 CUD·다중 변경 책임 탐지
  ↓
외부 원천·범위 제외·보존 정책으로 설명 가능한지 판정
  ↓
누락 프로세스·엔터티·관계·경계 수정
  ↓
수정된 모델과 매트릭스를 재대조

6. 사례: 생성 주체가 없는 코드 엔터티

매트릭스에서 배송상태코드는 모든 프로세스가 R만 하고 C·U·D가 없다.

가능한 결론은 세 가지다.

  1. 외부 표준코드 시스템이 생성·배포하므로 코드 동기화 프로세스가 누락되었다.
  2. 배포 파일로만 관리하는 고정 코드라서 운영 CRUD 범위 밖이다.
  3. 실제로는 더 이상 사용되지 않지만 모델에 남았다.

결론을 내리려면 코드 원천·배포 방식·변경 책임·최근 사용 SQL을 확인한다. CRUD 문자의 부재만으로 삭제하거나 신규 프로세스를 만들면 안 된다.

7. 비교와 구분

검증 도구중심 질문CRUD 매트릭스와의 차이
요구 추적표요구가 어떤 모델·기능에 반영됐는가?요구-산출물 대응 중심
CRUD 매트릭스프로세스가 데이터를 어떻게 다루는가?데이터 생명주기·책임 교차 중심
상태 전이표어떤 상태에서 어떤 상태로 이동하는가?상태 규칙 중심
데이터 흐름도데이터가 어디서 어디로 이동하는가?흐름·저장소·외부 경계 중심
권한 매트릭스누가 어떤 작업을 허용받는가?보안 주체·권한 중심

시험 판단 포인트

  • 프로세스와 데이터 객체의 분석 수준을 맞춰야 매트릭스가 의미 있다.
  • C가 없는 데이터는 외부 생성·기준 데이터·프로세스 누락을 구분한다.
  • D가 없는 이력·마스터가 반드시 결함인 것은 아니다.
  • 빈 행·열과 과밀 셀은 결함 확정이 아니라 조사 우선순위를 알려주는 신호다.
  • CRUD 결과는 모델·프로세스 경계·트랜잭션 책임 수정으로 연결되어야 한다.

자주 틀리는 부분

  • 모든 엔터티가 C·R·U·D 네 작업을 모두 가져야 완전하다고 본다.
  • 외부 인터페이스·배치·운영자 보정 프로세스를 제외한다.
  • 대분류 프로세스와 세부 엔터티를 섞어 과밀 행을 만든다.
  • 셀의 대표 문자 하나만 보고 실제 CR·RU 결합을 잃는다.
  • 매트릭스를 채운 뒤 모델·업무 경계에 수정 결과를 반영하지 않는다.
스스로 확인하기

개념 확인 문제

문제를 누르면 바로 아래에서 정답과 해설을 확인할 수 있습니다.

01객관식 CRUD 매트릭스에서 한 엔터티 열에 R만 있고 C·U·D가 없다. 가장 적절한 첫 조치는? A. 엔터티를 즉시 삭제한다. B. 모든 프로세스에 CUD를 임의로 추가한다. C. 외부 원천·고정 기준 데이터·보존 데이터·프로세스 누락 여부를 확인한다. D. PK를 제거한다.
정답 및 해설

상품의 생성·변경 주체가 없다. 외부 상품 마스터 수신 프로세스가 범위에서 빠졌는지 확인한다.

02객관식 매트릭스의 품질을 가장 크게 떨어뜨리는 구성은? A. 프로세스와 엔터티의 분석 수준을 맞춘다. B. 온라인·배치·인터페이스를 포함한다. C. 상위 프로세스 한 개와 매우 세부적인 수십 개 엔터티를 교차시켜 한 행에 CRUD를 몰아넣는다. D. 각 셀의 근거 요구사항을 기록한다.
정답 및 해설

주문상태이력은 C와 R만 있다. 추가형 이력 정책이라면 정상이며 정정·보존 규칙을 확인한다.

03참·거짓 “이력 엔터티에 U와 D가 없으면 CRUD 불균형이므로 반드시 수정·삭제 프로세스를 추가해야 한다.”
정답 및 해설

주문취소가 주문만 U하고 주문라인·재고·결제 데이터가 축에 없다. 실제 취소 영향 데이터가 모델 또는 매트릭스에서 누락되었는지 확인한다.

04매트릭스 판독 다음 축약 매트릭스를 보고 최소 두 가지 검토 사항을 제시하시오. | 프로세스 \ 데이터 | 상품 | 주문 | 주문상태이력 | |---|---|---|---| | 주문접수 | R | C | C | | 주문취소 | R | U | C | | 주문조회 | R | R | R |
정답 및 해설

주문 상태가 주문 엔터티와 이력 양쪽에 있다면 현재상태와 이력의 동기화 규칙을 검토한다.

05작성 문제 “회원가입은 회원과 기본배송지를 만들고, 주문접수는 회원·상품을 조회해 주문과 주문라인을 만들며 재고를 감소시킨다. 상품은 외부 마스터에서 수신한다.” 요구를 CRUD 매트릭스로 작성하시오.
정답 및 해설

모범 답안

프로세스 \ 데이터회원기본배송지상품주문주문라인재고
회원가입CC
상품마스터수신CU
주문접수RRCCU

추가 확인:

  • 재고 행이 상품 생성 시 함께 C되는지 별도 재고초기화 프로세스가 필요한지 확인한다.
  • 주문접수에서 기본배송지를 사용한다면 R을 추가한다.
  • 상품의 최초 C가 외부에서 발생하고 내부 수신은 CU라는 범위 설명을 남긴다.
  • 실제 재고 차감이 읽기 후 수정이라면 셀을 RU로 표기할 수 있다.