DevOps는 'Development(개발)'와 'Operations(운영)'가 결합해서 만들어진 용어입니다.
그렇지만 단순히 두 개의 용어가 결합했다는 의미를 넘어 좀 더 포괄적인 개념을 가지고 있습니다.
DevOps는 어떤 하나의 아이디어가 사용자에게 가치를 제공할 수 있도록 운영 환경에서부터 개발, 배포 과정을 거치면서 진행 프로세스의 속도를 높이는 접근 방식이며, 개발자와 운영자가 상호 협력해가면서 비즈니스의 가치를 실현하는 개념을 가리키고 있습니다.
DevOps는 개념이기 때문에 어떤 특정한 방법론을 가리키지는 않습니다.
DevOps에는 보안, 협업 방식, 데이터 분석을 비롯하여 여러가지의 요소가 포함되는데, "10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1일 10회 이상의 배포: Flickr에 의한 개발과 운용의 협력관계"라는 프레젠테이션에서 비즈니스의 가치를 지속적으로 전달하기 위해 개발자(Dev)와 운영자(Ops)가 집중해야 하는 것에 대하여 조직의 문화와 도구의 관점에서 다음과 같이 제시하고 있습니다.
- 조직의 문화
- 상호 존중(Respect)
- 상호 신뢰(Trust)
- 실패에 대한 건전한 태도(Healthy attitude about failure)
- 상대를 비난하지 않기(Avoiding Blame)
- 도구
- 자동화된 인프라(Automated Infrastructure)
- 버전 관리 시스템의 공유(Shared Version Control)
- 원스텝 빌드와 배포(One Step Build and Deploy)
- 피처 플래그(Feature Flags)
- 지표 데이터의 공유(Shared Metrics)
- IRC와 인스턴트 메신저 봇(IRC and IM robots)
제시된 내용을 살펴보면 결국 비즈니스의 목적을 달성하기 위해서는 조직과 도구의 양면에서 개선해나가야 한다는 이야기이며, 이러한 활동의 전반을 DevOps라고 부르고 있습니다.
MLOps는 'Machine Learning(기계학습)'과 'Operations(운영)'가 결합해서 만들어진 용어입니다.
DevOps의 표현을 빌려왔다고 할 수 있겠습니다.
DevOps에서 개발/개발자의 역할을 기계학습(머신러닝)으로 바꾼 개념이라고 보면 쉽게 이해할 수 있겠네요.
MLOps와 DevOps는 다음과 같은 공통점을 가지고 있습니다.
- 팀들을 이어주는 견고한 자동화와 신뢰
- 팀 간 협업과 의사소통 강화에 대한 아이디어
- 서비스 생애주기의 처음부터 끝까지 개발(Build), 테스트(Test), 출시(Release)
- 지속적 전달(Continuous Delivery, CD)과 품질 검증 간의 우선순위 조정
- 지표 데이터의 공유(Shared Metrics)
이처럼 DevOps와 MLOps는 소프트웨어의 코드를 배포하는 것과 머신러닝의 모델을 배포하는 것이라는 차이를 가지고 있습니다.
여기까지의 내용을 기준으로 생각해보면 DevOps나 MLOps의 목적은 개발자나 머신러닝 연구자와 운영 담당자 사이의 협업과 자동화를 통한 소프트웨어 및 머신러닝 모델의 개발 관행을 최적화하기 위한 것이라고 생각할 수 있습니다.
협업을 다룬다고 하는 것을 보아서 DevOps나 MLOps는 팀을 위한 것이라는 것을 알 수 있습니다.
그러나 개발과 운영이라는 주제를 통합해서 다루고 운영해 나가는 기술은 팀뿐만 아니라 1인 개발자나 1인 사업자에게도 매우 중요한 주제입니다.
팀의 단위에선 서로 협업을 잘 하고 최적화된 일을 할 수 있게 해 주는 것이 중요하겠지만 1인 개발자/사업자에게는 협업이건 최적화건 선택의 여지가 없지요.
무조건 혼자서 다 해야 하니까요.
그래서 저는 개인이 혼자 구축하고 사용할 수 있는 Personal MLOps라는 주제로 AiDAOps 프로젝트를 시작하였습니다.
아마 일반적인 DevOps나 MLOps와는 많이 다른 형태가 될 가능성도 크겠죠.
또한 일반적인 ○○Ops들에서 강조하는 AWS 등의 클라우드 서비스도 사용하지 않습니다.
그런 서비스들은 자칫 잘못 사용하면 엄청난 비용이 들어가는데... 개인이 감당하기 어려운 수준이 될 가능성이 큽니다.
어쩌면 ○○Ops의 탈을 쓴 전혀 다른 결과물이 나올지도 모르겠습니다.
그러나 저를 비롯하여 많은 1인 개발자/사업자들에게 필요한 주제라고 생각하면서 진행하고 있습니다.
(사실.. 시작은 벌써 수 개월 전에 시작했습니다만... 수익이 나는 다른 일에 밀리다보니.. 이제야 손을 대기 시작했습니다.)
본격적인 내용은 Project/AiDAOps(https://aidalab.tistory.com/category/Project/AiDAOps)에서 계속 진행됩니다.
그리고 이 카테고리에서는 일반적인 MLOps와 관련 정보들을 다룰 예정입니다.