DevOps란 ?
IT업계에 종사하고 있다면 한 번쯤은 DevOps라는 단어를 들어봤을 거라고 생각합니다.
약 5년 전 까지만 해도 개발자 붐이 일고 채용시장에서는 개발자를 확보하기 위해 거금을 투자하고 정부 차원에서도 여러 개발자 양성 교육에 힘써왔습니다. 그리고 나서 시간이 좀 흐른 현재, 최근 몇 년전 부터는 DevOps에 대한 수요가 점차 증가하고 있습니다.
DevOps의 이름에서 유추할 수 있듯이 Development(개발) + 운영(Operations) 을 내재하는 말인 것 같은데 개발과 운영을 같이 하는 할 줄 아는 사람을 말하는 것일까요?
인터넷을 검색해보면 DevOps에 대해서 아래와 같이 설명합니다.
" DevOps는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다. "
설명하는 사람에 따라서 누군가는 문화, 누군가는 방법론, 누군가는 철학, 누군가는 공학 모델 이라고 하여 처음 듣는 사람에게는 너무 모호하게 들리기 마련입니다.
그래서 대체 DevOps가 뭔데 ?
라고 궁금해 하시는 분들이 많으리라 생각합니다. 하지만 이에 대한 명쾌한 대답을 드리기는 어려울 것 같습니다. 왜냐하면 DevOps는 한마디로 정의하기에는 너무 포괄적이고 방대한 내용을 다루기 때문입니다.
최대한 정리해서 말 해보자면 DevOps란 개발부터 운영까지 자동화된 프로세스를 통해 이루어지고 원활한 커뮤니케이션과 여러 도구를 토대로 지속적인 개발-배포-운영의 라이프사이클의 주기를 가속화하고 안정화하는 것을 목표로 하는 방법론 입니다.
이러한 목표를 이루기 위한 서브미션은 각자 이해관계자에 따라 달라질 수 있습니다. 따라서 DevOps를 정의하는 것 또한 개인에 따라 달라질 수 있는 것이며 하나의 개념으로 정립할 수 없는 것입니다. 그래서 질문을 살짝 바꿔서 해보겠습니다.
DevOps 어떻게 하는건데 ?
다행히도 이에 대한 대답은 비교적 명확합니다. 간단하게 말하자면 DevOps를 하려면
개발 속도는 높이고 + 통합 및 배포는 자동으로 + 운영은 안정적으로 하면 됩니다.
말은 쉬운데 참으로 이상적이기 그지 없습니다. 그래서 DevOps를 적용하기는 쉽지 않고 기업은 해당 전문가를 필요로 하는 것입니다. 하지만 최근에는 DevOps 를 실현하기 위한 다양한 도구들(Tools)이 있습니다. 아래는 소프트웨어 개발주기의 각 단계별로 필요한 도구들에 대한 이미지 입니다.
"와.. 그럼 DevOps 엔지니어는 이 모든걸 다 파악하고 알 수 있어야 하는 거야?" 라고 생각하실 수 있습니다. 과연 이 모든 Tool들과 개발지식, 운영지식을 한 사람이 모두 커버할 수 있을까요? 정답은 Never 입니다. 혼자서는 절대 DevOps를 실현할 수 없습니다.
최근 업계에서 필요로 하는 DevOps 엔지니어는 개발과 운영을 모두 다 할줄 아는 사람이 아니라 개발자와 운영자 사이에서 원활한 매개체 및 중재자 역할을 수행할 수 있는 역량을 가진 사람입니다. 그러기 위해서는 당연히 개발자, 운영자 수준의 깊이있는 전문성은 아니지만 준 전문가 수준의 지식을 필요로 합니다.
DevOps 엔지니어가 갖춰야할 역량에는 어떤 것이 있을지는 다음 포스팅에서 소개하도록 하겠습니다.