DevOps란

소프트웨어 관련 일을 하고 있다면 한번쯤은 들어봤을 DevOps. 하지만 개념에대해 잘 모른다. 개념정립할겸 정리하고자 한다.DevOps란, Development(개발) + Operations(운영)의 합성어다.
개발팀에서는 현업에서 요청한 요구사항들을 개발하고 이를 가지고 운영팀에서는 운영하기에 상호 팀간에 조화가 필요하다. 유기적으로 잘 아우러져야 개발과 운영에 차질이 없어진다. 서로 다른 역할을 지닌 팀들이 유기적으로 조화를 이룰 수 있도록 도와주는 것이 DevOps라 보면 된다.
DevOps는 직원참여를 통해 커뮤티케이션이 원활해져 협업 강화시키며 빠른 속도로 개발 및 적용을 할 수 있도록 도와준다. 또한 DevOps를 활용하고 CI/CD를 구현하면 배포 빈도, 구축 기간, 보안성, 결함 탐지, 복구시간 등을 크게 개선할 수 있어 안정적인 애플리케이션 구축 및 운영에 효과적인 방안이 될 것이다.
DevOps장점
- 최종 목표를 명확화하여 신속하고 정확한 연구개발이 이뤄질 수 있다.
- 신속한 프로토 타이핑 및 A/B 테스트 또는 Canary release를 지원한다.
- 새로운 서비스와 혁신적인 것들을 만들 수 있다.
- 배포 빈도를 증가 시킬 수 있다.
- 여러 부서간에 협업을 증진시킨다.
- 유지보수에 소요되는 시간을 단축시켜 준다.
- 여러 직원들이 함께 참여할 수 있도록 도와준다.
- 애플리케이션의 성능 및 품질을 향상시켜준다.
- 출시기간을 단축시켜 준다.
- 테스트, 개발 및 운영을 위한 시간을 단축시켜준다.
- 자동화 된 테스트 및 실시간 모니터링을 통해 버그 및 보안 문제를 지속적으로 수정하여 기술적인 문제를 예방해 준다.
CI/CD
CI (Continuous Integration) 및 CD (Continuous Delivery)는 DevOps의 핵심 구성요소이다.
CI는 지속적 통합이라는 말 그대로 여러 개발자들이 소스를 반영(git, subversion 등에 커밋)하게 되면 실시간으로 빌드하고 테스트하는 것을 말한다.
즉, 빌드와 테스트를 실시간으로 실시하는 프로세스를 말하며 다수의 개발자가 애플리케이션 개발을 진행할 때 서로간의 충돌을 방지해주고 언제든지 개발하고 있는 최신버전의 소스로 테스트할 수 있게 해준다.
CD는 지속적으로 배포된다는 말 그대로 테스트된 애플리케이션을 실제 쓰는 사용자에게 자동으로 배포하는 것을 의미한다. 애플리케이션을 짧은 주기로 안정적으로 배포할 수 있도록 도와주는 것이다. CI/CD는 자동화로 애플리케이션 구축, 테스트 및 배포하는 것을 목표로 한다. 이러한 방식을 이용하면 운영환경에 애플리케이션을 점진적으로 업데이트 할 수 있어 수정사항들을 짧은 시간에 사용자들이 이용할 수 있도록 도와준다.
즉, CI에서 빌드 및 테스트가 된 완성도 있는 애플리케이션을 실제 사용자가 쓰는 운영에 실시간으로 배포하는 것을 의미한다.
참고페이지
https://software.af.mil/training/devops/