이전의 전통적인, 대부분의 소프트웨어 설계는 Waterfall Model
을 따라 진행되었다.
Waterfall 모델은 각각의 단계가 있고, 단계마다 해야 할 일을 충족시키면 다음 단계에서의 Input 으로써 영향을 미치게 되는 식으로 진행되는 설계 모델이다.
그림으로 보면 아래와 같다.
하지만 이런 설계 방식은 마지막 단계는 항상 모든 과정이 수행되고 난 뒤
에 이루어지기 때문에 프로그램에 수정 사항이 있을 때
시간적, 자원적으로 손해가 엄청나다.
Waterfall Model의 위의 단점을 극복하고자 나온 방법론이 바로 Agile
설계다.
Agile
방법론은 설계 전체 과정을 여러 개의 작은 micro-services 과정들로 나누어 진행시키는 설계 방법이다. 이렇게 되면 각 단계의 접근이 편해지고 수정사항이 있어도 보다 편리하게 적용시킬 수 있다.
즉, 전체 서비스 설계 과정이 오직 한 개의 큰 덩어리로 취급되던 Waterfall
모델에서 벗어나, Agile
방법론은 각 단계 간의 의존성을 최대한 낮추고 수정 사항을 적용시킬 때 모든 과정을 다시 반복하지 않도록 개선시킨 모델인 것이다.
Agile 방법론 기반의 개발을 진행하는 과정은 위 그림과 같다.
먼저 클라이언트를 위한 개발 환경에서의 개발을 진행하고 서비스를 만든다. 그리고 그 서비스를 공개하여 클라이언트 리뷰와 피드백을 받고 수정 과정을 거친 뒤 공식적인 서비스를 배포한다.
위 그림은 Agile 방법론 도입의 효과를 본 SONY
의 예이다.
전통적인 Waterfall
방법론 대신 Agile
방법론을 도입한 결과, 설계 시간의 28% 가 감소, 다운 타임 감소 효과, 그리고 연간 3000만 달러를 절약하는 효과를 봤다고 한다.