Spike 정의
Spike는 소프트웨어 개발(특히 애자일 방법론)에서 불확실성 해소를 위해 사용하는 탐색적 작업입니다.
Spike는 문제를 빠르게 분석하거나 기술적 가능성을 확인하기 위해 제한된 시간 동안 짧게 실행하는 실험이나 연구를 의미합니다.
Spike의 목적은 완벽한 솔루션을 만드는 것이 아니라 “이게 가능한지?”, “어디가 어려운지?”, “어떤 접근법이 적합한지?” 를 알아내는 것입니다.
Spike의 주요 특징
- 짧은 시간 안에 진행 (보통 하루~몇 일)
- 정해진 목표나 문제에 집중
- 코드, 설계, 실험 등을 통해 “모르는 것”을 밝혀내고, 배운 점을 기록
- Spike 결과물은 프로덕션 코드가 아닌 지식과 문서화가 목적
Spike 예시
Spike 주제 | 목표 | 결과 (예시) |
---|---|---|
새로운 라이브러리 성능 검토 | 특정 기능 구현에 사용할 라이브러리의 성능과 사용성 확인 | 라이브러리는 속도가 느리고, 메모리 사용량이 높음. 다른 대안 필요. |
기술 스택 변경 검토 (e.g. Flutter 도입) | 기존 시스템에 Flutter 적용 가능 여부 확인 및 리스크 파악 | Flutter는 일부 기능 구현에 적합하지만, 현재 요구사항에는 부적합. |
대규모 데이터 처리 방식 테스트 | 데이터 처리량 증가 시 성능 저하 여부 확인 | 현재 아키텍처로는 100만건 이상 처리 시 병목 발생. 아키텍처 변경 필요. |
Spike의 핵심
Spike는 “모르던 것을 알기 위해 하는 실험” 이며, 실패해도 괜찮습니다.
결과를 빠르게 공유하고, 다음 단계로 넘어갈 수 있는 지식과 인사이트를 제공하는 것이 목적입니다.
프로덕트 오너(PO)나 팀은 Spike 결과를 보고 프로젝트 방향을 결정하거나, 실제 작업에 대한 스토리를 작성할 수 있어야 합니다.