어떤 문서는 살리는 것이 답이 아니다. 잘 죽이는 것이 답이다.
지난 편에서 내부용 정의서를 거짓말하지 않는 살아있는 문서로 만들었습니다. 이번 편은 정반대입니다. 그 문서를 SI 납품용으로 변환합니다. 납품용은 살릴 수 없는 문서, 처음부터 화석이 운명인 문서입니다. 마지막 과제는 그 죽음을 부정하지 않고 인정하는 것입니다.
살릴 수 없는 문서
ep.06의 살아있는 문서는 코드와 한 저장소에 살며 계속 갱신됐습니다.
그러나 SI 납품용 정의서는 그렇게 둘 수 없습니다. 특정 시점에 산출물로 제출되고, 그 시점이 계약과 검수의 기준이 되기 때문입니다. 제출 이후에도 계속 바뀐다면 무엇을 검수했는지가 불분명해집니다.
그래서 납품용 정의서는 화석이 될 수밖에 없습니다. 여기서 중요한 태도 전환이 일어납니다. 화석을 거짓말처럼 막아야 할 실패로 보지 않고, 납품이라는 행위의 본질로 받아들이는 것입니다. 박제임을 인정하면, 박제를 잘하는 방법에 집중할 수 있습니다.
추적성: 끊긴 곳이 없어야 한다
납품용 정의서의 심장은 추적성입니다. 모든 요구사항이 어떤 설계로 충족되고 어떤 테스트로 검증되는지가 끊김 없이 이어져야 합니다.
내부용에서는 ADR이 “왜 그렇게 했나”의 일지였습니다. 납품용에서는 같은 ADR이 추적표의 한 칸이 됩니다.
요구사항 REQ-001이 ADR-003으로 충족되고 TC-AV-01로 검증된다는 연결이 명시되어야, 감리원이 “이 요구사항은 어떻게 충족됩니까”라고 물을 때 답할 수 있습니다.
살아있는 문서를 화석으로
변환은 무언가를 더하고 무언가를 고정하는 작업입니다.
더하는 것은 증빙입니다.
버전과 승인 이력은 “누가 언제 이 문서를 책임졌는가”를 남기고, 내부용에서 생략했던 섹션을 모두 채웁니다. 비어 있는 칸은 내부용에서는 합리적 생략이지만 납품용에서는 누락입니다. 고정하는 것은 시점입니다. 코드에서 생성하던 다이어그램도 제출 시점 스냅샷으로 정돈해 박제하고, append-only 로그였던 ADR은 결론 중심 목록으로 정리합니다.
공공 SI라는 맥락
납품용 정의서가 화석이어야 하는 이유는 공공 SI의 제도적 맥락에서 더 분명해집니다.
공공부문 정보시스템은 표준 기반 위에서 구축됩니다.
전자정부 표준프레임워크(eGovFrame)는 행정기관·공공기관 정보시스템 구축의 표준 기반 기술로, 2009년 개발된 이후 지속적으로 보급되어 온 공공부문 대표 개발 프레임워크입니다. 이 프레임워크는 행정안전부와 한국지능정보사회진흥원(NIA)이 주관합니다. 2025년에는 신규 버전 5.0이 공개되었습니다.
산출물의 적정성은 감리로 점검됩니다.
전자정부법에 따라 일정 규모 이상의 공공 정보화 사업은 정보시스템 감리를 의무적으로 받아야 합니다. 감리의 근거는 행정안전부가 고시한 「정보시스템 감리기준」과 「행정기관 및 공공기관 정보시스템 구축·운영 지침」 등입니다. 종료 단계 감리에서는 요구사항별로 적합·부적합·점검제외를 판정하고, 부적합이나 점검제외로 분류된 항목은 시정조치를 거치며, 그래도 해소되지 않으면 발주자가 검수 단계에서 판단합니다.
이 구조가 납품용 정의서의 성격을 결정합니다.
정의서는 특정 시점의 산출물로 제출되고, 감리와 검수는 그 시점을 기준으로 적합 여부를 따집니다. 그러니 정의서는 그 시점에 박제되어야 하고, 추적표는 끊긴 곳이 없어야 합니다. (감리 대상 기준이나 적용 절차의 세부는 사업 규모·유형과 관련 고시 개정에 따라 달라질 수 있으므로, 실제 사업에서는 해당 시점의 전자정부법령과 고시를 확인하는 것이 안전합니다.)
SI 납품용 정의서 목차
위 원칙을 목차로 옮기면 이렇습니다.
ep.06의 내부용 목차와 같은 재료를 쓰지만, 문서 정보와 추적표와 인수인계가 더해지고 모든 섹션이 채워집니다.
# 스폿(Spot) 아키텍처 정의서 (납품용)
문서 정보
- 버전 / 작성일 / 작성자 / 검토자 / 승인자
- 변경 이력 (버전별 일시 · 내용 · 승인)
1. 개요 (목적 · 범위 · 용어 정의)
2. 시스템 개요와 제약
3. 요구사항
- 기능 요구사항
- 비기능 요구사항 (NFR, ID 부여)
4. 아키텍처 뷰 (제출 시점 스냅샷)
- 컨텍스트 / 컨테이너 / 컴포넌트 (C4 L1부터 L3)
- 런타임 뷰 / 배포 뷰
5. 아키텍처 결정 (ADR 요약 목록 + 근거)
6. 횡단 관심사 (보안 · 개인정보 준수 포함)
7. 요구사항 추적표 (REQ ↔ 설계 ↔ 테스트)
8. 인수인계 및 운영 이관 사항
부록. 자동 생성 산출물 (API 명세 / 스키마 / 의존성)
화석을 닫다
이렇게 첫 번째 죽음, 화석을 닫습니다. 거짓말을 막을 때와는 정반대 방법입니다. 거짓말은 문서를 살려서 닫았고, 화석은 죽음을 인정해서 닫습니다.
그리고 화석은 끝이 아닙니다. 잘 만든 납품용 정의서는 인수인계의 출발점이 됩니다.
유지보수·운영팀이 그 화석을 넘겨받아 자기 저장소에 옮기고, ep.06의 원칙으로 다시 살아있는 문서로 운영하기 시작합니다.
내부용에서 살아 있던 문서가 납품용에서 화석이 되었다가, 인수인계를 통해 또 다른 살아있는 문서로 다시 태어납니다.
시리즈를 닫으며
여덟 편을 관통한 질문은 하나였습니다. 아키텍처 정의서는 왜 그렇게 자주 쓸모를 잃는가.
답은 정의서가 두 가지로 죽기 때문이었습니다. 납품용은 시점에 고정되어 화석이 되고, 내부용은 코드와 어긋나 거짓말이 됩니다. 그래서 우리는 문서를 독자와 수명이라는 두 축으로 다시 보고, 표준(42010·arc42·C4·ADR)이라는 공통 도구를 익히고, 드라이버에서 뷰와 결정과 횡단 관심사로 재료를 쌓은 뒤, 같은 재료로 두 개의 정의서를 만들었습니다.
내부용은 거짓말할 자리를 없애 살렸고, 납품용은 죽음을 인정해 박제했습니다. 정의서는 두 번 다 죽지만, 두 죽음을 각자의 방식으로 닫으면 문서는 끊기지 않고 다음 사람에게 이어집니다.
좋은 정의서는 영원히 사는 문서가 아니라, 잘 죽고 잘 이어지는 문서입니다.
참고 자료
- 전자정부 표준프레임워크 오픈커뮤니티. https://open.egovframe.org
- 행정안전부. 「정보시스템 감리기준」(고시) / 「행정기관 및 공공기관 정보시스템 구축·운영 지침」.
- 전자정부법 및 같은 법 시행령 (정보시스템 감리 관련 조항).
- ISO/IEC/IEEE 42010. Systems and software engineering — Architecture description.
- Michael Nygard. (2011). Documenting Architecture Decisions.