📌 Why DevOps?
- 데브옵스는 단순히 직무나, 직업, 역할, 툴을 명시하는 단어가 아니라 제품의 기획(Plan)부터 모니터링(Monitor)까지 지속적으로 이어지는 과정을 통해서 제품의 완성도를 높여가는 하나의 철학이다.
- DevOps는 애플리케이션 개발의 품질과 속도를 개선하고 신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려하는 새로운 철학이자 프레임워크입니다.
- DevOps 사례는 애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 팀 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려합니다.
- "Dev"와 "Ops" 간의 이러한 긴밀한 관계는 초기 소프트웨어 계획부터 코딩, 구축, 테스트 및 릴리즈 단계와 구축, 운영 및 지속적인 모니터링에 이르는 DevOps 라이프사이클의 모든 단계에 걸쳐 계속됩니다. 이러한 관계는 추가 개선, 개발, 테스트 및 구축에 대한 지속적인 고객 피드백 루프를 추진하는 원동력이 됩니다. 이러한 노력이 제공하는 결과 중 하나는 필요한 기능 변경 또는 추가 기능을 더 빠르고 지속적으로 릴리즈할 수 있다는 것입니다.
- 혹자는 DevOps 목표를 문화, 자동화, 측정 및 공유(CAMS)의 네 가지 범주로 그룹화하는데 DevOps 툴을 사용하여 이 모든 영역을 지원할 수 있습니다. 이러한 툴을 사용하면 개발 및 운영 워크플로우의 효율성 및 협업 기능을 개선하여 통합, 개발, 테스트, 구축 또는 모니터링과 관련된 기존의 시간 소모적인 수동 또는 정적 작업을 자동화할 수 있습니다.
출처 : https://www.netapp.com/ko/devops-solutions/what-is-devops/
📌 Line 기술블로그의 김남우 개발자님의 글 발췌
DevOps 각 단계의 효율을 높이고 자동화함으로써 제품 개발과 출시에 걸리는 시간을 단축할 수 있고 고객 만족도를 높여 높은 성과를 달성할 수 있습니다. 또한 새롭게 출시하는 제품의 오류를 사전에 방지해 안정성을 높이고, 자동화된 파이프라인을 이용해 발생한 오류를 더욱 빠르게 복구할 수 있습니다. DevOps의 각 단계에 대해 딱 이것이라고 할 수 있는 정답이 있는 것은 아닙니다. 여러분들이 프로세스를 수립하는 데 도움이 되실 수 있도록 아래와 같이 제 생각을 정리해 보았습니다.
- 기획(plan): 기획 단계에서는 개발하려는 제품에 대한 아이디어를 도출하고 이를 정의해 기술합니다. 작업은 작은 규모의 단위로 쪼개서 관리하며 진행 상황을 추적합니다.
- 코드(code): 기획한 설계를 바탕으로 코드를 작성하는 단계입니다. 버전 관리 시스템(Version Control System)을 이용해 여러 사용자가 작성한 코드 작업을 조율하고 변경 사항을 추적합니다. 작성한 코드는 개발자들이 함께 모여 코드 리뷰를 진행하면서 일관성 있게 아키텍처를 구현하고 오류를 사전에 방지하며 제품에 대한 구성원들의 이해도를 높입니다.
- 빌드(build): 완성한 코드를 묶어서 실행 가능한 상태로 만드는 단계입니다. 이 과정에서 구문(syntax) 오류를 점검할 수 있고 정적 분석을 통해 실행 오류나 불필요한 코드, 표준 위배 사항 등을 발견해 코드의 완성도를 높일 수 있습니다.
- 테스트(test): 완성한 코드에 대해 단위(unit) 테스트나 정밀(sanity) 테스트, 통합(integration) 테스트 등을 수행해 발생 가능성이 있는 논리적 오류를 미연에 방지합니다.
- 릴리스(release): 완성한 코드를 배포 가능한 상태로 만드는 단계입니다. 완성본에 버전을 붙이면 변경 사항의 규모를 쉽게 확인할 수 있고 완성본을 만든 시점도 기록할 수 있습니다.
- 배포(deploy): 완성한 결과물을 실제 제품에 반영하는 단계입니다. 지속적으로 배포할 수 있는 도구로 빠르게 배포하면 변경 사항 배포에 대한 위험을 줄이면서 비용과 시간도 절약할 수 있습니다. 문제가 발생할 경우에 대비해 신속히 확인해서 롤백(rollback)할 수 있는 준비도 해야 합니다.
- 운영(operate): 완성한 제품을 유지하고 보수하는 단계입니다. 타 시스템과 연동해 서비스의 확장성을 높일 수도 있고 장비를 증설해 보다 안정적으로 서비스를 운영할 수 있습니다.
- 모니터링(monitor): 완성한 제품에 이상이 없는지 주기적으로 확인하는 단계입니다. 물리적 장비의 CPU와 메모리, 저장 공간 등의 사용률을 확인하거나 제품의 응답 시간과 응답 결과물의 정확도 등의 서비스 지표를 지속해서 관찰하며 발생할 수 있는 여러 위험에 미리 대비합니다.
출처 - https://engineering.linecorp.com/ko/blog/line-ads-devops-culture/
아직은 잘 모르지만, 하나씩 배우면서 채워나갈 예정.