본문으로 건너뛰기
애자일 소프트웨어 개발에서 스파이크 이해하기
  1. Posts/

애자일 소프트웨어 개발에서 스파이크 이해하기

· 905 · 0 ·
인재덕
작성자
인재덕
A Kiwi living in Korea

애자일 개발에서 팀은 추정만으로는 답할 수 없는 질문에 정기적으로 직면합니다. GraphQL과 REST 중 어떤 것을 사용해야 할까? 시스템이 10,000명의 동시 사용자를 처리할 수 있을까? 이 서드파티 라이브러리가 프로덕션 환경에 적합할까? 이러한 순간에 스파이크가 매우 가치 있습니다.

스파이크란 무엇인가?
#

“스파이크"라는 용어는 익스트림 프로그래밍(XP)에서 유래했으며, “잠재적인 솔루션을 탐색하기 위한 매우 간단한 프로그램"을 의미했습니다. 이것은 문제에 못을 박는 것과 같습니다—자신 있게 앞으로 나아가는 데 필요한 지식을 얻기 위한 집중적이고 시간 제한이 있는 노력입니다.

스파이크는 고객 가치를 제공하는 사용자 스토리가 아닙니다. 대신, 다음을 위해 설계된 조사 작업입니다:

  • 특정 기술적 또는 기능적 질문에 답하기
  • 접근 방식에 커밋하기 전에 불확실성 줄이기
  • 더 정확한 추정을 위한 데이터 제공

스파이크의 산출물은 지식이며, 작동하는 소프트웨어가 아닙니다. 이 구분은 적절한 백로그 관리와 스프린트 계획에 중요합니다.

스파이크의 유형
#

두 가지 주요 스파이크 유형을 이해하면 팀이 적절하게 적용할 수 있습니다:

기술 스파이크는 구현 접근 방식을 탐색합니다:

  • 프레임워크나 라이브러리 평가
  • 아키텍처 패턴 프로토타이핑
  • 특정 조건에서의 성능 테스트
  • 외부 시스템과의 통합 복잡성 조사

기능 스파이크는 사용자 요구사항을 탐색합니다:

  • 모호한 사용자 스토리 명확화
  • 사용자 행동에 대한 가정 검증
  • 프로토타입을 사용한 UI/UX 접근 방식 테스트
  • 도메인 복잡성 이해

스파이크가 중요한 이유
#

불확실성 해결: 복잡한 프로젝트에서 상당한 미지수가 있는 작업을 추정하려고 하면 부풀려진 추정이나 마감일 누락으로 이어집니다. 스파이크는 “모르겠다"를 실행 가능한 정보로 변환하여 팀이 자신 있게 약속할 수 있게 합니다.

의사 결정 정보 제공: 아키텍처 결정이나 기술 선택에 직면했을 때, 스파이크는 의견이 아닌 증거를 제공합니다. 결과는 의사 결정 문서에 직접 반영되어 선택이 실습 조사에 의해 뒷받침되도록 합니다.

리스크 감소: 사전에 작고 제한된 시간을 투자함으로써 팀은 나중에 비용이 많이 드는 방향 전환을 피할 수 있습니다. 라이브러리의 제한을 밝히는 2일 스파이크는 개발이 3스프린트 진행된 후 같은 문제를 발견하는 것보다 훨씬 저렴합니다.

추정 정확도 향상: 익숙하지 않은 작업의 스토리 포인트는 종종 추측입니다. 스파이크 후에 팀은 복잡성, 의존성 및 잠재적 장애물에 대한 실제 데이터로 추정할 수 있습니다.

스파이크를 사용해야 할 때
#

스파이크가 적절한 경우:

  • 기술적 미지수로 인해 팀이 스토리를 자신 있게 추정할 수 없음
  • 여러 실행 가능한 솔루션이 존재하고 선택에 데이터가 필요함
  • 새로운 기술, 프레임워크 또는 통합이 고려되고 있음
  • 성능 특성이 불확실하고 중요함
  • 이해관계자 논의에도 불구하고 요구사항이 모호함

스파이크가 적절하지 않은 경우:

  • 팀이 이미 수행 방법을 알고 있는 작업
  • 기존 정보로 결정할 수 있는 것을 지연시킴
  • 적절한 요구사항 수집이나 사용자 수용 테스트를 대체함

스파이크 수행을 위한 프레임워크
#

1. 정의

  • 제목: 명확하고 질문 중심의 이름 (예: “세션 스토리지를 위한 Redis 대 Memcached 평가”)
  • 목표: 답해야 할 구체적인 질문—“캐싱 조사"가 아니라 “Redis 클러스터가 50ms 지연 요구사항을 충족할 수 있는지 판단”
  • 범위: 조사 대상과 조사하지 않을 것에 대한 명시적 경계
  • 타임박스: 일반적으로 1-3일; 더 필요하면 스파이크가 너무 넓을 수 있음
  • 성공 기준: 스파이크가 목표를 달성했음을 어떻게 알 수 있는지

2. 조사 및 탐색

  • 데이터 수집: 문서, 사례 연구 및 기존 구현 검토
  • 프로토타이핑: 최소한의 개념 증명 코드 구축—일회용, 프로덕션용 아님
  • 상담: 전문가, 벤더 또는 커뮤니티 포럼과 협력
  • 실험: 실제 코드와 측정으로 가설 테스트

