SAFe®의 ART 를 구성하는 팀 유형

Scaled Agile Framework(SAFe)®에서는 Agile Release Train(ART)를 구성하는 4종류의 기본팀을 Team Topologies 도서에서 인용하고 있습니다. Team Topology의 목적은 팀이 고객의 요구를 제대로 반영하여 소프트웨어를 빠르게 만들고, 구현과 운영 소유가 보다 쉬운 소프트웨어를 제작하도록 돕습니다. 즉, 빠른 업무 플로우를 만드는 조직 설계에 대해 소개하겠습니다.

효과적인 소프트웨어팀은 가치를 계속적이고 지속 가능하게 전달하는 모든 조직에게 필수적입니다. 4개 유형의 기본 팀은 스트림 정렬팀(Stream-aligned team), 활성화팀(Enabling team), 난해한 하위시스템팀(Complicated subsystem team),플랫폼팀(Platform team)으로 구성됩니다. 또한 3가지의 상호작용 방식은 협업(Collaboration), X-as-a-Service, 촉진(Facilitating)으로 구성됩니다. 이를 통해 기본팀은 느슨하게 결합되고 모듈화되어야 소프트웨어 개발팀(스트림 정렬팀)의 상호작용을 단순화하고, 과부하를 제거하여 빠른 업무 플로우를 만드는 조직으로 변경 될 수 있습니다.

1. Agile Release Train(ART)의 구성

ART는 장기간 지속되는 Agile team으로서 이해관계자들과 함께 가치흐름에서 하나 혹은 여러 솔루션을 함께 점진적으로 개발, 배포, 운영하는 virtual한 Long term의 Agile Team이다.

출처 : https://www.scaledagileframework.com/agile-release-train/

2. 기본팀의 4가지 구성

조직내 역할에 존재하는 모호성을 줄이고 가시성을 높이는 것이 현대조직 설계의 핵심 요소입니다. 인지 부하를 줄이고 효과적인 흐름을 만드는 팀을 조직하기 위한 기본 구성의 팀을 소개한다.

2.1. 스트림 정렬팀(Stream-aligned team)

  • Stream이란 비즈니스 도메인이나 조직역량에 맞춘 업무의 지속적 흐름을 의미(고객의 흐름, 비즈니스 영역의 흐름, 제품의 흐름, 법규준수 흐름 등 다양한 stream이 공존)
  • Value의 흐름 중심으로 개발팀이 조직되고, 고객 또는 최종 사용자에게 직접 가치(Value)를 제공(개발)할 수 있는 능력의 팀
  • 고객과 가까이 위치하며 실제환경에서 운영되는 소프트웨어를 모니터링하는 동안 신속하게 고객 피드백을 받고 시스템에 발생하는 문제에 실시간 대응할 수 있으며 업무 방향 및 우선순위를 정할 수 있는 팀
  • 예) 광범위하게 Product Team, Feature Team, Service Team 등으로도 불리우지만, 조직차원으로 Stream에 정렬(align)됨으로써 이익을 얻는다는 의미로 Stream team으로 정의
  • 필요한 역량 : 제품 관리, 사용자 경험, 어플리케이션 보안, 설계 및 아키텍처, 개발, 테스트 및 품질보증, 인프라스트럭처 및 운영, 모니터링

하위 팀들은 스트림 정렬팀의 인지 부하 감소와 제품 개발 가속화를 위한 팀이다.

2.2. 활성화팀(Enabling team)

  • 전문 기능을 갖춘 다른팀(Stream-aligned team)의 부족한 역량 및 장애물 해결을 지원(실험, practice 제공)하고, 새로운 기술에 익숙해지도록 돕는 팀
  • 스트림 정렬팀 본연의 문제에 집중하면서 역량을 향상하도록 돕는 팀
  • 스트림 정렬팀은 활성화팀을 활용하여 적은 노력으로 역량을 획득하고 발전
  • 예) Technical consulting team의 CI/CD, 테스트자동화, Infrastructure, Architecture 등을 담당

