
커네빈 프레임워크를 현대의 AI 에이전트 기반 개발 및 코드 결합도 관리 학습한것을 생각하고 정리하였습니다.
'Cynefin'은 서식지나 터전을 뜻하는 웨일스어입니다.
본 프레임워크의 핵심 목적은 주어진 컨텍스트에 따라 최적의 전략을 선택하는 것입니다.
이때 컨텍스트를 결정짓는 핵심 기준은 '문제에 대한 이해 가능성'입니다.
문제가 얼마나 명확하게 정의되고 파악되는지에 따라 5가지 영역으로 나뉘며, 각 영역별 문제 해결 전략과 비즈니스 및 개발 영역의 대응 방식이 달라집니다.
[Disorder] (상황 파악 불가 / 가시성 부재)
│
┌──────────────────────────┼──────────────────────────┐
│ │ │
▼ ▼ ▼
[Chaotic] [Complex] [Complicated] [Clear]
답의 부재 실험과 피드백 답의 예측 가능 정답의 존재 확신
(랜덤 시도) (도메인 솔루션) (전문가/AI 탐색) (문제 분류 및 적용)
과거 개발자들은 불확실성을 극도로 경계하며 Clear 영역에만 머무르려 했습니다.
"백엔드 전문이라 프론트는 모릅니다", "CSS는 내 영역이 아닙니다"라는 스탠스는 Clear 영역 밖으로 나가지 않으려는 방어 기제였습니다.
Complicated 문제조차 조직에 인력 추가 모바일 개발자, 백엔드 개발자 채용 를 요구하며 Clear 영역으로 환원시켜 해결하려 했습니다.
그러나 LLM과 AI 에이전트가 도입되면서 개발자의 커버리지가 급격히 확장되었습니다.
[과거 개발자] : Clear (명확한 영역만 담당)
[현대 개발자] : Clear ──► Complicated ──► Complex (AI 파트너십을 통한 실험 영역 진출)
Complicated 영역 흡수: 모르는 프레임워크나 API라도 AI가 답을 찾아 해결해 주기 때문에, 개발자는 전문가 채용 없이도 즉시 타 영역 개발에 착수합니다.
Complex 영역 진출: AI를 '실험 파트너'로 삼아 가설을 빠르게 프로토타이핑하고, 기존 기획자의 전유물이던 도메인 탐색 및 실험 영역까지 개발자가 주도하기 시작했습니다.
소프트웨어 엔지니어링 시각에서 '문제 이해력'은 곧 '코드 수정에 따른 여파의 이해력'으로 정의됩니다.
| 영역 | 변경 여파의 이해 가능성 | 테스트/검증 전략 | 결합도 | 유연성 |
|---|---|---|---|---|
| Clear | 명확함: 수정에 따른 여파가 전혀 없음을 확신함 | 격리된 구조, 안전한 직접 수정 | 매우 낮음 | 낮음 |
| Complicated | 예측 가능: 영향 범위 예측 가능, 컴파일 시점에 검증 가능 | 타 팀/영역과 사전 합의 후 수정, 강타입/컴파일 타임 검증 | 낮음~보통 | 보통 |
| Complex | 예측 불가: 런타임에만 파악 가능한 예외 발생 | 런타임 테스트 안전망 (Harness) 및 실패 시 롤백 | 높음 | 높음 |
| Chaotic | 파악 불가: 안전망 부재, 런타임 여파 복원 불가능 | QA 팀에 의존 또는 폐기 후 재작성 | 극도로 높음 | 극도로 높음 |
Complex 이상부터 발생하는 런타임 에러는 특정 실행 스택만으로 원인 재현이 불가능한 경우가 많습니다.
제어할 수 없는 런타임 문제에 대응하기 위해 테스트 하네스를 구축하지만, 구조적 설계 없이 AI에 의존하여 수정과 테스트를 반복하면 "테스트는 롤백되나 정답 코드로 수렴하지 못하는 무한 루프"에 빠지게 됩니다.
현재 대다수의 바이브 코딩 프랙티스가 저지르는 실수는 Chaotic 상태의 코드를 생산하면서도 이를 검증하는 테스트 코드조차 AI에게 맡겨 Chaotic에 머무르는 것입니다.
AI 시대의 바이브 코딩은 개발자의 영역을 Complex 단계까지 극적으로 확장해 주었습니다.
그러나 프레임워크와 결합도에 대한 주체적인 설계 없이 AI에만 의존하면, 우리의 코드는 결국 관리 불가능한 Chaotic 영역에 갇히게 됩니다.
우리가 시스템을 아키텍처링하고 결합도를 관리해야 하는 이유는 명확합니다.
AI의 높은 유연성을 활용하되, 발생한 결과물을 제어 가능한 Complicated/Clear 영역으로 귀환시켜 지속 가능한 소프트웨어로 안착시키기 위함입니다.