107 lines
4.5 KiB
JSON
Executable File
107 lines
4.5 KiB
JSON
Executable File
{
|
|
"version": "1.1",
|
|
"id": "production-vs-optin",
|
|
"title": "app-bootstrap의 main 클래스패스에는 어댑터 11개가 포함되고 참조 어댑터 3개는 의존 목록 밖에 있다",
|
|
"question": "app-bootstrap의 main 프로젝트 의존에 포함된 어댑터와 의존 목록 밖의 opt-in 참조 어댑터는 어떻게 구분되는가?",
|
|
"type": "concept",
|
|
"direction": "LR",
|
|
"audience": [
|
|
"멀티모듈 Spring Boot 애플리케이션 설계자",
|
|
"클린 아키텍처 구현 독자"
|
|
],
|
|
"summary": "main 프로젝트 의존은 어댑터 11개를 클래스패스에 올리고, grpc·graphql·websocket 세 참조 어댑터는 의존성을 선언하지 않는 방식으로 opt-in한다.",
|
|
"alt": "왼쪽의 app-bootstrap main 의존 포함 어댑터 11개와 오른쪽의 main 의존 목록 밖 grpc·graphql·websocket 세 개를 비교한 그림. 클래스패스 구성 비교이며 활성 빈 수를 뜻하지 않는다.",
|
|
"long_description": "왼쪽 비교 항목은 app-bootstrap의 main 프로젝트 의존에 포함되어 main 클래스패스에 들어오는 어댑터 11개를 나타낸다. 클래스패스 포함과 실제 빈 활성화는 별개이며 런타임 조건이 활성화를 추가로 결정한다. 오른쪽 비교 항목은 현재 main 의존 목록에 없는 grpc, graphql, websocket 세 참조 어댑터를 나타낸다. 이 셋은 클래스패스에 등록되면 기본 활성화되므로 의존성 선언을 하지 않는 것이 opt-in 수단이다. 두 수치는 main 의존 선언을 비교한 것이며 실행 시 활성 빈 전체를 측정한 값이 아니다.",
|
|
"source_context": {
|
|
"document": "/home/donghyeon/workspace/ai-tool/topic-arrange/executable-clean-architecture/claridoc-rewrite/document.md",
|
|
"document_sha256": "81fb5cb8cd16eaae6916a0d0f2b3cddfabc39e58a87559466b52f922ca95a95b",
|
|
"anchor": {
|
|
"kind": "marker",
|
|
"value": "production-vs-optin",
|
|
"line": 502
|
|
}
|
|
},
|
|
"composition": {
|
|
"profile": "comparison",
|
|
"diagram_only": true,
|
|
"reference_ids": [
|
|
"contract-comparison"
|
|
],
|
|
"rationale": "본문이 main 프로젝트 의존에 포함된 집합과 의존 목록 밖의 opt-in 집합을 명시적으로 비교하므로, 호출 관계나 시간 순서를 만들지 않고 같은 필드로 두 집합을 정렬하는 비교 문법이 독자의 질문에 가장 직접적으로 답한다."
|
|
},
|
|
"groups": [],
|
|
"nodes": [
|
|
{
|
|
"id": "main-classpath-adapters",
|
|
"label": "main 의존 포함 · 11",
|
|
"kind": "concept",
|
|
"role": "option",
|
|
"description": "app-bootstrap의 main 프로젝트 의존에 포함되어 main 클래스패스에 들어오는 어댑터 집합",
|
|
"details": [
|
|
"수량: 11개",
|
|
"프로젝트 의존: 선언됨",
|
|
"클래스패스: 포함",
|
|
"어댑터: 포함 대상 11개",
|
|
"활성화: 클래스패스와 별도",
|
|
"측정 범위: main 의존 선언"
|
|
],
|
|
"emphasis": "primary",
|
|
"evidence": [
|
|
{
|
|
"start_line": 449,
|
|
"end_line": 456
|
|
},
|
|
{
|
|
"start_line": 476,
|
|
"end_line": 480
|
|
},
|
|
{
|
|
"start_line": 500,
|
|
"end_line": 501
|
|
},
|
|
{
|
|
"start_line": 517,
|
|
"end_line": 517
|
|
}
|
|
],
|
|
"assumption": false
|
|
},
|
|
{
|
|
"id": "omitted-optin-adapters",
|
|
"label": "main 의존 목록 밖 · 3",
|
|
"kind": "concept",
|
|
"role": "option",
|
|
"description": "저장소에는 있지만 app-bootstrap의 main 프로젝트 의존에는 선언되지 않은 참조 어댑터 집합",
|
|
"details": [
|
|
"수량: 3개",
|
|
"프로젝트 의존: 선언하지 않음",
|
|
"클래스패스: 제외",
|
|
"어댑터: grpc · graphql · websocket",
|
|
"활성화: 등록하면 기본 활성",
|
|
"측정 범위: main 의존 선언"
|
|
],
|
|
"emphasis": "warning",
|
|
"evidence": [
|
|
{
|
|
"start_line": 481,
|
|
"end_line": 489
|
|
},
|
|
{
|
|
"start_line": 500,
|
|
"end_line": 501
|
|
},
|
|
{
|
|
"start_line": 517,
|
|
"end_line": 517
|
|
}
|
|
],
|
|
"assumption": false
|
|
}
|
|
],
|
|
"edges": [],
|
|
"legend": [],
|
|
"metadata": {
|
|
"rationale": "14개 어댑터를 각각 카드로 반복하면 비교 필드가 흐려지고 밀도 예산을 넘으므로, 두 집합을 수량·의존 상태·클래스패스 상태·활성화 의미·측정 범위로 정렬했다."
|
|
}
|
|
}
|