🏗️ 1. 비유로 이해하는 통합 설계 문제
🌰 상황우리는 콩을 분류하고 투입하는 기계를 만든다. 크기 기준으로 분리한다.
✅ 기존 구조
- 2cm 이하로 분류하는 기계 →
2cm 두유콩 넣는 기계
- 1cm 이하로 분류하는 기계 →
1cm 커피콩 넣는 기계
🚫 문제 상황
- 누군가가 요청했다: “
1cm 두유콩 넣는 기계
도 만들어줘”
- 그래서 기존
2cm 두유콩 넣는 기계
를 개조해서1cm
두유콩을 처리하도록 수정함
- 그런데 테스트할 때 이렇게 연결하면 터짐
❌ 2cm 이하 분류 기계 → 1cm 두유콩 넣는 기계
✅ 정상적인 설계
1cm 이하 분류 기계
├─ 1cm 커피콩 넣는 기계
└─ 1cm 두유콩 넣는 기계
📌 핵심 이슈
- *상위 분류 기계(2cm)**는 1cm 두유콩 기계를 잘 다룰 수 없음 → 의존성 불일치
- 이런 구조가 누적되면 **전체 설계가 엉망(스파게티 코드)**이 됨
- 이유? 명확한 규칙 없이 기능만 추가한 결과
🧱 2. 그래서 필요한 것이 아키텍처(설계 기법)
- 문제를 해결하기 위해 설계 규칙이 필요하다
- 구조적으로 명확한 계층 분리와 의존 규칙을 지키자
✔️ 개선된 설계 기준 (예: 크기 계층)
분류 기준 | 처리 대상 |
3cm 이하 분류기 | → 3cm 처리 |
2cm 이하 분류기 | → 2cm 처리 |
1cm 이하 분류기 | → 1cm 처리 |
1cm 이하 분류기 | → 커피콩 / 두유콩 등 |
→ 계층이 명확하고 확장에 안전
💰 3. 비용과 설계 사이의 균형
- 이상적인 설계는 항상 깔끔한 추상화와 분리를 목표로 하지만
- 현실은 예산/시간 제약이 있음
🎯 선택의 기준
상황 | 선택 |
시스템이 크고 유지보수가 길다면 | ✅ 명확한 계층 분리 |
작은 프로젝트이거나 예산 부족 | ✅ 일부 공통 처리 가능 (비용 절감 우선) |
→ "무조건 정답은 없다", 중요한 건 맥락에 맞는 선택
🔁 실무 적용 요약
개념 | 설명 |
통합 테스트 | 여러 구성 요소를 실제 연결해 테스트하는 방식 |
의존성 문제 | 서로 다른 레벨이나 계약이 안 맞으면 실패 가능 |
스파게티 구조 | 규칙 없이 기능만 쌓다 보면 전체 시스템이 복잡해짐 |
아키텍처 설계 | 계층적 분리와 추상화로 안정성 확보 |
유연한 설계 | 명확한 경계 + 필요시 통합 (비용 균형 고려) |
📦 한 줄 요약
"통합 테스트는 설계의 책임과 의존을 검증하는 과정이다. 규칙 없이 연결만 하면 결국 터진다."
✅ 정리 포인트
- 테스트를 잘하려면 좋은 설계가 선행되어야 한다.
- 설계란 결국 의존성 관리이다.
- 추상화와 계층 구조를 도입하고, 테스트할 때도 위에서 아래로 흐름이 맞도록 설계해야 한다.
- 설계에 “절대 정답”은 없고, 돈과 시간에 따라 선택하는 것!
Share article