2.3. 난해한 하위 시스템팀(Complicated subsystem team)

  • 깊은 전문 지식과 기술이 필요한 시스템의 특정 하위 시스템의 일부를 구축하고 유지하는 팀
  • 스트림 정렬팀의 인지 부하를 줄이는 것이 목표이며, 스트림 정렬팀보다 개발/전달 속도와 품질 향상을 기대
  • 예) 비디오 코덱, 수학계산모델, 실시간거래 조정 알고리즘, 거래보고 시스템, 얼굴인식 엔진 등

2.4. 플랫폼팀(Platform team)

  • 다른 팀(스트림 정렬팀)이 원활하게 제품을 구현하고 지원할 수 있는 플랫폼의 개발 및 지원을 제공하는 팀
  • 플랫폼팀의 주고객은 스트림 정렬팀
  • 예) 하위 레벨 스택(프로비저닝, 모니터링, 배포, 테스트 환경, 네트워크 설정 등)의 세부지식을 담당하고 쉽게 사용할 수 있는 서비스를 제공2. Team Topologies 도서의 권고 사항 설명
  • 과거 인프라스트럭처팀 → 플랫폼팀으로 변환
  • 과거 기술 컴포넌트팀 → 플랫폼팀 또는 난해한 하위시스템팀으로 변환
    - DBA팀을 플랫폼팀으로 전환하여 DB성능, 설정, 가용성 등 서비스를 제공
    - 미들웨어팀을 플랫폼팀으로 전환하여 스트림 정렬팀이 사용하기 쉽게 개선
  • 과거 도구팀 → 활성화팀 또는 플랫폼팀으로 변환
    - 도구팀은 시간이 지남에 따라 Silo한 도구유지보수팀이 되므로 짧은 기간 집중하며 지원하는 활성화팀 또는 로드맵을 가지고 개발하는 플랫폼팀으로 전환

스트림 정렬팀이 빠른 흐름을 달성하기 위해 모든 팀은 느슨하게 결함돼야 하고, 스트림 변화의 흐름에 정렬되어야 하며, 그들이 책임지는 제품과 서비스 및 사용자 경험에서 유용한 증분을 전달할 수 있어야 한다.

3. 팀 상호 작용의 3가지 방식

팀 유형을 조합하면 빠른 흐름의 효과적인 소프트웨어 전달이 가능하다. 이를 위해 효과적으로 팀이 상호작용을 하고, 인지부하를 최소화하는 팀 운영 방법의 이해가 필요하다.

3.1. 협력(Collaboration) 방식

  • 팀행동 : 높은 상호작용과 상호존중
  • 두팀은 공동의 목표를 두고 밀접하게 협업(함께 일하기)
  • 넓은 범위의 공유책임은 있지만 경계는 희미
  • 오버헤드가 발생되지만, 적은 핸드오프
  • 그러나 빠르게 문제가 해결되고, 조직은 빠른 학습 속도에서 큰 가치를 얻음
  • 단, 2개 이상의 팀과 동시에 협력 모드는 지양

3.2. X-as-a-Service 방식

  • 팀행동 : 사용자 경험 공감
  • 팀간 최소한으로 협력
  • 한 팀이 서비스로 제공하는 것(API, 서비스, 도구 등)을 다른 팀이 소비
  • 책임은 명확하게 구분
  • 서비스를 소비하는 팀은 빠르게 소프트웨어 전달 가능
  • 서비스를 제공하는 팀은 해당 서비스가 쉽게 소비되는 방법을 찾음
  • 한팀 보다는 여러 팀과 동시다발적으로 상호작용함

3.3. 촉진(Facilitate) 방식

  • 팀행동 : 도움주고 받기
  • 다른 팀을 코칭/돕고, 다른 팀의 코칭을 받아 장애물 해결
  • 한 팀(일반적으로 활성화팀)은 정해진 시간동안 새로운 접근방식을 다른 팀이 학습하거나 적용하도록 촉진/코칭
  • 코칭을 제공하는 팀은 다른 팀이 빠르게 자급자족 가능하도록 도움
  • 코칭 받는팀은 개방적인 학습 태도 필요

4. 출처

https://youtu.be/haejb5rzKsM?t=825

--

--