2024년 2월 28일 수요일

DevOps(데브옵스)의 역사와 현재 상황

 요새 미국에서 가장 유망한 소프트웨어 직업중 하나가 DevOps 이다.

DevOps는 언제 생겼났는가?

필자가 실리콘밸리에서 일하던 30년전에도 똑같은 사상은 존재했고 사용되어 왔다. 점진적으로 기술이 진화하면서 2009년에 애자일 사용자인 Patrick Debois가 처음으로 "DevOps"라는 용어를 사용했다.

모든 소프트웨어 개발에는 기반시스템, 프로세스와 문화가 필요하다. 이를 종합적으로 합쳐서 부르는 마케팅 용어일 뿐이다. 구글과 같은 글로벌 대기업에서는 자체적으로 개발한 이런 종합 시스템을 가지고 있다. 그런 시스템을 개발할 전담팀이 없는 규모의 회사에서는 상용제품이나 오픈소스를 사용한다.


이 분야는 널리 알려진 수십개의 유명한 회사들을 비롯해 수 많은 회사들이 제품을 공급하고 있는데 무료 오픈소스부터 고가의 제품도 있다. 자동차의 예로 보면 트럭, 승용차, 버스, 경차부터 스포츠카까지 다양한 목적을 위한 제품들이 있으니 내가 필요로 하는 제품이 어떤 제품인지 판단하기도 어렵다. 필요도 없이 돈을 낭비하는 경우도 많고 가족수가 많은데 스포츠카를 사서 확장을 할 수 없는 경우도 있다.이런 다양한 환경과 목적에 따라 적절히 선택하여 사용하는 것이 예술이며 많은 경혐이 없이는 수행할 수 없는 작업이다.

그래서 전문가가 드물고 수요에 비해 공급이 절대적으로 모자란다. 개발자들이 도구 한두개 사용할 줄 안다고 DevOps 전문가가 되는 것이 아니다. 벽돌공은 될지언정 건축가는 되지 못한다.

DevOps의 사상에는 소프트웨어 개발에 필요한 모든 도구와 문화가 다 포함되어 있다고 해도 과언이 아니다. 자동차의 예와 같이 제품에 따라 일부분의 기능만 제공하는 것이 통상적이다.그렇기 때문에 하나의 도구를 사용했다고 다른 도구를 사용할 수 있는 것은 아니다. 영어를 할줄 안다고 중국어를 할 수는 없다.

먼저 또 유사한 용어인 CI/CD 와 구별을 할 필요가 있는데 CI/CD는 2010년에 처음 책에서 소개되었다. CI/CD는 Continuous Integration/Continuous Deployment를 수행하는 도구를 의미한다. 마치 컨베이어 벨트와 같이 한번 올라타면 자동으로 연결이 된다. 소스코드가 변경되면 빌드(Build)와 테스트를 거쳐 전개(Deployment)까지 자동으로 수행되는 기계적인 도구이다. 이런 오토메이션 과정은 60여년 소프트웨어 역사상 변한 적이 없다. 컨베이어 벨트의 각 영역을 수행하는 도구도 기술이 발전함에 따라 계속 진화되어 왔다. 가장 기본인 소스코드관리 시스템도 최초의 SCCS부터 Git까지 진화해 왔지만 그 속의 알고리듬은 수학적인 diff 알고리듬으로 변화한 적이 없다. 단 사용하기 편하게 껍데기만 변화했을 뿐이다. Jenkins와 같은 도구도 과거에는 shell script로 수행해오던 기능을 편리함과 생산성을 추구하는 현대의 개발자들은 UI 껍데기에 기반한 도구를 선호한다. 그러다 보니 "No Code"라는 개념까지 나오고 자동 코드생성도구도 많다.

현대까지 진화한 DevOps 도구 중에는 Atlassian의 Jira Family와 같이 연 수억의 비용을 지불하며 사용하는 초대형 회사에서 필요로 하는 도구도 있고 Gitea와 같이 50명의 개발자 이내에서는 CI/CD와 이슈관리를 효율적이고 무료로 관리할 수 있는 도구도 있다. 그 외에도 수 많은 상용 제품과 오픈소스가 있으니 좋다 나쁘다는 각자의 환경에 달려 있다. 소프트웨어 개발의 전체 사상은 같으나 제품의 한계와 특성상 각 개발팀이 중요시 하는 영역이 다르니 다양한 제품이 나올 수 밖에 없다. 자동차 한대로 모든 고객을 만족시키는 것은 불가능하다.

필자는 꼭 필요한 경우외에는 고가 명품을 구매하지 않는다. 프랑스의 저명한 사회학자인 장 보드리아드의 가치이론에 따르면 "명품 기호가치"는 사용가치는 낮지만 과시용으로 비싼 비용을 지불하며 구매하는 것이 현대인의 소비 행태이다. 롤렉스 시계는 사용가치는 매우 낮지만 과시용으로는 좋기에 고가의 비용임에도 구입하는 것이다. 한국이 전 세계에서 가장 중요한 명품시장이다.

소프트웨어 도구에도 이런 소비 문화가 없을 수가 없다. 오픈소스부터 최고가의 제품까지 다양하게 사용해본 필자가 볼 때 저비용 혹은 무료의 도구에도 충분한 경우에 쓸데 없이 복잡하고 고가인 제품을 사용하는 것을

많이 봐 왔다. 물론 그 반대의 경우도 있다. Git와 같은 소스코드관리 도구 하나로 소프트웨어를 개발하겠다는 무모한 돈키호테도 있다. 컨설팅하다 보면 아직 국내 개발문화가 글로벌과 수십년 이상 뒤떨어진 곳도 무시할 수 없이 눈에 띈다.

국내용이 아닌 글로벌 품질의 소프트웨어를 개발하기 위한 절대적으로 필요한 것이 DevOps의 사상을 잘 이해하고 각자의 환경에 맞게 적당한 도구를 선택하는 것이다. DevOps 도구중에서 국내에서 많은 중소형급의 개발자들이 사용하기에 적당한 Jenkins, OpenProject, Gitea와 같은 훌륭한 오픈소스를 중심으로 앞으로 소개하려고 한다.

댓글 없음: