세상에는 여러가지의 CI/CD 도구들이 있고 개발자라면 대부분 1가지 이상의 CI/CD 도구를 사용해 봤을 것입니다. 물론 최근에는 GitHub Actions 와 같은 도구들이 선호되어지나 이런 CI/CD 도구들은 각각의 상황과 방법이 있기에 특정 CI/CD 도구가 더 낫다고 이야기 하기는 어렵습니다. 다만 일반적으로 이런 도구들은 각 팀에서 상황에 맞는 기능등의 사용성을 보고 선택되어진다고 생각합니다.

하지만 오늘 소개할 Prow 는 기능을 넘어서는 다른 사용성을 추가적으로 가지고 있다고 생각합니다. 저희 팀에서는 약 2년 정도 Prow 를 사용해왔는데 처음에는 k8s 진영의 개발문화가 고스란히 담겨 있다고 생각하고 추가적으로 간접적으로라도 Google 의 개발문화들을 경험해 볼 수 있지 않을까 기대하고 시작했습니다. 현재까지 사용하면서 느낀건 code 로 좋은 개발문화를 만드는데 보탬이 되는 도구라는 생각이 듭니다.

좋은 개발문화

어찌보면 개발자 누구나 좋은 개발문화를 갖고 그 안에서 일하고 싶어합니다. 하지만 좋은 개발문화를 정의하기도 어렵고 그에 대한 효용성을 설명하기도 어렵습니다. 그래서 아래와 같이 전문적인 집단에서 연구한 결과로 살펴 볼 수 있습니다. 아래의 그림은 Google 에서 Devops 에 대해서 연구하는 Devops Research and Assessment(이하 DORA) 팀에서 조사한 소프트웨어 배포 & 운영 성능에 대한 관계로 살펴볼 수 있습니다.

출처: https://services.google.com/fh/files/misc/dora_research_program.pdf

출처: https://services.google.com/fh/files/misc/dora_research_program.pdf

위의 그림과 같이 좋은 개발문화/환경 달성은 운영/배포 성능을 끌어 올리는 효용성을 보여주고 있습니다. 반대로 이런 개발문화/환경 달성은 아래와 같이 너무 많은 것으로 부터 영향 받습니다.

이중 가장 큰 꼭지중의 한가지는 Continuous delivery 고 이 또한 달성하기 위한 요구조건은 상당히 많습니다. 이런 요구조건 또한 우리가 사용하는 CI/CD 도구를 사용한다고 커버가 다 되지 않는다고 볼 수 있습니다. 또한 Autonomy, trust, and voice 그리고 Retrospectives 같은 경우는 개개인의 노력과 환경 등이 기반이 되기 때문에 좋은 개발문화/환경은 도구 외적인 것에도 다양한 것들이 필요합니다. 이렇기에 달성하기 어려운 팀내 숙제 이기도 하지만 달성해 나가면서 얻어나가는 점이 많다고 생각하기에 어떤 팀이나 관심있어하는 주제라고 생각합니다.

code로 만드는 개발문화

DORA 에 따르면 팀에 **Autonomy(자율성)**이 부여되면 소프트웨어 제공 성능이 향상 되고 **신뢰(trust)**와 **발언(voice)**에 영향을 줘서 조직 문화 를 주도하는 것으로 나타났습니다. 위 그림에서도 상단에 autonomy가 표현되어 있지만 이부분만 발췌해서 도식화 했을때 아래와 같은 그림형태가 됩니다.

출처: https://www.devops-research.com/research.html

출처: https://www.devops-research.com/research.html