Swift 방식

Swift 방식

애자일(Agile) 및 DDD(Domain Driven Design) 원칙을 사용하는 일련의 경량 기법으로, 이를 통해 팀은 충분히 소프트웨어 시스템을 현대화할 만큼의 계획을 수립할 수 있습니다.

단계

킥오프 검색 프레이밍 최적화

제안 시간

포괄적으로 수행하는 경우 2~4일

참가자

비즈니스 이해관계자, 아키텍트, 기술 책임자, 개발자


수행 이유

비즈니스 리더와 기술 담당자의 의견을 조율합니다. 이 접근 방식을 사용하여 시스템을 세분화하고, 시스템이 “동작하기 바라는” 방식과 향후 목표를 매핑하는 개념적인 아키텍처 계획을 개발합니다. VMware는 이렇게 하는 것이 중요한 시스템 현대화에 특히 중요함을 알게 되었습니다. 개발 팀을 조직하는 방법에 관한 결정을 알리고 비즈니스와 기술적인 관점에서 작업의 우선순위를 지정합니다. 현재 상황과 원하는 상태 간의 길을 정의하는 ‘포괄적인’ 방법으로서도 유용합니다.

수행 시기

애플리케이션 현대화 이니셔티브를 반복하는 방식으로 시작합니다. 이는 현재 비즈니스 기능을 신속하게 검토하고 “향후” 아키텍처를 계획하는 간단한 컨설팅 참여가 될 수 있는 App Navigator의 핵심 방법입니다. VMware의 전문가들은 Swift 방법을 실행하여 아키텍처, 경계, 위험이나 우려 지점을 찾아낸 다음 현재 상태에서 미래 상태로 나아갈 방향을 매핑합니다.

필요한 물품

  • 화살표 모양의 접착식 플래그
  • 화이트보드 테이프 - 검정색, 초록색, 빨간색 각각 2롤
  • 가위
  • 스카치 테이프
  • 화이트보드 작업대(90cm x 60cm)
  • 초강력 접착식 4x6 멀티컬러 스티커 메모, 4팩

이 방식을 활용하는 방법

샘플 안건 및 메시지

  1. 비즈니스 및 기술 인력이 이해하는 언어를 사용하여 시스템을 이벤트 스토밍합니다.

  2. 시스템의 기능 간 관계를 모델링하는 Boris 연습을 수행합니다. Boris 중에 식별된 기술적 기능을 실시간으로 문서화하는 SNAP를 수행합니다.

    SNAP 분석

  3. 현대화의 씬 슬라이스를 식별합니다.

    씬 슬라이스는 짧은 도메인 이벤트 흐름입니다. 수직 슬라이스는 핵심 도메인에서 짧은 도메인 이벤트 흐름을 선택하고 해당 이벤트를 생성하기 위해 Boris에서 파생된 서비스를 활용하여 식별됩니다. 이러한 이벤트를 생성하는 데 필요한 아키텍처 구성 요소로 생각하면 됩니다. 씬 슬라이스에는 이벤트 스토밍, Boris, SNAP 활동을 통해 정보가 제공됩니다.

    : 수직 슬라이스는 아키텍처의 모든 계층을 다루지만, 기능의 일부만을 구현합니다. 예를 들어, “사용자가 암호로 로그인할 수 있도록 허용” 수직 슬라이스는 사용자 인터페이스에 사용자 이름과 암호를 추가하고, 서버 측 논리를 구현하고, 데이터베이스 기록에 최종 로그인 필드를 업데이트할 수 있습니다. 개발자가 가장 익숙하지 않을 수 있는 애플리케이션 내 영역과 상호작용해야 하기 때문에 수직 슬라이싱은 애자일 방식을 처음 접하는 팀이 사고를 전환하기가 어렵습니다.

  4. 비즈니스 가치와 기술 리스크, 작업량 간의 균형을 조정하면서 씬 슬라이스의 우선순위를 지정합니다. 목표는 점진적으로 시스템을 “원하는 방식으로” 행동하도록 이동하는 것입니다. 연속적인 각 슬라이스의 구현을 통해 이 목표에 더 가까이 다가갈 수 있습니다.

  5. 씬 슬라이스는 백로그에서 MVP(최소 기능 제품) 또는 스토리의 컬렉션으로 캡처되었을 때 실행 가능해집니다. 때때로, VMware Tanzu Labs는 고객 팀과의 파트너십을 통해 비즈니스 가치와 기술 리스크, 작업량 간의 균형을 조정하면서 씬 슬라이스를 식별하고 이들의 우선순위를 지정합니다.

    : 시스템에 적합한 MVP를 정하기 위해 이러한 도메인이 서로 상호작용하는 포괄적인 수직 씬 슬라이스를 고려해야 합니다. MVP는 “모놀리스 제거”와 전술적 패턴의 활용으로부터 경로를 매핑하고 새 도메인 및 서비스와 상호작용합니다.

  6. 슬라이스를 정의할 때 신규 또는 제거된 서비스가 이전의 레거시 시스템과 공존할 수 있도록 부패 방지 계층, Facade, Docket 기반 코레오그래피, Strangler와 같은 전술적 구현 패턴을 활용하십시오.

  7. 우선순위로 지정된 사용자 스토리의 백로그를 다시 목표(사례 곧 제공 예정)/OKR에 연결합니다. 사용자 스토리를 MVP 또는 릴리스에 매핑합니다.

    : 사용자 스토리 영향 매핑은 스토리를 MVP와 릴리스에 매핑하는 데 적용할 수 있는 기술입니다. DDD와 사용자 스토리 매핑을 결합하는 방법에 관한 블로그 게시글을 읽어 보십시오.

  8. 실습 실험과 피드백, 반복 프로세스를 시작합니다.

성공/예상되는 성과

  • 현재 시스템 기능을 빠르게 발견하고, 영감을 주는 대상 아키텍처를 생성하고, 우려되는 기반 영역을 파악하고, 우선순위에 대해 합의
  • 개념적 솔루션, 전술적 수정, 잠재적인 절충 사항을 점진적이고 측정된 방식으로 논의 및 이해
  • 가정을 검증/실격 판정하고 솔루션/수정에 정보를 제공하기 위한 아키텍처 작업
  • 점진적으로 서비스를 현대화하는 접근 방식 구축
  • “모든 것을 테이블에 두는” 접근 방식을 사용하는 관련 비즈니스 성과로 솔루션 정의
  • 작게 시작하여 확장되고 고객 개발자와 아키텍트를 지원하는 전술적 단계 계획을 통해 확신을 향해 전진

진행자 메모 및 팁

우수한 진행자는 DDD 관점에서 비즈니스 기능의 지원을 기준으로 시스템을 설계하는 방법을 이끌어내야 합니다.

이 개념적인 아키텍처는 이제 시스템의 우수한 첫 번째 진행 방향을 나타냅니다. 기존 시스템을 현대화하는 툴로 사용될 때 Boris는 가능성 있는 대상 아키텍처를 보여줍니다. Swift 방식의 다른 활동은 현재 상태에서 현대화된 상태로 이동하는 방법을 정의하는 데 도움을 줍니다.

Swift 방식에는 다음을 비롯한 많은 활동이 포함됩니다.

실제 예시

Uber Eats와 같은 유형의 애플리케이션을 위한 현대화의 Boris 및 Swift 방식에 대한 자세한 설명은 이벤트 스토밍 및 Boris 훈련 Miro 보드를 참조하십시오.

Swift 방식의 다양한 단계와 서로 간에 흐르는 방식의 시각화