요즘 트렌드의 기술들이나 개발과 관련된 글을 읽다 보면 DevOps라는 단어가 자주 등장을 한다.
간단하게 DevOps를 찾아봤을 때는 Dev와 Ops가 합쳐진 합성어이다. 즉, [개발과 운영이 합쳐진 것이다.] 정도로만 나와있는데 이걸 그냥 봤을 때 정확히 와닿지가 않는다.
그래서 이에 대해 여러 글을 읽으며 이해한 바를 정리하여 공유한다.
1. 정의
DevOps는 Development + Operations의 합성어로, 기존의 분리되어 있는 개발 업무와 운영 업무를 하나로 통합하여 의사소통을 원할하게 하자는 개념이다.
무슨 문제가 있길래 개발 업무와 운영 업무를 통합하려고 하는 것일까?
서비스를 개발하는 개발자와 이를 운영하는 운영팀이 따로 분리가 되어 있을 경우에는 의사소통에 어려움이 있다. 운영팀에서는 고객들의 요구를 취합하여 개발팀에게 서비스 개선을 요청하지만, 개발자는 기존 시스템의 안정성을 가장 중요하게 생각하여 신규 요구 사항에 대한 저항을 할 수도 있고, 추가 업무로 인식하여 거절하는 경우도 있다.
이러한 의견 충돌로 인해 개발팀과 운영팀의 관계가 악화되며, 결국 시장과 고객에게 대처하는 속도 및 효율성이 떨어지는 결과를 초래하게 된다.
이 때문에 개발팀와 운영팀이 커뮤니케이션을 원할하게 하여 협업 및 통합을 추구하자는 것이 DevOps의 목표이다.
2. 장단점
그렇다면 DevOps를 통해 얻을 수 있는 장단점으로는 무엇이 있을까?
우선 장점으로는 개발팀과 운영팀이 공통 지표를 맞추고, 지속적인 의사소통을 통해 서로의 업무상 생기는 문제점에 대한 의견 격차를 줄여가며 협업이 가능하므로 생산성이 증가한다. 또한 한 팀에서 개발 및 검증, 배포까지 모두 담당하므로 시시장 변화에 효율적이고 신속하게 대처할 수 있다.
단점으로는 다양한 구성원이 모여 하나의 팀이 되어 활성화되기 까지 충분한 시간이 필요하다는 정도가 있다.
3. 사용법
일부 기업에서는 DevOps를 하기 위해 DevOps Engineer라고 하여, 엔지니어가 프로그래밍하고, 빌드하고, 시스템에 배포와 서비스를 하며 테스트까지 진행하기도 한다.
하지만 DevOps는 협업에 포인트를 둔 것이므로 그보다는 개발팀과 운영팀을 분리하지 않고 하나의 팀으로 합치는 방향이 좋을 듯 하다.
이에 따라 영국 정부에서 제공하는 "Good Habit for Devops"의 내용에서 Devops의 방향성을 찾아보자.
① Cross functional team
하나의 팀에 각각 다른 역할을 할 수 있는 팀원들로 구성하여 해당 서비스에 관련된 모든 것을 할 수 있도록 한다. 이 때 주의해야하는 것은 모든 것을 할 수 있는 인원들로 구성하는 것이 아니라 각 역할에 따라 담당하는 인원들로 구성을 하도록 한다.
② Widely Shared Metrics
팀 전체가 기준으로 삼을 수 있는 서비스에 대한 공통적인 지표(Metric)이 필요하다. 일 방문자 수, 가입자 수와 같은 비즈니스 지표 또는 CPU 사용률, 메모리 사용률, 응답 시간 등 기술지표와 같은 지표를 활용하여 팀 전체가 서비스의 상태를 인지하고, 협업을 통해 이에 대한 개선 작업을 진행할 수 있도록 한다.
③ Automatic repetitive tasks
반복적인 작업을 툴을 이용하여 자동화한다. 반복적인 작업의 자동화를 통해 작업의 효율을 높이고 빠른 서비스 업데이트를 가능하게 하며, 이러한 자동화 시스템 구축을 통해 전체 시스템에 대한 이해도를 높일 수 있다.
④ Post mortems
장애나 이슈가 발생했을 경우 그 내용을 전체 팀과 공유해야 한다. 이를 통해 같은 이슈가 다시 발생하지 않도록 대비한다.
⑤ Regular release
정기적인 릴리즈이다. 시스템 릴리즈는 개발,테스트,배포 등 많은 협업이 필요한 작업이다. 이에 따라 정기적으로 릴리즈할 주기를 설정하면 전체 협업하는 입장에서 언제 어떤 협업을 해야 할지 명확해져서 개발을 흐름을 탄다.
4. 알려진 보안적 이슈 및 취약점
협업을 중시하는 DevOps 프레임워크에서 보안은 공동의 책임이며 처음부터 통합되어야 한다. 이는 매우 중요한 개념이기 때문에 DevOps에 보안을 구축해야한다는 사실을 강조하기 위해 "DevSecOps"라는 용어가 등장하였다.
DevSecOps는 처음부터 Application 및 Infra 보안을 고려해야 함을 의미한다. 보통 보안은 개발 최종 단계에서 적용이 되는데 점검 중 심각한 보안 결함 발견 시 최악의 경우 개발 소스를 재작성해야할지도 모른다는 Risk가 항상 존재한다. 이를 해결하기 위해 처음부터 보안을 생각하여 공격으로 이어질 수 있는 관리상의 잘못과 실수가 줄이자는 것이다.
그러나 통합을 위해서 넘어야 할 장애물이 있다.
DevOps와 DevSecOps는 운영 모델과 목표가 서로 다르고, 기술과 솔루션의 부족에 대한 우려가 있다. 데브섹 옵스에 대한 지식을 갖춘 보안 실무자의 수가 아직 적으며, 데브옵스 보안을 위한 업체는 솔루션 범위도 넓지 않고 인지도도 부족해 힘을 얻기가 어렵다는 것이다.
하지만 전문가들은 이런 과제는 극복할 수 있으며, 궁극적으로 안전한 어플리케이션과 취약점 감소를 이끌 것임을 확신하고 있다.
참고 )
- https://blog.naver.com/dilector/220850105636
- https://postitforhooney.tistory.com/entry/DevOps-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EC%9A%B4%EC%98%81%EC%9D%98-%EC%A1%B0%ED%99%94-DevOps%EB%9E%80
- https://www.itworld.co.kr/news/107841
- https://blog.lgcns.com/2086
'Develope' 카테고리의 다른 글
Docker (0) | 2020.11.16 |
---|---|
vim 백업파일 (0) | 2019.12.17 |
개발공부 > 블랙박스 모의해킹 시 참고할 파일들 (0) | 2018.12.24 |
일기장만들기 프로젝트 (0) | 2018.11.25 |
[JavaScript] 실행 순서 유의 사항!! (0) | 2014.10.12 |