카테고리 없음

애자일 (Agile)

cjeongmin 2022. 11. 27. 15:00

애자일이란 무엇일까?

프로그래밍 개발 관련 글들을 읽다보면 심심찮게 애자일이라는 단어를 보게된다. 프로그래밍에서 애자일이라는 단어가 가지는 의미가 무엇인지 알아보자.

애자일 소프트웨어 개발 방법론

애자일은 기민한이라는 뜻을 가지고 있다.
애자일은 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하기 위한 소프트웨어 개발 방식이다. 즉, 일정한 주기를 가지고 기능을 계속하여 만들고, 추가하여 그때 필요한 것을 수정, 추가하여 소프트웨어를 개발해가는 방식이다.
애자일 개발 방법론에서는 기능의 구현을 목표로 하는 짧은 주기를 가지는데 거대한 아키텍처를 설계하지 않고 주기(이터레이션 혹은 스프린트)에서 달성할 수 있는 만큼의 설계를 추구한다.

이러한 개발 방법론이 왜 생겨났을까?

계획에 의존하여 개발을 하게되는 경우엔 형식적인 절차를 따르는데 필요한 시간과 비용이 든다. 또한 계획을 수립하고 계획대로 문제없이 흘러간다면 이는 큰 문제가 되지 않겠지만 아쉽게도 현실은 그렇지만은 않다.
중간에 요구사항이 변하거나, 문제가 생긴다면 계획을 일부 변경하여 진행하거나 최악의 경우 처음으로 돌아가 시작해야하는 경우가 있을 수 있고 다시 계획을 수립하고 형식적인 절차를 따르는데 필요한 시간과 비용이 들 것이다.
그렇다고 애자일 방법론이 아무런 계획이 없이 진행되는 것은 아니다. 아무런 계획이 없으면 앞으로의 일을 예측하기 힘들고 효율적으로 개발 할 수 없다는 단점이 있다.
애자일 방법론은 이 두 방법에서 타협접을 찾고자 생겨났다.
애자일 방법론은 특정한 방식만을 말하는 것은 아니고 애자일하게, 애자일스럽게 개발을 할 수 있다면 이는 애자일 방법론이라고 말할 수 있다. 유명한 방법론으로는 XP, TDD가 있다.

애자일의 개념 및 가치

  1. 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
  2. 작동하는 소프트웨어가 포괄적인 문서보다 우선
  3. 고객과의 협업이 계약 협상보다 우선
  4. 변화에 대응하는 것이 계획을 따르는 것보다 우선

이러한 개념과 가치를 가지는 애자일 방법론을 통해 얻은 이점 또한 많다.
계획을 세워서 개발하는 워터폴 방식에선 프로젝트 내에서 단계 구분이 뚜렷하여 순차적으로 접근하게 된다. 이러한 특성으로 한 단계를 전체 완성해야 다음 단계로 이동할 수 있는 입장인 반면, 애자일 개발은 개발과 동시에 테스트를 진행한다던지, 동시에 발생하는 여러 시퀀스를 지원한다.

그래서 뭐라고?

쉽게 생각하면, 투자한만큼 가치를 얻어내는 것이 애자일하게 하는 것이다. 내가 어떠한 일에 시간을 쏟으면 그 시간 후에는 내가 무언가를 얻어냈으면 애자일하게 일을 하고 애자일하게 행동하고 있는 것이다.

한번 적용해보자.

이번 학기 프로젝트를 진행하면서 매주 회의를 진행하고 있다. 매주 회의를 진행하면서 기능을 중점으로 각자 개발을 해내가고 있는데 매주 어떠한 기능을 추가하고 수정해야하는지 중점을 두고 있다. 물론 큰 계획을 만들고 진행하지만, 이 계획을 작게 나누어 한 주의 시간을 쏟으면 결과물이 나올 수 있도록 계획을 하고 그리고 하나의 결과물로 만드는 작업을 매주 진행하고 있다.
각자 맡은 파트를 개발해가면서 개발과 동시에 테스트도 진행하고 문제가 없다면, 서로 코드 리뷰 후에 메인 브랜치로 합치는 과정을 통해 최소한 매주 무언가를 얻어내고 있으며 어떠한 단계를 거쳐야 다음 단계로 나아가는 것이 아닌 기능 위주 개발을 함으로써 좀 더 빠른 개발 속도와 내가 기능 개발을 완료했다면 다른 기능을 개발하거나 도와주는 방식으로 쉬지 않고 프로젝트를 진행할 수 있었다.
만약, 이러한 방법을 선택하지 않았더라면 내가 할 일을 하더라도 다음 프로세스로 넘어가기 위한 준비가 되어있지 않다면 생산성이 좀 떨어질 수 있지 않을까? 라는 생각을 하기도 했다.

아무튼,

애자일 방법론이 무조건 정답은 아니겠지만, 이번 프로젝트를 진행하면서 최소한 매주 어떠한 결과물이 나온다는 것이 큰 동기부여가 되기도 했다. 또한 개인적으로 일을 할때 계획을 세우고 그 안에서 유동적으로 행동하는데, 애자일 방법론 또한 나의 행동방식과 비슷한 느낌이였다고 해야하나.. 아무튼 이러한 방식이 어색하지는 않았다.
물론, 당연히 애자일 방법론이 정답은 아니고 여러가지 방법이 많겠지만 프로젝트를 진행한다면 한 번쯤은 적용해볼법한 방법론이라고 생각된다.