지난주에 스크럼이 민첩하지도 않고 비효율적인 방법이라는 짧은 글을 작성했다. 그러다 문득 진정한 애자일을 가로막는 장애물 중 하나가 소프트웨어 기술의 한계라는 생각이 들었다. 소프트웨어를 구축하고 제공하는 방식이 유연성에 적합하지 않았기 때문이다. 하지만 우리는 점차 유연하고 민첩하게 대응할 수 있는 새로운 개발 방식으로 전환하고 있다.
모두가 애자일을 원하는 이유 중 하나는 워터폴 방식에 대한 반발이 컸고, 지금도 그렇기 때문이다. 워터폴 방식은 기본적으로 다음과 같이 진행되었다:
- 요구 사항을 정의하기 위해 미리 많은 작업을 수행한다.
- 소프트웨어를 구축한다.
- 고객에게 소프트웨어를 제공한다.
워터폴 방식은 언뜻 보기에는 고객이 원하는 것을 찾아서 구축하는 것이 합리적이지만, 곧 시간이 오래 걸리고 상황이 변한다는 것이 분명해졌다. 고객이 처음에 구상했던 것과 제품이 인도될 때쯤에는 변화하는 요구 사항이 일치하지 않았다. 요구사항이 제시되었을 때와 소프트웨어가 제공될 때 요구사항이 바뀌었는데 이를 수용할 수 있는 체계가 없었다.
변화는 어려웠다.
애자일 방법론의 근본적인 아이디어는 이러한 문제를 완화하고 유연성과 변화하는 요구 사항을 허용하는 것이다. 소프트웨어 개발 프로세스는 기능이 개발되고 요구 사항이 변경됨에 따라 기복이 심해야 한다. 소프트웨어는 이러한 변화에 빠르게 적응해야 한다. 이것이 바로 애자일 선언문 전체의 핵심이다.
하지만 애자일 선언이 구상될 당시에는 소프트웨어 개발 및 소프트웨어 제공 기술의 상태가 선언이 추구하는 바를 충족할 만큼 유연하지 않았다. 하지만 서비스형 소프트웨어(SaaS) 모델의 등장으로 상황이 바뀌었다.
유연성을 극대화하는 것은 좋은 일이지만, 수년 동안 소프트웨어는 한꺼번에 제공되어야 했다. 단일 릴리스 날짜에 맞춰 여러 기능을 조율해야 했다. 버그 수정을 위해 시간을 할당해야 했다. 기술의 한계로 인해 소프트웨어 개발 팀은 규율과 경직성, 융통성이 부족할 수밖에 없었다. 결국 납기일을 지켜야 했다. 그리고 일단 소프트웨어가 납품된 후에는 소프트웨어를 변경하려면 처음부터 다시 납품해야 했다. 업데이트는 종종 번거롭고 힘든 과정이었다. 복잡한 윈도우 프로그램은 설치와 구성이 어려울 수 있다. 윈도우를 실행하는 200대의 컴퓨터가 있는 사이트에서 소프트웨어를 제공하거나 업그레이드하는 것은 큰 도전이 될 수 있다. 따라서 자주 수행되지 않거나 적어도 충분히 자주 수행되지 않았다. 고객은 하나의 버그 수정을 위해 공식 릴리스가 나올 때까지 기다려야 하는 경우가 많았다.
하지만 지금은 소프트웨어를 제공하는 방식이 달라졌다. 서비스형 소프트웨어(SaaS)와 지속적 통합/지속적 배포(CI/CD)의 등장으로 실행 중인 소프트웨어는 완전히 제어할 수 있게 되었다. 브라우저에서 실행되는 클라이언트 앱도 서버에 있으며 요청이 있을 때마다 클라이언트로 전송된다. 소프트웨어를 한 지점에서 제어할 수 있다는 것은 새로운 기능과 버그 수정이 모든 사용자에게 즉시 제공된다는 것을 의미한다. 기능 모음에 대한 단일 제공 날짜라는 개념은 사라졌다.
최고의 기능
“배송은 최고의 기능”이라는 말이 있다. 오늘날에는 SaaS 애플리케이션을 몇 분 안에 고객에게 제공할 수 있다. 신규 고객은 최소한의 설정만으로 전체 애플리케이션을 즉시 사용할 수 있다. 브라우저를 통해 애플리케이션을 제공함으로써 개발자는 “조기에 자주 출시”할 수 있다. 기능 플래그를 통해 기능을 즉각적이고 점진적으로 추가하고 모든 사용자가 즉시 사용할 수 있는 버그 수정을 배포할 수 있다.
SaaS 애플리케이션이 이렇게 쉽고 자주 제공될 수 있는 주된 이유는 테스트가 매우 쉽기 때문이다. SaaS 백엔드의 입력과 출력은 쉽게 정의할 수 있으므로 자동화된 테스트를 구축하는 것은 간단한 문제다. 또한 데스크톱 애플리케이션의 새 릴리스를 제대로 테스트하는 데 며칠 또는 몇 주가 걸렸던 것에 비해 매우 강력한 테스트 모음을 몇 분 안에 실행할 수 있다.
또한 배포에 문제가 있는 것으로 확인되면 몇 초 만에 정상 상태로 롤백할 수 있다. 새로운 기능은 기능 플래그로 배포할 수 있으며, 문제가 있는 것으로 판명되면 마우스 클릭 한 번으로 제거할 수 있다.
이 새로운 모델에는 몇 가지 매우 강력한 이점이 있다. 기능을 점진적으로 개발 및 배포할 수 있다. 새로운 기능을 병렬로 구축하여 일부 고객에게 배포할 수 있다. 팀은 더 많은 기능을 더 빨리, 더 높은 품질로 제공할 수 있으며, 개발자는 문제에 빠르고 유연하게 대응할 수 있다. 더 이상 기능과 버그 수정을 한데 모아 한 날짜에 모두 제공할 필요가 없다.
즉, 이제 진정한 의미의 애자일 방식으로 소프트웨어를 구축할 수 있다.
dl-ciokorea@foundryco.com