DevOps는 Development(개발)와 Operations(운영)이 합쳐진 단어이다. 이를 통해 신속한 애플리케이션과 서비스를 고객에게 제공한다. 이 목적을 달성하기 위한 조직 역량을 개선시키려는 방식 및 도구의 조합 또는 문화철학이다. 신속한 서비스 제공은 고객에게 신뢰를 주며 시장에서 좀 더 효과적으로 경쟁할 수 있다. 일반적인 인터넷 서비스 회사가 한달에 한번 또는 일주일에 한번정도 한다면 경쟁 자체가 달라질 수 있다.
전통적인 IT조직은 개발팀과 운영팀이 나뉘어 개발팀은 운영팀에 결과물을 넘기면 끝이고 운영팀에서는 개발팀의 결과물을 올려서 문제가 있는지 확인하고 문제가 있으면 다시 개발팀에게 요청하여 결과물을 다시 받아서 올리는 절차를 거친다. 개발팀과 운영팀의 역할이 완전히 서로 격리된 채로 협업아닌 협업을 하고 있었던 것이다. 여기에 보안팀과 품질보증팀하고도 통합되려면 전체적인 애플리케이션 배포수명 주기는 상당히 지연될 수 밖에 없는 구조이다. 그렇다고 물리적으로 개발팀과 운영팀을 합친다고 신속한 DevOps가 갑자기 만들어지는 것은 아니다.
현업에서는 DevOps 방식으로 개발팀과 운영팀을 합쳐서 실제로 구성하는 조직도 있다. 개발자의 생산성과 운영의 안정성을 모두 한팀 내에서 원할하게 소통하고 서로간의 필요한 호율성을 높이고 서비스의 품질을 개선하기 위해 노력하는 것이다. 그러나 물리적인 팀의 구조를 따를 필요는 없다. 별도 조직이면서도 DevOps 엔지니어를 도입하여 두 팀간의 긴밀한 협업을 여러 자동화 방식으로 풀어갈 수 있으며, 품질보증팀과 보안팀과의 관계도 연결하는 관리도 자동화로 가능하다.
때로는 엔지니어가 프로그래밍(개발)하고 빌드하고 직접 시스템에 배포 및 서비스를 실행하고 사용자와 끈임없이 Interaction하면서 서비스를 개선한다는 설명도 있으나 아무리 작은 조직이라도 이렇게 한다는 것은 무리이다.
첫째는 배포자동화도구이다. DevOps방식(배포 자동화 등)을 사용하여 속도가 느리고 수동으로 진행하던 프로세스를 자동화 한다. 여기에는 빠르게 운영하느데 도움이 되는 기술 도구등을 사용한다. 배포 이외에 보안과 관련된 규정 준수와 관리 기술 정책 등을 포함하기도 한다.
둘째는 기업의 기술문화이다. DevOps를 문화철학이라고 하는 이유는 개발팀과 운영팀과의 주인 의식과 책임 문화를 정착시켜 서로 간의 많은 책임을 공유하고 실제 워크 플로우를 합치기도 하며 시간을 절약하기도 한다.
셋째는 효율적인 CI/CD이다. DevOps에는 인프라 관리와 프로비저닝을 수동프로세스가 아닌 코드를 통해 인프라를 관리하는 IaC(Infrastructure as Code)라는 개념도 포함한다. 이것은 개발자에게 제공되는 개발환경, 테스트환경, 운영환경을 반복 가능하고 효율적으로 관리할 수 있다.
DevOps는 CI(Continuous Integration), CD(Continuous Delivery)를 가능하게 한다. CI/CD는 빌드에서 배포까지 소프트웨어 릴리즈 프로세스를 자동화하는 방식이다. CI는 배포 이전 단계인 공유 레파지토리 Git이나 SVN빌드에 테스트, 병합 등으로 최종 릴리즈까지 통합 과정의 자동화를 의미한다. 궁극적으로는 버그를 신속하게 찾아 해결하고 소프트웨어 품질을 개선하며 새로운 업데이트의 검증 및 릴리즈의 시간을 단축한다. CD는 CI에서 릴리즈된 최종 결과물을 고객의 운영(Production)환경까지 릴리즈 되는 것을 의미하며 언제든지 복구등이 가능한 버전을 유지하는 역할을 한다.
다섯째는 모니터링과 로깅이다. DevOps는 배포 사후 관리인 모니터링과 로깅을 통해 실시간으로 성능에 대한 정보를 얻을 수 있다.
여섯째는 마이크로 서비스(MSA)이다. 운영환경이 전통적인 방식인데 이것을 마이크로 서비스(MSA, Microservice Architecture)로 변경하게 되면 서비스를 주도적이며 업데이트를 좀 더 빠르게 릴리즈 할 수 있다.
요약
신속한 애플리케이션과 서비스를 고객에게 제공하기 위한 것이 목적이며 Dev(개발)과 Ops(운영)간에 나뉘어진 장벽을 깨고 서로간의 협업을 중시한다. 기존 소프트웨어 프로세스들 간의 관계(개발, 운영, 품질, 보안 등)를 효율적인 자동화로 개선시키려는 방식 및 도구의 조합 그리고 문화철학 또는 협업철학이다.
메타버스란? (0) | 2022.07.12 |
---|---|
알고리즘 & 자료구조 - 큐(Queues), 스택(Stacks) (0) | 2022.07.07 |
[CS지식] www.naver.com을 주소창에 치면? (0) | 2022.07.06 |
쿠버네티스란(Kubernetes)? (0) | 2022.07.06 |
도커란 무엇인가(Docker) (0) | 2022.07.06 |
댓글 영역