DevOps (데브옵스)

이유석·2022년 5월 22일
0
post-thumbnail

DevOps (Development + Operations)

정의

  • 소프트웨어 개발자와 정보기술 전문가, 운영팀 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 의미한다.
  • 애플리케이션 개발 팀(Dev)과 해당 IT 운영 팀(Ops) 간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려합니다.

목적

  • 개발 팀과 IT 운영 팀 간의 커뮤니케이션 및 협업에 대한 장벽을 허무는 노력을 합니다.
  • 고객 만족과 더 빠른 가치 제공이라는 핵심 가치를 추구합니다.

즉, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해 개발과 운영이 상호 의존적으로 대응해야 한다는 의미로 많이 사용하고 있다.


중요한 이유

  • DevOps는 비즈니스 혁신을 추진하고 지속적인 프로세스 개선을 주도하도록 설계되었습니다.
  • DevOps 사례는 조직의 최종 고객에게 비즈니스 가치를 더 빠르고 안전하게 제공할 수 있는 환경을 조성합니다.
    • 더 자주 릴리즈되는 제품, 기능 또는 업데이트의 형태
    • 적절한 수준의 품질과 보안을 갖춘 제품 릴리즈
    • 새로운 기능을 고객에게 더 빨리 제공
    • 문제점이나 버그를 신속하게 식별하여 해결하고 다시 릴리즈

방법

조직에서 개발 및 제품 출시의 속도와 향상을 위해 사용할 수 있는 몇 가지 일반적인 DevOps 방법이 있습니다.
이러한 방법은 소프트웨어 개발 방법론 및 모범 사례의 형식을 사용합니다. 가장 많이 사용되는 방법은 스크럼(Scrum), 칸반(Kanban) 및 애자일(Agile)입니다.

스크럼

  • 개발 및 QA 프로젝트를 가속하기 위한 팀원의 협력 방법을 정의합니다.
  • 스크럼 사례에는 주요 워크플로 및 특정 용어(Sprint, 시간 상자, 일별 스크럼[회의])와 전담 역할(스크럼 마스터, 제품 소유자)이 포함됩니다.

칸반

  • 칸반은 Toyota 공장에서 얻은 효율에서 비롯되었습니다.
  • 칸반은 진행 중인 소프트웨어 프로젝트 작업 상태(WIP)를 칸반 보드로 추적할 것을 지시합니다.

애자일

  • 초기 애자일 소프트웨어 개발 방법이 여전히 DevOps 사례 및 툴에 영향을 미치고 있습니다. 스크럼 및 칸반을 비롯한 많은 DevOps 방법에는 애자일 프로그래밍 요소가 포함되어 있습니다.
  • 일부 애자일 사례는 변화하는 요구 및 요구사항에 빠르게 대응하고 요구사항을 사용자 사례로 문서화하며 매일 아침 회의를 수행하고 지속적인 고객 피드백을 포함하는 것과 관련됩니다.
  • 또한 애자일은 기존의 긴 "폭포수" 개발 방법 대신 짧은소프트웨어 개발 라이프사이클을 사용할 것을 지시합니다.

툴체인 (도구)

DevOps 사례를 따르는 사람들은 종종 DevOps “툴체인”의 일부로 DevOps 친화적인 툴을 사용합니다.
이러한 툴 중 다수는 자동화, 협업 및 개발-운영 팀 간의 통합에 대한 핵심 DevOps 원칙을 손쉽게 준수할 수 있도록 합니다.

계획

  • 이 단계는 비즈니스 가치 및 요구사항을 정의하는 데 도움이 됩니다.
    샘플 툴로는 알려진 문제를 추적하고 프로젝트 관리를 수행하는 데 도움이 되는 Jira 또는 Git가 있습니다.

코딩

  • 이 단계에는 소프트웨어 설계 및 소프트웨어 코드 생성이 포함됩니다.
    샘플 툴로는 GitHub, GitLab, Bitbucket 또는 Stash가 있습니다.

구축

  • 이 단계에서는 소프트웨어 빌드 및 버전을 관리하고 자동화된 툴을 사용하여 코드를 컴파일하고 패키징하여 향후 제품 릴리즈에 제공합니다.
    소스 코드 저장소 또는 패키지 저장소를 사용합니다. 이러한 저장소는 제품 릴리즈에 필요한 "패키지" 인프라 역할도 합니다.
    샘플 툴로는 Docker, Ansible, Puppet, Chef, Gradle, Maven 또는 JFrog Artifactory가 있습니다.

테스트

  • 이 단계에서는 최적의 코드 품질을 보장하기 위해 지속적인 테스트(수동 또는 자동)를 수행합니다.
    샘플 툴로는 JUnit, Codeception, Selenium, Vagrant, TestNG 또는 BlazeMeter가 있습니다.

배포

  • 이 단계에는 제품 릴리즈를 운영 단계로 관리, 조정, 예약 및 자동화하는 데 도움이 되는 툴이 포함될 수 있습니다.
    샘플 툴로는 Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker 또는 Jira가 있습니다.

운영

  • 이 단계에서는 운영 중인 소프트웨어를 관리합니다.
    샘플 툴로는 Anabilities, Puppet, PowerShell, Chef, Salt 또는 Otter가 있습니다.

모니터링

  • 이 단계에서는 운영 환경의 특정 소프트웨어 릴리즈에서 발생하는 문제에 대한 정보를 식별하고 수집합니다.
    샘플 툴로는 New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios 또는 Slack이 있습니다.

장점

  • 더 우수한 제품을 더 빠르게 제공
  • 더 빠른 문제 해결 및 복잡성 감소
  • 확장성 및 가용성 향상
  • 보다 안정적인 운영 환경
  • 향상된 리소스 활용률
  • 자동화 향상
  • 시스템 결과에 대한 가시성 개선
profile
https://github.com/yuseogi0218

0개의 댓글