[DevOps] Agile..?

DevOps Full Chain - 2

Posted by owin2828 on 2020-01-07 10:31 · 3 mins read

Agile


Agile: 날렵한, 민첩한

Agile의 사전적 의미는 위와 같다.
그 중, 나는 후자에 가까운 의미가 더 어울린다는 생각이 든다.
민첩하게 무언가를 한다는 것은 고객에게 빠르게 가치를 전달하는 요즘 개발의 방식과 잘 맞기 때문이다.

결국 Agile은 하나의 방법론이다. 민첩하게 개발을 하기 위한 방법론.
그렇다면 왜 항상 Agile은 DevOps와 함께 거론되며, 어떠한 배경이 있었기에 새로운 방법론이 나오게 되었는지 알아보도록 하자.

기존에는 무엇이 문제였는가?


늘 새로운 것이 나오는 이유는, 기존에 존재하던 것이 현 상황에 잘 맞지 않기 때문이라 생각한다.
그렇다면 이 전에 존재하던 방법론은 무엇이었길래 문제였는가?

답은 Waterfall 이라 불리는 일명 ‘폭포수모델’은 개발 생태계를 지배하던 방법론이었다.
계획수립 - 요구분석 - 설계 - 개발 - 테스트 - 배포의 과정을 거치는 이 방법론은 다음과 같은 장점으로 오랫동안 생태계에 군림했다.

  1. 적용사례가 풍부
  2. 전체 /현재 과정의 이해가 쉬움
  3. 문서의 관리가 쉬움

이 중, 1번 장점은 생각 외로 정말 큰 장점이다.
프로젝트의 크기가 크지 않고, 새로운 방법으로 도전할 리소스가 안된다면 충분히 재고할 가치가 있는 것이다.

하지만 이러한 방법은 치명적인 단점을 안고 있는데, 바로 개발이병행되거나 반대로 진행되지 않는다는 것이다.
시장의 변화속도가 매우 빠르고, 다양한 요구사항이 등장하는 현대에는 적용하기 어려운 방법이기 때문이다.
더이상 테스트 중에 요구사항이 변경되어 처음부터 다시 시작해야하는 방법으로는 한계에 봉착한 사람들은 새로운 방법을 몰색하였고, 그 결과 Agile이 등장하게 되었다.

하지만 나는 늘 무조건 새로운 것이, 트렌디한 것이 정답은 아니며,
상황에 맞는 방법을 잘 가져다가 쓰는 것이 훌륭한 선택이고 좋은 결과를 도출할 확률이 높다고 생각한다.
waterfall도 요구사항이 단순하고 변경 가능성이 적거나, 프로젝트의 규모와 난이도가 낮다면 충분히 고려할 만한 방법이라는 뜻이다.

그래서 Agile은


단어 그대로 민첩한 개발에 중점을 두고 있다.
큰 계획을 수립하지 않고 주어진 요구 사항을 스프린트에 맞춰 작은 단위로 유연하게 개발하는 방식이다.
인터넷을 찾다보면 여러가지 어려운 말로 Agile을 설명하지만 결국 나는 하나의 문화라고 생각한다.

빠르고 유연하게 개발하는 문화. 이 이상으로 Agile한 것이 무엇이 있을까

스프린트는


다음과 같은 과정으로 이루어 진다.
Agile 스프린트

  1. 고객의 피드백
  2. 다양한 방법(스크럼등)을 통해 스프린트 목표 설정
  3. 스프린트 진행
  4. 배포
  5. 1로 복귀

    피드백을 받으며 지속적으로 배포하는 스프린트를 여러 번 진행하여 개발하는 것이 Agile 이다.

우리도 Agile하게 일해봐야지


라는 생각은 충분히 고려를 한 후, 적용하는 것이 좋다.
위에서도 언급했지만, 늘 Agile이 정답은 아니다.
많은 준비를 마친 후에 비로소 걸어가야 한다고 생각한다.

그래서 DevOps와 Agile은


연장선상에 있다고 생각한다.
Agile의 목표가 빠른 소비자 피드백을 기반하여 개발을 진행 한다면,
DevOps는 개발자와 운영자의 간극을 좁혀 더욱 민첩한 개발 & 배포가 가능하기 때문이다.

Reference