대형 프로젝트를 위한 Agile 방법론- Hybrid Agile

Updated:

대형 프로젝트에도 Agile 방법론을 적용할 수 있을까??

좀 더 현실적인 Agile 방법론 적용법은 없을까? 제가 Agile 방법론에 입각한 프로젝트에 참여하면서 가졌던 의문입니다. 현장의 많은 분들께서도 그동안 수많은 새로운 개발방법론이 나왔지만 정작 폭포수 모델을 대체할 뚜렷한 방법론은 없었다는 점을 지적하지요. 그만큼 폭포수 모델은 오랜 기간동안 표준 개발 방법론으로 제 역할을 해 왔습니다. 물론 현대사회 자체가 점차 변화무쌍해지면서 세상의 요구에 빠르고 유연하게 대처할 수 있는 Agile 방법론이 제시되었고 우리는 그 방법론을 탐구하고 있습니다. 하지만.. 그럼에도 불구하고 Agile 방법론 역시 앞선 새로운(그러나 잊혀진) 방법론들과 같이 폭포수 모델이 쌓아놓은 ‘굳건한 관성’의 도전에 직면한 상황입니다.

Agile 방법론보다는 전통적인 폭포수 방법론을 선호하는 사람들은 Agile 방법론에 대해 아래와 같은 견해를 갖고 있는 것으로 보입니다.

  • “소프트웨어 개발을 위해서라지만 명확하지 않은 방법론”
  • “개발보다는 조직문화 개선에 더 어울리는 방법론”
  • “투명성과 현실성에 초점을 맞춘다지만 비현실적인 방법론”
  • “초대형 프로젝트나 조직에는 적용이 불가능한 방법론”

