데이터 사이언티스트들을 위한 AGILE
Updated:
데이터 사이언티스트들을 위한 AGILE 방법론
데이터 분석이란 작업은 주어지거나 수집한 불특정, 그리고 정리되지 않은 대규모 데이터 뭉치를 일정 기법을 통해 분석해보고 그 데이터 뭉치의 이면에 숨겨진 의미를 찾기 위한 것입니다. 즉, 데이터 사이언티스트는 숨겨진 의의를 찾아내는 작업을 수행하고 그 의의를 비지니스 혹은 우리 생활에 적용함으로써 가치를 창출해 냅니다. 단순히 수집되거나 나열된 데이터 뭉치에서 비지니스적 가치를 이끌어내는 특정 방법에는 정해진 루트나 반환점이 없습니다. 어제 적용했던 분석법이 오늘은 완전히 다른 결과를 보여줄 수도 있고 어제는 부적합것으로 판단했던 분석법이 오늘은 보다 적합한 분석결과를 보여주기도 합니다. 더욱이 데이터 분석 분야의 새롭고 보다 정확한 결과를 보여주는 논문이 쏟아지고 있는 ‘Data Driven Transpormation’의 물결에 데이터 사이언스 프로젝트는 그 변동성과 불확실성이 극대화되는 환경에 놓여 있다해도 과언이 아닙니다. 이번 포스팅에서는 이러한 데이터 사이언스 프로젝트의 극대화된 변동성과 불확실성에 적합한 프로젝트 방법론으로써 Agile 의 가치를 알아보고자 합니다.
데이터 분석에도 AGILE 인가?
다들 아시다시피 전통적인 프로젝트는 모든 계획을 수립한 후 일정에 따라 일감을 순차적으로 해결해 가는 폭포수(Waterfall) 방식으로 진행되어 왔습니다. 그러나 데이터 사이언스 프로젝트는 전술한대로 새로운 이론이 쏟아지는데다, 내가 가진 데이터 뭉치에서 특정한 결과를 얻고 자 할때 어떤 분석 방법을 적용해야 할지 또 어떻게 검증해야 할지 등 앞으로 나아가야할 방향이 확실하지 않습니다. 과거 선배들이 가보지 못했던 길을 새로이 개척한다고 해도 과한 표현은 아니겠죠. 이런 특수성을 감안했을때, 폭포수 방식에 비해 Agile 방식은 불확실성에 대비한 유연성을 제공할 수 있다는 점에서 데이터 분석 업무에 적합합니다.
출처: toward Data Science, Applying Agile Framework to Data Science Projects (https://towardsdatascience.com/applying-agile-methodology-to-data-science-projects-db50ebbef115)
데이터 사이언스 프로젝트와 AGILE 방식의 ‘접점’
대부분 데이터 사이언티스트의 작업은 끊임없는 연구가 동반되는 작업적 특성에 의해 탐구적인 성향이 강한 반면 업무 완료에 대한 기준을 세우거나 업무 진행에 기반한 일정한 타임라인을 설정하는 것에 익숙하지 않습니다. 마찬가지로 데이터 분석방법 연구와 알고리즘에 대한 적용, 검증으로 이루어 지는 데이터 사이언스 프로젝트 진행을 위한 구체적인 스케줄링 작업에도 익숙하지 않습니다.
그러나 새로운 제품의 개발이라는 목적을 위한 대부분의 프로젝트는 정해진 자원을 활용해 최선의 결과물을 얻고자 하는 효율성을 중시하는 행위이기 때문에 일정의 조직화와 그를 통한 결과물 도출을 위한 계획이 반드시 필요합니다. Agile 방법론은 분석모델 개발(리서치, 개발, 테스트, 작용 및 검증을 포함한) 작업의 수정과 정제를 위한 ‘반복적 작업’과 ‘정기적인 피드백’으로 구성되므로 데이터 사이언스 프로젝트에 적합한 프로젝트 관리법이라 하겠습니다. 즉, ‘데이터가 말하고 있는 것’, 데이터 이면에 감춰진 함의를 찾으려는 데이터 사이언스 프로젝트라는 업무 특성 상 새로운 방식이나 기술의 적용 시도와 에러가 필연적으로 반복될 수 밖에 없는데, 이러한 데이터 사이언스 프로젝트의 반복성과 불확실성을 Agile 방식의 프로젝트 진행방법이 적절하게 뒷받침할 수 있다는 논리로 이어질 수 있습니다.
SCRUM 방식의 데이터 사이언스 프로젝트
Agile 방법론을 구체화 시키는 ‘Framework’에는 Lean, Kanban, Scrum 등 다양한 방안이 있고 각각의 프로젝트 사정에 맞춰 적절한 것을 적용할 수 있습니다. 다만, 적합한 Framework를 선택함에 있어 우리가 최우선적으로 고려해야 할 사항이 있다면 데이터 사이언스 프로젝트의 진행에 있어 데이터 안에 숨겨진 ‘Insight’ 추출을 위한 분석 작업의 ‘반복’이 필수라는 점입니다. 그렇기 때문에 Agile 방식을 실행 할 수 있는 Framework 중 반복(Iteration)적인 개발과 검증을 주요 가치로 삼고 있는 ‘Scrum’ 방식이 적합합니다.
조금 덧붙이자면, Scrum 방식은 지속적인 적용과 과거 실수에서의 학습, 고객과의 공동 작업을 통해 더 나은 제품을 만들어내는 특성을 통해 Agile 방식의 데이터 사이언스 프로젝트에 최적을 방법론을 제공하게 됩니다. 1~4주 간의 Sprint를 반복하면서 하나의 MVP를 도출하고, 이 MVP를 순차적으로 축적해 비지니스에 실제 적용할 수 있는 Releasable Product를 출시(분석 소스 적용)하며, Releasable Product를 쌓아가면서 하나의 프로젝트를 완성해 가는 방식입니다. 즉, Scrum은 데이터 사이언티스트에게 프로젝트의 요구사항과 목표에 기반한 로드맵을 만들 수 있도록 해 줄 뿐 아니라, 반복되는 Sprint를 통해 새로운 기술을 학습하고 보다 정제된 결과를 얻을 수 있으며 더욱 개선된 제품을 만들도록 돕습니다. 아래 그림을 볼까요?
출처: toward Data Science, Applying Agile Framework to Data Science Projects (https://towardsdatascience.com/applying-agile-methodology-to-data-science-projects-db50ebbef115)
위 그림은 우리가 데이터 사이언스 프로젝트를 Scrum 방식으로 진행할 때 일감이 진행되는 단계를 간단하게 표현한 것입니다. 조금 자세히 살펴보자면, 우선 정제되지 않은 데이터 뭉치를 갖고 있다는 가정아래 (1)최신의 논문 혹은 기존 자료를 연구합니다. 해당 리뷰 결과를 바탕으로 (2)확보하고 있는 데이터를 분석하고, 이 분석은 다시 (3)알고리즘 개발 시 적용합니다. 다음으로 (4)알고리즘에 의한 결과를 분석하고, (5)고객과 함께 검증합니다. 검증에 문제가 없을 경우 최종적으로 (6)알고리즘을 분석을 위한 시스템에 적용합니다.(이런 일련의 과정이 하나 혹은 다수의 Sprint에 걸쳐 반복 될 수 있습니다.) 이러한 과정을 거쳐 만들어진 제품을 고객에게 인도 할 수 있는 최소한의 제품이라는 의미의 MVP(Minimal Valuable Product)라 칭하고, 연이은 Sprint들이 반복되면서 그에 따른 MVP들이 순차적으로 고객에게 인도되면서 점차 프로젝트를 완성하게 됩니다.
데이터 사이언스 프로젝트의 진행 예시
아래 그림은 데이터 분석을 통한 학습자별 학습모델 생성 프로젝트를 예시로 삼아 구현해 놓은 Sprint입니다. 우선 Sprint를 이루고 있는 상태, 즉 스토리(분석 일감)의 진행상황을 (1)To do(할 일), (2)Data Gathering, (3)Literature Review, (4)Feasibility Study, (5)Modeling&Validation, (6)Market Landing, (7)Drop, (8)Done(완료) 그리고 (9)Reopened로 구분해 놓았습니다. Sprint 백로그에 쌓여 있던 일감을 각각의 진행 상태에 맞게 상태를 표시해 줌으로써 스크럼 팀 내 구성원에게 투명하고 간편하게 공유할 수 있습니다. 또한 Sprint를 진행하면서 특정 일감이 어느 정도의 기간이 걸리는 지 측정할 수 있게되어 데이터 사이언티스트로 하여금 일정을 역산정하거나 예측하는데 도움을 줍니다.
출처: 저자(https://agilefordata.atlassian.net/secure/RapidBoard.jspa?projectKey=DATAAGILE&rapidView=1)
AGILE 방식을 도입할 때 데이터 사이언티스트가 고려해야할 점
살펴본 바와 같이 Agile은 데이터 사이언티스트에게 프로젝트 조직화 측면에서 큰 도움을 제공합니다. 그러나 Agile과의 접점으로 작용했던 데이터 분석 업무의 태생적 특징으로 인한 문제점도 존재합니다.
- 리서치 작업의 특성과 AGILE을 위한 AGILITY 데이터 사이언스에서의 리서치는 창의적인 문제해결 기술력이 필요한 작업임을 고려할 때 이에 대한 가이드에 그칠 것인지 엄격한 룰을 세울 것인 지 확실한 기준을 세워야 합니다. 각 프로젝트 별로 모두 다든 기술적 시도가 필요하고 주어진 일감의 목적 자체가 모호한 경우가 많기 때문에 정답이란 것은 애초에 있을 수 없겠죠. 달리 표현하자면 ‘하나의 질문’에 답변하는 것이 ‘또다른 많은 질문’으로 어어질 수 있으므로 분석 작업 자체만으로도 오랜 기간이 소요될 수 있고, 자연스레 특정한 하나의 문제가 백로그의 우선순위에 따른 Sprint 전체의 진행에 악영향을 끼칠 수도 있습니다.
- 프로젝트의 진행과 모델 진행상태의 동기화 문제 어떤 알고리즘의 결과물을 평가할 때, 수정 작업과 정확도 수준이 다를 수 있습니다. 예를 들어 대다수의 데이터 분석 과제에서 정확도 7, 80% 까지 심지어 95% 수준까지는 비교적 쉽게 도달할 수 있지만, 나머지 5~25%의 정확도를 높이는 데 수주 혹은 수개월이 소요되는 경우도 비일비재합니다.AGILE 방법론은 ‘손에 잡히는 솔루션(작동하는 소프트웨어)’을 선호하나, 가능한 모델을 도출하기 위해 길고 반복적인 작업을 수행하는 데이터 사이언스 팀이 안고 있는 문제점은 AGILE 방식의 개발에 큰 부담이 될 수 있습니다.
정리하자면..
AGILE 방법론은 데이터 사이언스 프로젝트를 보다 조직적으로 진행할 수 있게 도움을 줄 뿐아니라 결과 중심의 목적물에 집중하는데 최적화된 프로젝트 방법론입니다. BEING AGILE 이란 말의 뜻을 되새겨 보자면 필요한 바를 얻기 위해 다이내믹하게 계획하고 새로운 상황에 대해 적극적으로 대응함으로써 목표치를 달성하려는 노력 그 자체라 할 수 있습니다. 즉, AGILE한 환경은 빠르게 행동하고 빠르게 실패하며, 그에 따른 평가와 학습 그리고 개선된 방법을 재적용하거나 또다른 접근법으로 재시도하는 것을 요구하는 것이죠. 결과적으로 AGILE 방법론은 다이나믹하게 변화하는 시대와 사람을 이해하고자 노력하는 데이터 사이언티스트에게 많은 것을 시사하고 있습니다. 그러나 정반대로 데이터 사이언스 자체가 갖고 있는 특성이 AGILE 방식의 프로젝트 진행에 있어 부담을 줄 수 있다는 점도 고려하여 도임과 계획 수립 작업에 임해야 실제로 원하는 바를 얻을 수 있습니다. 정답이 없는 과제가 갖는 태생적 특성이 Agile한 업무 진행에 오히려 방해요인으로 작용하지 않도록 일종의 ‘접점’을 찾는 것이 Agile한 데이터 사이언티스트들에게 주어진 실제 과제입니다.
그런데 문제점만 얘기할 게 아니라 이 글을 쓰고 있는 저부터 위에 언급한 한계점에 보다 유연하게 대처할 수 있을 방법을 찾도록 해 봐야겠습니다. 조금 만회할 수 있는 방식을 생각해 봤을 때 Scrum 대신 Kanban 방식을 도입하는 것도 하나의 방법이 될 수 있겠네요. :) (Kanban에 대해서는 다음 기회에 살펴보도록 하겠습니다.)
그럼 이것으로 이번 포스팅을 마치겠습니다. 궁금한 점이 있거나 제 글 중 오류를 발견하신 분께서는 아래 댓글에 남겨주시기 바랍니다. 긴 글 읽어 주셔서 감사합니다.
참고자료
- toward Data Science, Applying Agile Framework to Data Science Projects (https://towardsdatascience.com/applying-agile-methodology-to-data-science-projects-db50ebbef115)
- BetterProgramming, Using Agile Methodologies in Data Science (https://medium.com/better-programming/using-agile-methodologies-in-data-science-82534bd047c8)