DevOps란?
지극히 주관적인 정보입니다.
[1] 개요
여러분도 어디선가 들어봤을 겁니다, DevOps. 대체 이건 뭔교?
사실 이 포스트를 쓰면서 저도 감은 잡히지 않습니다.
다만 이게 개발 방법론이라고는 하는 듯 합니다.
개발 방법론? 그건 또 뭔교?
간단하게 설명드리면,
공동으로 개발을 하는 데 있어서, 이름 그대로 방법을 제시하는 것.
추상적인 말이지만, 실제 알고리즘을 구조를 제외하고, 이론을 이해를 하기엔 이만한 말이 없습니다.
[2] DevOps
사실 위에서 개발 방법론을 설명했기에 이 종류를 쓰려고 했지만,
생각해보니 매우 따분해질 것 같아서 그냥 패스합니다.
우리는 (적어도 저는) 그걸 위해서 작성하는 게 아니니까요.
간단하게, 개발 방법론의 종류에는 시간적 순서대로
구조적 방법론 > 정보 공학적 방법론 > 객체지향 방법론 > CBD 방법론 > 애자일 방법론
이 있다고 생각하시면 됩니다. 마찬가지로 DevOps도 개발 방법론입니다.
애자일이 이름 그대로 빠르게 프로토타입을 만들고, 요구사항에 맞춰 유연하게 바꿔나가는 방식이라면
DevOps는 Agile과 유사하지만, 기존의 Agile에서 분리되어 작업하던 개발자(Dev)와 서비스 운영자(Ops)를 합친다는 의미입니다.
다시 말해, 이제 개발이 되면 바로 바로 서비스를 배포할 수 있게 된다는 의미이기도 합니다.
내가 개인 프로젝트 할 땐 내가 개발하고 끝나면 바로 배포할 수 있었는데?
설마 이런 말을 하지는 않겠지만..
당연히 회사에서 B2B를 진행하는데 그걸 개인과 비교하지는 않을 거라고 생각합니다.
어찌보면 그게 DevOps지만, 회사에서는 그걸 적용하기가 쉽지 않았습니다.
어쨋든, DevOps는 그런 ‘문화이며 개념‘ 입니다.
이러한 DevOps에서 다루는 개발 방법은 다음과 같습니다.
협업, 커뮤니케이션을 중시
당연하다면 당연한 이야기지만, 개발자와 운영자의 협업이 없으면 서비스는 만들어 질 수가 없습니다. 두 팀이 협업을 한다고 해도, 개발팀과 인프라 운영팀이 분리되어 있으면 서로 조율을 하기가 쉽지가 않죠. 쉽게 생각하면 개발자와 운영자가 자주 대화할 수 있는 자리를 마련해야 한다는 의미이기도 합니다.
CI / CD를 중시
지속적인 통합(Continuous Integrattion) 과
지속적인 배포(Continuous Deploy 또는 Continuous Delivery)
를 합친 말로, 이게 이루어져야 한다는 의미입니다. 다시 말해 개발, 테스트, 배포가 통합되고,자동화되어야 한다는 의미이기도 합니다. 이를 가능하게 해주는 툴은 Jenkins 등이 있습니다.
찾아보니 상품도 있었습니다.
번외) 상품
갑자기 상품이라니? 하고 생각할 수도 있겠지만, 대형 IT 기업들은 자체 DevOps 솔루션을 팔고 있습니다. 당장 인터넷에 검색만 해도 IBM, Amazon, Microsoft, Redhat, netapp, Newrelic 등등 여러 기업들이 자체 솔루션을 제공합니다. 아마 위에서 말한 협업, 지속적 통합 및 배포에 필요한 전체 도구를 패키지 상품 형식으로 제공하는 듯 합니다.
나중에 기회가 된다면 해당 솔루션을 이용해 보고 싶긴 합니다.
[3] 참조 사이트
- 소프트웨어 개발 방법론, 위키피디아
- 8 Best Software Development Methodologies
- 데브옵스 (DevOps)
- 데브옵스 알아가기(1) : 애자일과 데브옵스
- [개발문화탐구] 데브옵스 (DevOps) - 애자일(Agile)
- 애자일 방법론과 데브옵스의 유래
- DevOps란 무엇일까요?
- DevOps란?
- DevOps를 하려면 무엇부터 해야 할까?
- [DevOps]CI/CD (지속적 통합/지속적 제공) 개념과 과정/ 툴 별 장단점 비교
- [Devops] CI/CD 개념