최근 사내에서 CICD 프레임워크 도입으로 꽤나 큰 규모로 배포시스템의 변화가 생기게 되었습니다.
Jenkins, Jira 등등... 많이 들어본 이름이지만 상당히 생소한 용어였기에 새로운 배포시스템을 도입하면서 간간히 공부하였지만, 따로 정리는 하지 않았기에 이번에 DevOps의 개념부터 시작하여 정리해보려고 합니다.
DevOps는 신규 배포시스템 도입의 전조같은 느낌으로 사내에서 주요되는 이슈로 등장했습니다. 이후 신규 배포시스템 도입 프로젝트 (ALM 프로젝트)가 시작되면서, 이것이 DevOps문화와 관련이 된다는 것을 알아차릴 수 있었습니다.
그 흐름에 따라서 DevOps에 대한 간단한 개념부터 알아보도록 합시다.
DevOps란
애플리케이션 개발의 품질과 속도를 개선하고,
소프트웨어 기능 및 제품 릴리즈 주기 단축을 장려하는 새로운 철학이자 프레임 워크를 뜻한다.
DevOps의 특징
- 개발팀(Dev)과 IT운영 팀(Ops) 팀 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려.
- 소프트웨어 기획부터 코딩, 구축, 테스트 및 릴리즈 단계와 구축, 운영 및 지속적인 모니터링에 이르는 DevOps 라이프사이클의 모든 단계에 걸쳐 Dev팀과 Ops팀의 긴밀한 관계가 계속됨.
- 소프트웨어의 지속적인 피드백 루프* 추진의 원동력이 됨. (*추가 개선, 개발, 테스트 및 구축)
- DevOps 툴을 사용하여 DevOps의 목표인 문화, 자동화, 측정 및 공유(CAMS) 모든 영역을 지원하고 자동화를 통한 업무의 효율성을 개선 및 효율적인 협업이 가능함.
DevOps의 결과
- 필요한 기능 변경 및 추가를 더 빠르고 지속적으로 릴리즈 가능.
DevOps의 필요성
- 개발 팀과 IT 운영 팀 간의 커뮤니케이션 및 협업이 쉬워지고 무엇보다도 고객 만족과 더 빠른 가치 제공.
DevOps 방법
(상세한 내용은 블로그로 따로 정리하는 시간을 갖도록 하겠다!)
- 스크럼
- 칸반
- 애자일
회사에서 변경된 DevOps 툴셋
(각각은 꼭 자세히 한번 공부해보도록 한다.)
- Jira (계획) : 비즈니스 가치 및 요구사항 정의하고 프로젝트 관리 수행에 도움
- Bitbucket (코딩) : 소프트웨어 설계 및 코드 생성
- Gradle, MSBuild (구축) : 소프트웨어 빌드 및 버전 관리 그리고 자동화된 툴로 코드를 컴파일하고 패키징.
- 테스트 툴은 아직 도입되지 않음!
- Jenkins + AWS CodeDeploy (배포) : 제품 릴리즈를 자동화하는데 도움이 되는 툴.
- 모니터링 툴은 아직 도입되지 않음!
* DevOps라는 것이 고객을 중심으로 빠른 서비스 제공과 피드백의 순환이 가능하게 하는 만큼, 단순히 문화의 측면 뿐만 아니라 이를 뒷받침 해줄 수 있는 도구 또한 중요하다는 점을 잊지않도록 합시다.
[참고: https://www.netapp.com/ko/devops-solutions/what-is-devops/]