아키텍처 패턴
TypeSafe를 사용하여 시스템 아키텍처를 구축하는 패턴. '이산적 원자적 의사결정'으로 사고하는 법을 익히는 것이 그 모든 가치를 발휘하는 핵심입니다.
이 문서는 zh-CN에서 기계 번역되었으며 교정되지 않았습니다. 빠른 참고용으로만 사용하세요.

핵심 철학
TypeSafe는 더 큰 시스템에 내장되어 의사결정을 수행하도록 설계되었습니다. 핵심 기술은 이산적이고 원자적인(decisive) 의사결정으로 사고한 후, 이러한 결정들을 조합하여 복잡한 시스템 동작을 구현하는 것입니다.
이는 한 번의 호출로 복잡한 비즈니스 문제를 해결하려고 시도하지 말고, 여러 독립적인 판단으로 분할한 후 자신의 코드로 이를 조합해야 함을 의미합니다. 코드 내의 조합 로직은 결정론적이고, 테스트 가능하며, 조정 가능합니다. 이것이 바로 신뢰성의 근원입니다.
이 섹션을 읽기 전에 프러미티브(원리)와 신뢰도를 먼저 이해하십시오.
네 가지 패턴
| 패턴 | 기능 | 이점 |
|---|---|---|
| 팬아웃 병렬 처리 | 한 번의 호출로 많은 수의 질문(추측성 포함)을 전송하고, 코드가 관련성이 있는 것만 선택 | 비용, 속도 |
| 신뢰도 라우팅 | 신뢰도를 두 번째 의사결정 축으로 사용하여 더 안전한 시스템 구축 | 신뢰성, 안전성 |
| 복합 점수화 | 여러 분석 차원을 단일 점수로 통합 | 비용, 신뢰성, 속도 |
| 의도 라우팅 | 사용자 의도를 분류하여 적절한 처리기로 라우팅 | 비용, 속도 |
패턴의 상호작용
이 네 가지 패턴은 상호 배타적인 선택지가 아니라, 중첩하여 사용할 수 있는 구성 요소입니다. 일반적인 프로덕션 시스템에서는 여러 패턴을 동시에 사용합니다:
사용자 요청
│
├─ [의도 라우팅] 먼저 요청 유형을 판별 ─────────────┐
│ │
├─ [팬아웃 병렬 처리] 필요한 모든 판단을 한 번에 질문 ─┤
│ │
├─ [복합 점수화] 후보 결과를 다차원 점수로 정렬 ─────┤
│ │
└─ [신뢰도 라우팅] 높은 신뢰도는 자동 실행 / 낮은 신뢰도는 수동 처리 ┘
의도 라우팅은 일반적으로 가장 앞에 위치하며, 이는 이후에 어떤 처리 경로가 필요한지를 결정하기 때문입니다. 팬아웃 병렬 처리는 문제 패키징을 한 번의 호출로 수행할 때 추가 지연 비용이 거의 발생하지 않으므로 전반적으로 적용됩니다. 복합 점수화는 정렬이 필요한 경우에 사용됩니다. 신뢰도 라우팅은 마지막 관문으로, 결과를 자동 실행할지 아니면 수동 처리로 승격할지 결정합니다.
설계 원칙
원자적 분할. 각 질문은 한 가지 일만 물어봐야 합니다. “한 번에 묻는 것이 더 편해 보인다”는 복합적인 질문은 모델이 어느 부분에서 오류를 발생시켰는지 판단할 수 없게 하며, 개별적으로 조정할 수도 없게 만듭니다.
코드는 조합을 담당하고, 모델은 판단을 담당. 가중치, 임계값, 분기 로직은 모두 코드에 구현해야 합니다. 이는 당신이 이해하고, 테스트하며, 파라미터를 조정해야 하는 부분입니다.
불확실성을 가시화. 모델이 무리하게 답변을 강요하기보다는, 신뢰도를 사용하여 ’불확실’을 시스템 수준으로 노출하고, 처리 방식을 결정하는 것은 당신의 코드에서 수행해야 합니다.