이러한 지적과 괘를 같이 하듯 최근의 Agile 방법론은 실제로 SI 현장보다는 조직문화를 바꾸는데 더욱 활발히 적용되고 있는 모습입니다.(참조기사 http://www.asiae.co.kr/news/view.htm?idxno=2018040313250224966) 더욱이 차세대급과 같은 대형, 장기간의 프로젝트에는 부적합하다는 의견이 다수입니다. 이에 대한 제안으로 DaD(Disciplined Agile Delivery, https://disciplinedagiledelivery.com), SAFe(Scaled Agile framework, https://www.scaledagileframework.com), LeSS(Large Scaled Scrum, https://less.works) 등 대형 프로젝트에 적용할 수 있는 Agile 방법론이 제시되기도 했고, 특히 SAFe는 실제로 Agile을 적용한 기업 중 50% 이상이 차용할 정도로 주목 받고 있습니다.(삼성SDS 공식포스트, https://m.post.naver.com/viewer/postView.nhn?volumeNo=11204649&memberNo=36733075&vType=VERTICAL) 하지만 이 방식들은 우리에게 익숙하지 않을뿐더러 익히고 프로젝트에 적용하는데 오랜 기간이 걸린다는 점은 우리를 다시금 머뭇거리게 만들지요. 그래서 우리에게 익숙하고 최대한 빠른 시간 내에 실현가능한 방법론을 고민해 보았습니다.

바로 Hybrid Agile 방법론입니다. 우리에게 익숙한 폭포수 모델을 버리는 것이 아닌 적극적으로 끌어 안는다는 생각의 전환이 그 핵심인데요, 초기 인프라, 미들웨어 세팅과 데이터룰 같은 논리 데이터 구조의 세팅은 폭포수 모델로 진행하고, 그 토대 위에 Application 개발과 테스트 과정은 Agile 방식으로 진행하는 것입니다.

대형 프로젝트에는 Hybrid Agile 방법론을 적용해 보자!

Hybrid Agile 모델을 설명하기에 앞서 Agile 방법론 자체에 대한 프로젝트 현장의 편견 아니 반대의 이유를 되돌아보고 시작하죠. 우선 절대적으로 ‘시간’이 부족합니다. Agile 방법론에 입각한 2주 혹은 4주 정도의 Sprint에서 개발팀원들은 실제 Application 개발은 물론 단위테스트까지 완료하고 이에 덧붙여 PO와 함께 리뷰를 진행하고 여기에서 도출된 변경, 추가 요건도 반영해야합니다. 잠시 개발자로 빙의해보자면… 도대체 요건 Freezing은 언제일까 아니 있기는 한걸까 심히 궁금해 집니다.(부연하자면, Agile 방법론에도 공식적인 요건 Freezing이 반드시 필요하다는 게 제 생각입니다.) 여기에 PO외 프로젝트 Owner인 간부급 고객은 그들대로 산출물을 요구합니다. 프로젝트가 Agile 방법론을 차용하고 있지만 프로젝트 Owner들은 프로젝트 관리자의 관점에서 폭포수 모델에 머물러 있는 경우가 다반사인거죠. 게다가 이것저것 요구하는 문서도 많습니다. 요구사항 정의서, 추적표, 인터페이스 정의서, 화면정의서, 데이터 정의서 등등..

정리하자면 현장의 개발자들이 직면한 어려움(아니 불만)은 첫째, 부족한 개발, 테스트, 수정 시간과 둘째, 개발 기간 중 무리한 산출물(Paper Work) 작성 요구, 이렇게 2가지 정도로 요약해 볼 수 있겠습니다.

그럼 Hybrid Agile 방법론은 ‘현장의 불만사항’을 줄이는 데 조금이나마 도움이 될 수 있는지 여부에 논의의 초점이 모아지겠네요. 과연 우리에게 해답을 던져 줄 수 있는 방법인지 아닌지 차근차근 살펴봅시다. 우선 아래 그림을 볼까요?

Hybrid Agile 방법론은 위 그림과 같이 크게 2개의 phase로 나누어 집니다. 첫번째 phase로, 폭포수 방법론에 기반한 프로젝트 인프라 조성 작업입니다. 프로젝트 초기 20~30%의 기간동안 프로젝트 전반에 영향을 미치는 기반 작업을 우선 수행하는데, 여기에는 Cloud(IaaS 포함), 미들웨어, Aplication Architecture 작업은 물론 데이터 룰 세팅과 같은 논리 데이터 작업이 포함됩니다. UI/UX 표준 또한 세팅되면 좋겠지요. 여기에 프로젝트 관리를 위한 최소한의 Paper work까지 완료하면 더욱 좋습니다.

두번째 phase로, Agile 방법론에 기반한 Application 개발 작업입니다. 프로젝트 기간 중 70~80%의 기간동안 실질적인 개발 작업을 수행합니다. 구체적으로는 Application 개발과 함께 데이터 모델링, 물리 데이터 구성 작업을 Sprint별로 진행합니다. 우리가 알다시피 각 Sprint 기간 중에 개발, 테스트, 리뷰, 회고 등 Agile 방법론을 이루는 활동은 모두 포함됩니다. 각 Sprint별 개발이 마무리되면 통합테스트 및 안정화 작업 이후에 Product Release 는 동일하게 진행됩니다.

자, 그럼 Hybrid Agile 방법론을 통해 현장의 불만사항을 재대로 해결해 줄 수 있을지 따져봅시다. 폭포수 모델과 Agile 방법론의 장점을 차용하여 차례로 진행한다는 전제 하에 우선 프로젝트의 기초를 단단히 다져놓고, 그 위에서 개발자들이 능력을 발휘할 환경을 조성한다는 점에서, 좀 더 명확하게는 개발자들에게 최대한의 시간을 보장해주는 것에서 Hybrid Agile 방법론의 장점을 찾을 수 있습니다. 또한 첫번째 phase 기간동안 고객이 원하는 Paper Work을 마무리하거나 최소한 Template들을 지정해 놓는다면 개발자들이 부담스러워 하는 ‘개발 중 산출물 작성’의 고충을 크게 줄여 줄 수 있습니다. 이와 같이 개발을 위한 가용한 시간을 늘려주고 특히 집중을 방해하는 요인을 제거한다는 점에서 Hybrid Agile 방법론은 ‘스크럼팀’이 제기하는 ‘현장의 아쉬움과 불만’에 대한 대안으로써 충분히 주목받을만 하다는 게 제 결론입니다.

그럼 Hybrid Agile 방법론은 완전체인가?!

그렇다면, 우리는 Hybrid Agile 방법론을 두고 신구의 조화를 통한 완벽한 방법론의 발견이라고 환호할 수 있을까요? 아쉽게도 그렇지는 못할 것 같습니다. 위에 장황하게 설명한 장점에도 불구하고 뚜렷한 한계를 갖고 있기 때문이죠. 단점을 크게 두가지 정도로 나누어 볼 수 있는데, 첫째, 전체 기간이 짧은 소규모 프로젝트에는 적용하기가 적합하지 않다는 점과 둘째, 혼합 방식에 대한 회의론(“차라리 그냥 Agile이 낫다!”)이 이미 존재한다는 점입니다.

먼저 짧은 기간의 프로젝트에 적용하기 어렵다는 점을 살펴보죠. 예를 들어, 전체 기간이 1~2개월 정도인 프로젝트를 진행할 때, Hybrid Agile 방법론을 적용하여 두 개의 phase로 나누는 건 무의미할뿐더러 억지로 나눈다고 해도 시간에 허덕이느라 오히려 Agile 방법론의 정신을 해칠 수도 있습니다.

자, 이와는 별도로 Hybrid Agile 방법론에 대한 회의론도 이미 존재합니다. 회의론의 요지는 폭포수와 Agile 두 방법론을 혼용하여 동시에 추진할 경우 서로 다른 방향으로 프로젝트를 이끌 수 있다는 거죠.(참조. https://vitalitychicago.com/blog/what-is-hybrid-agile/) 동시에 전통적인 모델과 새로운 모델 모두에 따르라고 한다면 개발자들은 물론이고 코칭을 하고 가이드를 주는 관리자 역시 혼란에 빠질 가능성이 높아질겁니다. 다만, 본 포스팅을 통해 논의하는 Hybrid 방식은 폭포수 방법론과 Agile 방법론을 각 phase 별로 분리 적용하기에 서로의 진행에 미칠 영향을 최소화할 수 있는 점은 감안하고 두번째 단점을 바라볼 필요가 있겠습니다.

지금까지 Hybrid Agile 방법론을 살펴봤습니다. 정의와 특징은 물론 그 장점과 단점까지 말이죠. 주지할 것은 Hybrid Agile 방법론도 세상의 모든 것들이 그렇듯 일장일단을 갖는 만물의 이치를 따른 다는 점을 잊지 않으셨으면 합니다.

그럼 이번 포스팅을 마치도록 하겠습니다. 여러 포스팅과 마찬가지로 이번 Hybrid Agile 방법론 소개편에 대해서도 수정이 필요한 부분이나 추가되었으면 하는 부분이 있다면 댓글에 남겨주시기 바랍니다. 긴 글 읽어주셔서 감사합니다.

출처 삼성SDS 공식포스트, Vitality Chicago 블로그 및 Google.com