3. 문서화

  • 결과: 가능한 경우 데이터가 포함된 구체적인 결과
  • 권장사항: 근거가 포함된 명확한 다음 단계
  • 리스크 및 과제: 식별된 장애물과 완화 전략
  • 코드/산출물: 프로토타입 링크 (프로덕션 코드가 아닌 스파이크 출력으로 명확히 표시)

4. 검토

  • 프레젠테이션: 팀과 이해관계자에게 결과 공유
  • 피드백: 질문과 대안적 관점 수집
  • 백로그 조정: 결과를 바탕으로 스토리 생성, 수정 또는 제거

5. 종료

  • 통합: 향후 참조를 위해 지식이 기록되었는지 확인
  • 회고: 다음 회고에서 스파이크 프로세스 자체 반성

스파이크 템플릿
#

## 스파이크: [제목]

**타임박스**: [X일]
**담당자**: [이름]
**스프린트**: [스프린트 번호/이름]

### 답해야 할 질문
[이 스파이크가 답할 단일 집중 질문]

### 배경
[이 스파이크가 필요한 이유; 불확실성의 촉발 요인]

### 가정
- [가정 1]
- [가정 2]

### 범위
**범위 내**:
- [항목 1]
- [항목 2]

**범위 외**:
- [항목 1]

### 성공 기준
- [ ] [기준 1]
- [ ] [기준 2]

### 결과
[스파이크 중 완료 예정]

### 권장사항
[스파이크 후 완료 예정]

### 후속 스토리
- [ ] [스토리 1]
- [ ] [스토리 2]

스파이크에서 가정의 역할
#

모든 스파이크는 조사를 프레이밍하는 기본 신념인 가정으로 시작합니다. 이를 명시적으로 만드는 것은 여러 목적을 수행합니다:

  • 맥락 설정: 이해관계자가 출발점을 이해
  • 편견 드러내기: 조사가 시작되기 전에 가정에 도전 가능
  • 노력 집중: 스파이크는 목적 없이 탐색하지 않고 가정을 테스트
  • 결과 명확화: 결과는 명시된 가정에 대해 해석됨

예를 들어, 데이터베이스 선택에 관한 스파이크는 “우리의 데이터 모델은 주로 관계형이다"와 “읽기 작업이 쓰기를 10:1로 초과한다"고 가정할 수 있습니다. 이러한 가정이 조사 중에 잘못된 것으로 판명되면, 그 자체가 가치 있는 발견입니다.

흔한 함정
#

범위 확대: 스파이크는 특정 질문에 답해야 하며, 개방형 연구 프로젝트가 되어서는 안 됩니다. 새로운 질문이 등장하면 현재 것을 확장하지 말고 향후 스파이크를 위해 문서화하세요.

프로토타입 과잉 제작: 스파이크 코드는 버리기 위한 것입니다. 스파이크 코드에 오류 처리나 테스트를 추가하기 시작하면, 탐색에서 구현으로 넘어간 것일 수 있습니다.

문서화 건너뛰기: 스파이크의 가치는 즉각적인 결정을 넘어 확장됩니다. 유사한 질문에 직면한 미래의 팀원들은 기록된 결과로부터 혜택을 받습니다.

스파이크를 약속으로 취급: 접근 방식이 작동하지 않는다는 것을 밝히는 스파이크는 성공입니다. 목표는 학습이지 미리 정해진 답을 검증하는 것이 아닙니다.

스프린트 계획에 스파이크 통합
#

스프린트를 계획할 때 고려할 사항:

  • 추정 전에 스파이크: 스토리에 상당한 미지수가 있으면 현재 스프린트에서 스파이크를 예약하고 실제 작업은 향후 스프린트에서
  • 동시 스파이크 제한: 여러 스파이크는 초점을 희석시킴; 스프린트당 하나 또는 두 개가 일반적으로 충분
  • 스파이크에 포인트 부여하지 않음: 스파이크는 작동하는 소프트웨어가 아닌 지식을 생성하므로, 많은 팀이 스토리 포인트 대신 타임박스로 추적
  • 리파인먼트에 스파이크 결과 포함: 팀이 관련 스토리를 추정하기 전에 스파이크 결과 발표

결론
#

스파이크는 불확실성을 불안의 원천에서 학습 기회로 변환합니다. 이것은 소프트웨어 개발의 근본적인 진실을 인정합니다: 우리는 종종 조사할 때까지 모르는 것을 모릅니다.

적절히 사용되면 스파이크는 팀이 정보에 입각한 기술적 결정을 내리고, 정확한 추정을 제공하며, 비용이 많이 드는 프로젝트 중간 방향 전환을 피할 수 있게 합니다. 이것은 변화에 대응한다는 애자일 원칙을 구현합니다—행동에 커밋하기 전에 이해에 투자함으로써.

다음에 팀이 답보다 더 많은 질문을 생성하는 스토리에 직면했을 때, 스파이크가 할 수 있는 가장 가치 있는 작업일 수 있는지 고려하세요. 때때로 앞으로 나아가는 가장 빠른 길은 멈추고 배우는 것입니다.

추가 읽기
#

이 사이트의 관련 기사:

외부 리소스:

Buy Me A Coffee
undefined