1. 데브옵스란?
데브옵스(DevOps)는 빠르게 변하는 비즈니스 요구에 대응하고, 개발과 운영 간의 협업을 극대화해 빠른 서비스 제공을 가능하게 하는 방법론이다. "Development(개발)"과 "Operations(운영)"의 합성어로, 개발과 운영 담당자가 긴밀히 협력해 높은 효율을 낼 수 있도록 하는 것이 핵심이다.
데브옵스는 정의가 명확히 고정되지 않았으며, 많은 기관들이 그들의 경험과 시각에 따라 각기 다른 방식으로 정의한다. 다음은 여러 기관에서 정의한 데브옵스의 의미를 비교해 본다:
- Atlassian
- 데브옵스는 팀 지원과 팀 간 커뮤니케이션, 기술 자동화를 강조하며, 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 관행, 도구 및 문화적 철학이다.
- Amazon
- 데브옵스는 애플리케이션과 서비스를 빠르게 제공할 수 있도록 조직의 역량을 높이는 문화 철학, 방식 및 도구의 조합이다.
- RedHat
- 데브옵스는 신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응력을 높이는 기업 문화, 자동화, 플랫폼 설계에 대한 접근 방식이다.
이처럼 데브옵스는 빠르게 변화하는 시장에서 비즈니스 가치를 극대화하기 위해 기술적, 문화적으로 개발과 운영의 경계를 허물고 협업을 촉진하는 방향으로 발전해 왔다.
2. 데브옵스의 발전 배경
데브옵스의 개념은 애자일 소프트웨어 개발(Agile Software Development) 과 지속적 통합(Continuous Integration, CI) 개념에서부터 출발했다고 할 수 있다. 애자일 개발과 CI/CD의 보급이 데브옵스의 핵심적인 기초가 되었다.
- 애자일 개발
- 계획이나 문서보다는 지속적인 프로토타입 생성과 실질적 코딩을 기반으로 일정 주기에 따라 개발, 피드백을 주고받으며 즉시 수정해가며 적응적으로 프로젝트를 완성해나간다. 개발자는 끊임없이 사용자 피드백을 반영하고 실시간으로 변화를 적용하는 과정을 통해 큰 소프트웨어를 적응적으로 개발한다.
- 지속적 통합(CI)
- 초기부터 자주 통합하여 소프트웨어 품질을 유지하고, 코드 변경과 의존성 문제를 빠르게 해결함으로써 개발 시간을 줄이고 프로젝트의 품질을 유지한다. CI는 개발자들이 코드 통합을 자주 진행할 수 있게 함으로써, 더 나은 품질의 소프트웨어를 빠르게 배포할 수 있는 기반을 마련한다.
이러한 애자일과 CI의 확산으로 개발과 운영 팀의 협업이 더욱 긴밀히 요구되었고, 이를 뒷받침하는 데브옵스의 개념이 널리 보편화되었다.
3. 데브옵스의 주요 요소와 도구
데브옵스는 자동화와 협업을 기반으로 소프트웨어 개발과 IT 운영을 통합하는 데 중점을 둔다. 데브옵스의 실현을 위해 다양한 도구와 자동화 기술이 등장했다.
- CI/CD 파이프라인
- 소프트웨어 빌드, 테스트, 배포를 자동화하고 연속적으로 수행하여 릴리스 사이클을 단축한다. CI/CD는 많은 데브옵스 도구의 핵심 기능으로 자리 잡고 있으며, Jenkins, GitLab CI, CircleCI 등이 대표적이다.
- 구성 관리(Configuration Management)
- 자동화된 서버 설정과 관리, 코드화된 인프라 등을 통해 일관성을 유지하고, 관리와 배포를 효율적으로 수행한다. 대표적인 도구로는 Ansible, Chef, Puppet이 있다.
- 모니터링과 로깅
- 애플리케이션과 인프라 성능을 추적하여 문제를 빠르게 파악하고 해결하는 데 필수적인 요소이다. 대표적인 도구로는 Prometheus, ELK Stack 등이 있다.
4. 데브옵스의 효과와 장점
데브옵스는 소프트웨어 개발 프로세스에 대한 철학이자, 이를 실현시키기 위한 플랫폼과 툴을 모두 포함한 포괄적인 개념으로, 기업들이 신속하게 품질 높은 서비스를 제공하도록 돕는다.
- 비즈니스 대응력 향상
- 변화하는 요구에 맞춰 신속하게 서비스를 제공하고, 시장 변화에 빠르게 대응할 수 있다.
- 리소스 절감
- 자동화된 테스트와 구성 관리로 인해 인적 자원과 시간을 절감할 수 있으며, 이를 통해 효율성을 극대화할 수 있다. 각종 job을 자동화해 리소스를 절감하면서도 일관성 있는 결과를 제공한다.
- 품질 개선
- 애자일과 CI/CD 파이프라인의 통합은 개발과 배포 주기를 단축하고, 릴리스 품질을 향상한다.
5. 데브옵스를 활용한 실무 사례
개인적으로는 여러 OS에 맞춘 코드 업로드와 빌드, 테스트, 패키징을 자동화하는 과정에서 데브옵스를 경험하게 되었다. 예를 들어, 회사에서는 GitLab을 통해 CI/CD 파이프라인을 구축하였고, 이를 통해 개발 작업을 자동화했다. GitLab Runner를 사용해 코드 커밋 시 마다 자동으로 빌드와 테스트가 실행되도록 파이프라인을 구성했다.
초기에는 직접 각 OS에 맞춰 일련의 작업을 수작업으로 진행했으나, GitLab의 CI/CD 기능과 GitLab Runner의 존재를 알고 난 뒤에는 이를 활용해 자동화하는 것이 훨씬 효율적이었다. 실제로, 커밋할 때마다 자동으로 빌드와 테스트가 수행되고 패키징까지 이루어지면서 업무의 많은 부분이 간소화되었다.
6. 개인적인 견해: 나에게 데브옵스란?
사실 데브옵스에 대해 명확히 알고 있었던 것은 아니지만, 해야 할 일이라는 것은 느꼈다. 애자일을 주제로 한 책을 몇 권 읽으면서 개발이 이렇게 흘러가고 있다는 것을 깨달았고, 이에 상응하는 철학이 데브옵스라고 생각한다.
GitLab CI/CD 파이프라인 설정을 통해 데브옵스를 경험하면서, 자동화가 개발 환경에 얼마나 큰 영향을 미치는지 깨달았다. 특히 CI/CD는 데브옵스의 핵심 요소로, 더 나은 개발 품질과 효율적인 프로세스를 위한 필수적인 기술임을 느끼게 되었다.
Resources
https://aws.amazon.com/ko/devops/what-is-devops/#:~:text=DevOps%20is%20the%20combination%20of,development%20and%20infrastructure%20management%20processes.
https://en.wikipedia.org/wiki/DevOps
https://terms.naver.com/entry.naver?docId=2842709&cid=40942&categoryId=32837
https://thedevopsinstitute.com/?page_id=22
https://www.atlassian.com/ko/devops
https://www.redhat.com/ko/topics/devops
https://www.youtube.com/watch?v=KGrJguM361c
'기술 노트' 카테고리의 다른 글
애자일 선언과 소프트웨어 장인 정신: 더 나은 개발을 위한 나의 다짐 (0) | 2022.02.10 |
---|---|
형상 관리 도구의 선택: Git, SVN, 그리고 DevOps 환경에서의 최적화 (3) | 2022.02.09 |
CMake 입문: 빌드 자동화 기초와 실전 예제 (0) | 2022.01.29 |
GitLab Runner 설치 및 설정 가이드 (0) | 2022.01.21 |
레거시 코드와의 씨름: C에서 C++로의 마이그레이션 여정 (0) | 2021.07.05 |