최근에 감히 MLOps를 공부하려고 했다가 어려움에 직면했었다. 그래서 개발 공부를 한다면 어디서부터 시작할 수 있을지 찾아보다가 DevOps부터 차근차근 공부하며 성장하는게 맞다는 결론을 내고 오늘부터 시작하기로 했다. DevOps는 MLOps보다는 더 빨리 나온 개념이라서 그런지 구글에 검색해보니 훨씬 더 많은 자료들이 있었다. 물론, Github에도 검색하면 능력자 외국인 분들이 계셔서 자료를 찾고 정리하기가 편한 것 같다. 이제 시작해보자!
DevOps 하면 가장 많이 떠올리는 것이 바로 CI/CD 일 것이다. 추후에 개발 공부를 하며 더 알아볼 생각이지만 상단의 그림에서도 알 수 있듯이 개발 빌드부터 배포까지 Continuos Integration이 계속 일어나는 곳이 DevOps이다. 실제 개발을 하고 AWS EC2에 내가 작성한 코드를 배포할 때 불편한 점이 이만 저만이 아니다.
Django/Spring으로 작성한 코드를 백엔드 서버로 배포하고 기능 테스트를 할 때 알 수 없는 오류로 지친 경험들이 직/간접적으로나마 나에게 DevOps를 갖추라고 하는 것 같다. 나같은 개발자 입장에서는 DevOps는 개발 빌드부터 배포까지 자동적으로 해주는 시스템이라고 할 수 있다. 다른 곳에서는 DevOps를 어떻게 정의할까?
Amazon
DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다.
Microsoft
개발(Dev)과 운영(Ops)의 합성어인 DevOps는 개발, IT 운영, 품질 엔지니어링, 보안 등 이제껏 서로 단절되었던 역할들이 서로 조율하고 협업하여 더욱 안정적이고 뛰어난 제품을 생산할 수 있도록 지원합니다.
이러한 기업에서 제공해주는 개념들을 조합해서 보면 "빠른", "협업", "향상"이라는 단어가 있는데 분리되어 있던 조직들이 서로 협업해서 빠르게 제품을 향상 시키는 것이라고 말할 수 있다.
먼저, DevOps의 목적 즉, 사용 이점을 살펴보면 4가지로 정리할 수 있다.
지금 2년차 스타트업을 하면서 시장에 다양한 아이템을 출시하고 개발을 해보면서 느낀 것이지만 DevOps는 IT 시장의 경쟁 심화와 Agile 문화 확산으로 인해 만들어진 것이라고 생각한다. 실제 IT 시장에서 아이템을 기획하고 출시하는데 없는 아이디어는 없었다. 다만, 더 나은 UX를 제공하기 위한 노력만이 필요할 뿐이었다. 그런 노력은 우리 스타트업만 하는 것이 아니고 다른 조직에서도 하고 있다. 이러한 경쟁 환경의 변화에서 가져가야하는 것은 바로 속도이다. 그래서 운영과 개발이 서로 분리되어서 제품을 만들게 되면 시장이 한참 변한 이후에 개발이 변하게 되어 고객이 이탈하게 된다. 그래서 소규모 업데이트를 빠르게 하면서 UX를 증진시켜야 했고 그 결과, DevOps가 필요해진 것이라고 몸소 느끼고 있다.
DevOps를 시스템운영자로 정의를 할지 소프트웨어 엔지니어로 정의를 할지에 다르긴 하지만 대표적인 DevOps의 역할은 다음과 같이 정리할 수 있다.
물론, 조직마다 차이가 있어서 엔지니어의 역할도 회사마다 다르다. 만약 나와 같은 스타트업 조직에 있다면 제품이 많지도 않고 개발자도 많지 않아서 DevOps의 역할이 전체 라이프사이클에 관여하게 될 수 있다. 그러나 카카오와 같은 대규모 조직에서는 DevOps 팀이 존재할 것이고 DevOps의 일부분에만 관여할 가능성이 커질 것이다.
지금까지 DevOps의 개념에 대해서 많이 공부를 했다. 다음에는, DevOps 엔지니어가 되기 위한 노력을 그려보고자 한다.