아티클
튜토리얼
대화형 가이드
DevOps란?
DevOps는 소프트웨어 개발 팀과 IT 팀 간의 프로세스를 자동화하고 통합하는 일련의 관행, 도구 및 문화적 철학입니다. 팀 지원, 팀 간 커뮤니케이션 및 공동 작업, 기술 자동화를 강조합니다.
DevOps로의 전환은 2007년경에 소프트웨어 개발 및 IT 운영 커뮤니티에서 코드를 작성한 개발자가 코드를 배포하고 지원하는 운영 팀과 별개로 일했던 전통적인 소프트웨어 개발 모델에 대한 우려를 제기하면서 시작되었습니다. 개발과 운영이라는 단어의 조합인 DevOps라는 용어는 이 분야를 하나의 지속적인 프로세스로 통합하는 프로세스를 반영합니다.
DevOps는 어떻게 작동합니까?
DevOps 팀에는 소프트웨어 배포의 속도 및 품질을 높이기 위해 제품 수명 주기 전반에 걸쳐 공동 작업을 수행하는 개발자와 IT 운영자가 포함됩니다. 이것은 새로운 업무 방식이며 문화적 변화로, 협력하는 팀과 조직에 상당한 영향을 미칩니다.
DevOps 모델에서 개발 및 운영 팀은 더 이상 “사일로화”되지 않습니다. 때로는 이 두 팀이 단일 팀으로 합쳐져 엔지니어가 개발 및 테스트에서 배포 및 운영에 이르는 전체 애플리케이션 수명 주기에 걸쳐 작업하며 다양한 분야의 기술을 보유하게 됩니다.
DevOps 팀은 도구를 사용하여 프로세스를 자동화하고 가속화하므로 안정성을 높일 수 있습니다. DevOps 도구 체인으로 팀은 지속적 통합, 지속적 배포, 자동화 및 공동 작업을 비롯한 중요한 DevOps 기본 사항을 해결할 수 있습니다.
DevOps의 가치는 개발 이외의 팀에 적용되는 경우도 있습니다. 보안팀이 DevOps 접근 방식을 채택할 때 보안은 개발 프로세스의 능동적이고 통합된 부분이 됩니다. 이것을 DevSecOps라고 합니다.
DevOps 수명 주기
DevOps의 지속적인 특성 때문에 DevOps를 따르는 조직은 무한 루프를 사용하여 DevOps 수명 주기의 단계가 서로 어떻게 관련되어 있는지 보여줍니다. 순차적으로 진행되는 것처럼 보이지만, 루프는 전체 수명 주기 동안 지속적인 공동 작업과 반복적인 개선의 필요성을 보여줍니다.
DevOps 수명 주기는 개발(루프의 왼쪽) 및 운영(루프의 오른쪽)에 필요한 프로세스, 기능 및 도구를 나타내는 8단계로 구성됩니다. 각 단계에서 팀은 공동 작업하고 커뮤니케이션하여 정렬, 속도 및 품질을 유지합니다.
탐색
소프트웨어를 만드는 것은 팀 스포츠와 같습니다. 다가오는 스프린트를 준비하기 위해 팀은 워크숍을 통해 아이디어를 탐구하고 체계화하고 우선 순위를 정해야 합니다. 아이디어는 전략적 목표와 일치하고 고객에게 영향력을 미쳐야 합니다. 애자일은 DevOps 팀을 안내해 줍니다.
계획
DevOps 팀은 애자일 관행을 채택하여 속도 및 품질을 개선해야 합니다. 애자일은 프로젝트 관리 및 소프트웨어 개발에 대한 반복적인 접근 방식으로, 팀은 작업을 더 작은 부분으로 나누어 점진적인 가치를 제공할 수 있습니다.
빌드
Git은 무료 오픈 소스 버전 제어 시스템입니다. Git은 브랜칭, 병합 및 리포지토리 기록 변경을 훌륭하게 지원하며, 그 결과 많은 개발 빌드 프로세스에 대한 혁신적이며 강력한 워크플로 및 도구가 탄생했습니다.
테스트
지속적 통합(CI)을 통해 여러 개발자는 하나의 공유 리포지토리에 기여할 수 있습니다. 코드 변경 사항이 병합되면 통합 전에 정확성을 확인하기 위해 자동화된 테스트가 실행됩니다. 코드를 병합하고 테스트하면 대개 개발 팀이 배포 후 코드의 품질과 예측 가능성을 확신할 수 있습니다.
배포
지속적 배포(CD)를 통해 팀은 자동화된 방식으로 프로덕션에 기능을 자주 릴리스할 수 있습니다. 또한 기능 플래그를 이용해 배포하고, 사용자들에게 새 코드를 한꺼번에 모두 제공하는 것이 아니라 꾸준하고 체계적으로 제공할 수 있습니다. 지속적 배포는 소프트웨어 개발 팀의 속도, 생산성, 지속 가능성을 개선합니다.
운영
고객에 대한 IT 서비스의 엔드투엔드 제공을 관리합니다. 여기에는 조직의 서비스를 지원하는 모든 IT 인프라의 설계, 구현, 구성, 배포 및 유지 관리에 관련된 관행이 포함됩니다.
관찰
제품 가동 시간, 속도 및 기능에 영향을 미치는 문제를 빠르게 식별하고 해결합니다. 서비스를 중단 없이 유지하기 위해 변경, 위험이 높은 작업 또는 장애를 팀에 자동으로 알립니다.
지속적인 피드백
DevOps 팀은 각 릴리스를 평가하고 보고서를 생성하여 향후 릴리스를 개선해야 합니다. 지속적인 피드백을 수집하여 팀은 프로세스를 개선하고 고객 피드백을 통합하여 다음 릴리스를 개선할 수 있습니다.
DevOps 도구
DevOps 도구는 DevOps 수명 주기의 주요 단계를 다룹니다. 공동 작업을 개선하고, 컨텍스트 전환을 줄이며, 자동화를 도입하고, 가시성 및 모니터링을 사용하여 DevOps 관행을 지원합니다.
DevOps 도구 체인은 일반적으로 올인원 도구 체인 또는 개방형 도구 체인이라는 두 가지 접근 방식을 따릅니다. 올인원 도구 체인은 일반적으로 다른 타사 도구와 통합되지 않는 전체 솔루션을 제공하는 반면, 개방형 도구 체인은 다양한 도구로 사용자 지정할 수 있습니다. 두 가지 방법 모두 장단점이 있습니다.
개방형 DevOps 도구 체인의 예로는 Atlassian의 Open DevOps 솔루션이 있습니다. Jira를 기반으로 포함하며 주요 공급업체 및 Marketplace 앱과 통합됩니다.
DevOps의 이점은 무엇입니까?
Atlassian의 2020년 DevOps 트렌드 설문 조사에서 응답자의 99%는 DevOps가 조직에 긍정적인 영향을 미쳤다고 답했습니다. DevOps의 이점으로는 더 쉽고 빠른 릴리스, 팀 효율성 향상, 보안 강화, 높은 품질의 제품, 결과적으로 더 만족하는 팀과 고객 등이 있습니다.
속도
DevOps를 활용하는 팀은 제품을 더 자주 릴리스할 수 있으며, 더 높은 품질과 안정성을 제공할 수 있습니다. 실제로 DORA 2019년 State of DevOps 보고서에서는 최정상급 팀이 실적이 낮은 팀보다 208배 더 자주, 106배 더 빠르게 배포하는 것으로 나타났습니다. 지속적 배포를 통해 팀은 자동화된 도구를 사용하여 소프트웨어를 만들고 테스트하고 제공할 수 있습니다.
공동 작업 개선
DevOps의 기반은 책임을 공유하고 작업을 합치는 개발자와 운영 팀 간의 공동 작업 문화입니다. 이를 통해 팀의 효율성이 향상되며, 작업 전달 및 실행 환경에 맞게 설계된 코드 작성과 관련된 시간을 절약할 수 있습니다.
빠른 배포
DevOps 팀은 릴리스의 빈도 및 속도를 높여 제품을 빠르게 개선합니다. 빠르게 새로운 기능을 출시하고 버그를 수정하여 경쟁 우위를 얻을 수 있습니다.
품질 및 신뢰성
지속적 통합 및 지속적 배포와 같은 관행은 변경 사항이 기능적이고 안전하도록 보장하여 소프트웨어 제품의 품질을 향상합니다. 팀은 모니터링을 통해 실시간으로 성과를 파악할 수 있습니다.
보안
DevSecOps는 지속적 통합, 지속적 배포 및 지속적 배포 파이프라인에 보안을 통합하여 개발 프로세스에 통합된 활성 부분이 됩니다. 적극적인 보안 감사 및 보안 테스트를 애자일 개발 및 DevOps 워크플로에 통합하여 제품에서 보안이 기본 제공됩니다.
DevOps 도입의 어려움은 무엇입니까?
습관을 바꾸기는 어렵습니다. 사일로화된 작업 방식이 고착화된 팀은 DevOps 관행을 수용하기 위해 팀 구조를 점검하기를 어렵게 느끼거나 심지어는 거부감을 가질 수도 있습니다. 일부 팀은 새로운 도구만 있으면 DevOps를 채택하는 데 충분하다고 잘못 생각할 수 있습니다. 그러나 DevOps는 사용자, 도구 및 문화가 결합된 것입니다. DevOps 팀의 모든 구성원은 아이디어 구상부터 개발, 최종 사용자 경험에 이르기까지 전체 가치 흐름을 이해해야 합니다. 제품 수명 주기 전반에 걸쳐 공동 작업하려면 사일로를 허물어야 합니다.
DevOps는 한 사람이 하는 일이 아니라 모두가 함께해야 하는 일입니다.
Robert Krohn
Atlassian DevOps 엔지니어링 책임자
레거시 인프라에서 IaC(Infrastructure as Code) 및 마이크로서비스로 전환하면 개발 및 혁신이 빨라질 수 있지만 운영 워크로드가 증가하는 어려움이 발생할 수 있습니다. 작업 부담을 완화하는 데 도움이 되도록 자동화, 구성 관리 및 지속적 배포 관행의 강력한 기반을 구축하는 것이 가장 좋습니다.
도구에 과도하게 의존하면 팀이 DevOps의 필수 기반인 팀 및 조직 구조에 집중하지 못하게 될 수 있습니다. 구조가 확립된 후에 프로세스와 팀, 그리고 그 다음에 도구가 따라와야 합니다.
DevOps 채택 방법
DevOps를 채택하려면 우선 조직이 현재 사용하는 팀, 도구 또는 프로세스를 평가하고 필요하면 변경 또는 제거하려는 노력이 필요합니다. 즉, 외부 팀에 지나치게 의존하지 않고도 제품을 구축, 배포 및 관리하는 자율성을 제공하는 데 필요한 인프라를 구축하는 것입니다.
DevOps 문화
DevOps 문화에서는 팀이 공동 작업과 커뮤니케이션을 강화해야 하는 새로운 업무 방식을 수용합니다. 고객에 더 초점을 맞추기 위해 사용자, 프로세스 및 도구를 정렬하는 것입니다. 여러 분야의 팀이 제품의 전체 수명 주기에 대한 책임을 집니다.
지속적 학습
DevOps는 실험과 일정 정도의 위험 감수를 잘 받아들이는 조직에서 잘 이루어집니다. 고정 관념을 깨는 것이 일반적이며, 실패는 학습과 개선을 위한 자연스러운 부분으로 간주되는 조직입니다.
애자일
애자일 방법론은 팀이 본질적으로 유연하고 체계적이며 변화에 대응할 수 있도록 지원하므로 소프트웨어 업계에서 매우 인기가 많습니다. DevOps는 소프트웨어를 구축하고 유지 관리하는 관련자 간의 공동 작업을 촉진하는 문화적 변화입니다. 애자일과 DevOps를 함께 사용하면 효율성 및 안정성을 향상할 수 있습니다.
DevOps 관행
지속적인 통합
지속적 통합은 코드 변경을 소프트웨어 프로젝트에 통합하는 작업을 자동화하는 관행입니다. 개발자는 코드 변경 사항을 빌드 및 테스트를 실행하는 중앙 집중식 리포지토리에 자주 병합할 수 있습니다. 이를 통해 DevOps 팀은 버그를 더 빠르게 해결하고 소프트웨어 품질을 개선하며 새로운 소프트웨어 업데이트를 검증하고 릴리스하는 데 소요되는 시간을 줄일 수 있습니다.
지속적 배포 (Continuous Delivery)
지속적 배포는 코드 변경 사항을 테스트/프로덕션 환경에 자동으로 배포하여 지속적 통합을 확대합니다. 자동화된 빌드, 테스트 및 배포를 하나의 릴리스 워크플로로 오케스트레이션하는 지속적 배포 파이프라인을 따릅니다.
상황 인식
조직의 모든 구성원이 업무를 수행하는 데 필요한 데이터에 최대한 효과적이고 빠르게 액세스하는 것은 중요합니다. 팀원은 배포 파이프라인 장애(시스템 관련 또는 테스트 실패가 원인)에 대한 알림을 받고 프로덕션 환경에서 실행되는 애플리케이션의 상태 및 성능에 대한 업데이트를 적시에 받아야 합니다. 메트릭, 로그, 추적, 모니터링 및 알림은 모두 팀이 작업을 알리는 데 필요한 피드백 소스입니다.
자동화
자동화는 팀이 높은 품질 소프트웨어를 개발하고 배포하는 프로세스를 훨씬 빠르게 진행하도록 지원하기 때문에 가장 중요한 DevOps 관행입니다. 자동화를 통해 코드 변경 사항을 소스 코드 리포지토리에 푸시하는 간단한 작업으로 빌드, 테스트 및 배포 프로세스를 트리거하여 이 단계에 소요되는 시간을 대폭 줄일 수 있습니다.
Infrastructure as Code
조직이 온프레미스 데이터 센터를 운영하든 완전히 클라우드를 사용하는가에 관계없이 인프라를 빠르고 일관되게 프로비저닝, 구성 및 관리하는 기능은 성공적인 DevOps 도입을 위한 핵심입니다. IaC(Infrastructure as Code)는 단순히 인프라 구성을 스크립팅하는 것뿐만 아니라 소스 제어, 코드 검토, 테스트 등을 사용하여 인프라 정의를 실제 코드처럼 다루는 것입니다.
마이크로서비스
마이크로서비스는 애플리케이션을 서로 독립적으로 배포 및 운영할 수 있는 소규모의 서비스 모음으로 구축하는 아키텍처 기법입니다. 각 서비스에는 자체 프로세스가 있으며 인터페이스를 통해 다른 서비스와 통신합니다. 우려 사항의 분리와 독립적인 기능을 통해 지속적 배포 및 지속적 통합과 같은 DevOps 관행을 실현할 수 있습니다.
모니터링
DevOps 팀은 계획, 개발, 통합 및 테스트, 배포, 운영부터 전체 개발 수명 주기를 모니터링합니다. 이를 통해 팀은 고객 경험의 수준이 낮아지면 신속하고 자동으로 대응할 수 있습니다. 더 중요한 것은 팀이 개발의 "조기 단계에서 개입”하여 잘못된 프로덕션 변경 사항을 최소화할 수 있습니다.
DevOps 시작하기
DevOps를 시작하는 가장 쉬운 방법은 작은 가치 흐름(예: 소규모 지원 앱 또는 서비스)을 식별하고 일부 DevOps 관행을 실험해 보는 것입니다. 소프트웨어 개발과 마찬가지로, 새로운 작업 방식으로의 조직 전환을 한 번에 시도하는 것보다 소수의 이해 관계자 그룹과 함께 단일 흐름을 변환하는 것이 훨씬 더 쉽습니다.
Atlassian은 Atlassian 및 그 외 타사 도구를 사용하여 엔드투엔드 DevOps 프로세스를 제공하는 Open DevOps 솔루션을 제공합니다. Jira를 중추로 사용하면 팀에서 Atlassian 제품을 사용하거나 선호하는 제품을 개방형 도구 체인으로 가져올 수 있습니다. Atlassian 에코시스템은 강력한 통합 및 애드온을 제공하므로 팀은 요구 사항에 맞게 도구 체인을 사용자 지정할 수 있습니다.
자동화, 테스트, 보안, 가시성, 기능 플래그 지정 및 지속적 배포에 대한 DevOps 자습서를 확인하세요.
DevOps 뉴스레터 신청
Thank you for signing up