DevOps 자습서 — 소개

DevOps에는 여러 단계와 개념과 구성 요소가 있습니다. 이 DevOps 자습서는 DevOps가 무엇이고 이를 통해 소프트웨어 제공 프로세스를 어떻게 개선할 수 있는지 알아볼 수 있도록 안내합니다.

DevOps의 이해

본 DevOps 자습서를 시작하며 DevOps가 무엇이고 이것이 전체 소프트웨어 개발 프로세스와 어떤 관련이 있는지 이해할 수 있도록 몇 가지 기본적인 정의를 소개합니다.

  • DevOps는 개발 팀과 운영 팀 사이의 협업을 촉진하여 더욱 빠르고 안정적인 소프트웨어 제공을 지원하는 소프트웨어 개발 방식입니다. 일반적으로 ‘DevOps 문화’라고도 하는 DevOps는 사람과 프로세스와 기술을 연결하여 지속적인 가치를 창출합니다.

    DevOps에 대해 자세히 알아보기

  • 소프트웨어 개발 프로세스는 고도로 수동적인 프로세스일 수 있으며, 이로 인해 다수의 코드 오류가 발생하게 됩니다. 개발 팀과 운영 팀이 매끄럽게 협업하지 못하여 소프트웨어 제공이 늦어지고 비즈니스 이해 관계자들이 실망하게 되는 경우도 많습니다. DevOps는 소프트웨어 개발, 배포 및 유지 관리와 관련된 모든 작업에서 효율성을 높여 줍니다.

    개발 팀과 운영 팀의 간극이 줄어듦으로써 가시성이 확보되고 정확한 요구 사항이 도출되고 의사소통이 개선되며 시장 출시 시간이 단축됩니다.

  • DevOps는 개발 팀과 운영 팀 사이의 간극을 줄임으로써 소프트웨어 개발 및 배포 단계의 효율성을 대폭 높여 줍니다. DevOps는 자동화에 크게 주력함으로써 전체적인 오류의 개수를 감소합니다.

  • DevOps의 철학은 프로젝트의 모든 측면에서 처음부터 끝까지 책임을 지는 것입니다. 전통적인 소프트웨어 개발 방식과 달리, DevOps는 소프트웨어 제공 프로세스를 많이 지연시킬 수 있음에도 불구하고 종종 간과되곤 하는 개발 팀과 운영 팀 사이의 간극을 줄여 줍니다.

    소프트웨어의 개발 및 릴리스를 위한 종합적인 프레임워크를 제공하는 DevOps는 소프트웨어 제공 과정의 비효율성과 다양한 문제로 이어질 가능성이 있는 개발 팀과 운영 팀 사이의 간극을 줄여 줍니다.

  • DevOps와 애자일은 모두 소프트웨어 개발 방식이긴 하나, 이 둘이 주력하는 바는 서로 조금 다릅니다. DevOps는 소프트웨어 개발, 배포 및 유지 관리 단계에서 모든 이해 관계자들의 효율성을 높이는 데 주력하는 문화입니다. 애자일은 소프트웨어 개발 프로덕션 프레임워크를 제공하는 데 도움이 되는 린 생산방식(lean manufacturing) 프로세스입니다. 애자일은 주로 개발 팀에 적용되는 반면, DevOps의 범위는 소프트웨어의 프로덕션 및 유지 관리에 관여하는 모든 이해 관계자들로 확대됩니다. DevOps와 애자일을 함께 사용하여 고도로 효율적인 소프트웨어 개발 환경을 만들 수 있습니다.

    DevOps와 Agile을 비교한 내용에 대해 자세히 알아보기

작업을 통해 DevOps 학습 심화하기

본 DevOps 자습서의 각 섹션에는 DevOps 방식을 구현하는 데 도움이 될 몇 가지 작업이 포함되어 있습니다. 잠시 시간을 내어 다음 질문에 답해 보세요.

  • 소프트웨어 개발 및 배포 과정에서 겪은 어려움에는 어떤 것이 있나요?
  • 소프트웨어 개발 및 배포 과정에서 효율성 개선이 필요한 분야에는 어떤 것이 있나요?

DevOps 방식의 기본 사항

본 DevOps 핸드북의 다음 단계는 DevOps 방식에서 사용되는 주요 개념을 이해하는 것입니다. 이 섹션에서는 주요 개념을 명확히 설명합니다.

  • 소프트웨어 팀에서 일반적으로 사용되는 애자일 개발은 린 생산방식(lean manufacturing)과 관련 있는 제공 접근 방법입니다. 개발은 짧은 증분식 스프린트 단위로 완료됩니다. 애자일 개발은 DevOps와는 다른 개념이지만, 두 가지 접근 방식은 상호 배타적이지 않습니다. 애자일 방식과 도구는 개발 팀의 효율성을 높여서 전체적인 DevOps 문화에 도움이 될 수 있습니다.

    Azure Boards를 사용하여 애자일 계획 시작하기

  • 하나의 팀이 함께 일할 때 버전 제어는 정확하고 효율적인 소프트웨어 개발을 위한 필수적인 부분입니다. Git과 같은 버전 제어 시스템은 사용자가 언제든지 어떤 버전으로도 영구적으로 돌아갈 수 있도록 파일의 스냅샷을 찍습니다. 버전 제어 시스템을 사용하면 현재 작업 중인 변경 사항을 적용해도 충돌이 발생하지 않을 것이라고 안심할 수 있습니다.

    Azure Repos로 버전 제어 사용하기

  • 연속 통합은 코드가 완성되고 시스템에 커밋되자마자 이루어지는 빌드 및 테스트를 자동화하는 프로세스입니다. 커밋된 코드는 자동화 프로세스를 거치게 됩니다. 자동화 프로세스에서는 코드에 대한 검증이 이루어진 다음, 테스트되고 검증된 코드만 기본 소스 코드에 커밋됩니다. 이때 소스 코드는 마스터 분기, 마스터 또는 트렁크라고도 합니다. 연속 통합은 이 프로세스를 자동화하여 효율성을 대폭 높입니다. 이 과정에서 코드를 마스터 분기에 병합하기 전 초기 단계에 버그가 발견됩니다.

    Azure Pipelines를 사용하여 연속 통합 구현하기

  • 지속적인 업데이트는 DevOps에서 이루어지는 기본적인 방식으로, 빠르고 안정적인 소프트웨어의 제공을 지원합니다. 이 프로세스는 DevOps의 핵심적인 개념과 비슷하긴 하나, 지속적인 업데이트는 소프트웨어를 언제든지 제공할 수 있게끔 코드의 각 구성 요소가 완성되자마자 테스트, 검증 및 커밋되는 프레임워크입니다. 연속 통합은 지속적인 업데이트의 구성 요소가 되는 프로세스입니다.

    Azure Pipelines를 사용하여 지속적인 업데이트 구현하기

  • 온-프레미스에서든 클라우드에서든, 리소스의 프로비저닝 및 구성은 환경 운영의 중요한 부분입니다. 인프라에 대한 선언적인 정의를 제공하는 도구(예: 텍스트 기반 정의 파일)를 사용하고 프로세스를 자동화함으로써 반복 가능하고 안정적인 방식으로 리소스를 배포 및 구성할 수 있습니다. 텍스트 기반 정의 파일은 버전 제어를 갖춘 코드로 관리할 수 있으며, 이렇게 하면 복잡한 환경을 간편하게 롤백하고, 다시 만들고, 해제할 수 있습니다. 자주 사용되는 IaC(infrastructure as code) 구현 솔루션에는 Terraform, Ansible 등이 있습니다.

    Terraform을 사용하여 Azure에 인프라 만들기

    Azure에서 Ansible을 사용하는 방법 자세히 알아보기

  • DevOps의 범위는 개발에만 국한되지 않고, 제공을 통해 소프트웨어 성능을 비롯한 소프트웨어에 대한 책임을 이어가는 것까지로 확대됩니다. DevOps의 전체 프로세스는 피드백 루프를 형성하며, 이를 통해 향후 프로젝트를 개선하는 한편 소프트웨어 배포 결정을 검증하는 데 도움이 되는 데이터 포인트가 제공됩니다. 모니터링과 로깅은 검증된 학습을 지원하는 주요 구성 요소입니다. 이는 나아가 소프트웨어 개발 및 제공 프로세스에서 더 큰 효율성을 향해 나아가기 위한 지속적인 노력을 뒷받침합니다.

    Azure Monitor를 사용하여 원격 분석 데이터를 수집하고 분석하는 방법 알아보기

  • 다음 주기를 위한 의사 결정에 도움을 주기 위해, 수명 주기 전반에 걸쳐 피드백과 원격 분석 데이터가 수집됩니다. 이 정보를 검증된 학습이라고 합니다. 검증된 학습은 주기당 소요 시간을 단축할 새로운 방법에 대한 인사이트를 제공합니다. 수집된 데이터는 자동화를 늘리고 프로세스를 개선하고 더욱 빠르고 효율적으로 배포를 준비할 방법을 찾는 데 사용됩니다.

작업을 통해 DevOps 학습 심화하기

지금까지 DevOps 방식의 주요 개념을 알아보았습니다. 여기서 잠시 시간을 내어 다음 질문에 답해 보세요.

  • 기존 개발 프로세스에서 현재 수동으로 진행되고 있으며 자동화가 적용되면 좋을 분야는 무엇인가요?
  • 팀의 빌드 프로세스에 연속 통합을 도입할 기회가 있나요?
  • 현재 팀에서 인프라를 관리하는 방식은 무엇인가요? 이 프로세스는 반복 가능하고 안정적인가요, 아니면 IaC(infrastructure as code)를 사용하여 개선할 여지가 있나요?
  • 어떤 원격 분석 데이터가 있으면 작업에 도움이 될까요?
  • 검증된 학습을 뒷받침할 데이터 포인트에는 어떤 것이 있을까요?

DevOps 문화 만들기

이 DevOps 자습서의 다음 부분은 DevOps 문화를 만드는 방법에 대한 논의입니다. 비즈니스에 DevOps를 도입할 준비를 하다 보면 소프트웨어 제공에 대한 기존 접근 방법과의 차이점에 맞닥뜨리게 될 것입니다.

새로운 문화를 만드는 것은 하루아침에 완성되는 일이 아니며, 새로운 도구 세트를 구입하는 것처럼 간단한 일도 아닙니다. 팀원들이 DevOps를 익히고 연습할 수 있도록 하려면 기존의 팀 구조와 워크플로와 습관을 바꿔야 할 수 있습니다.

Microsoft가 어떻게 DevOps 문화를 만들었는지 알아보기

작업을 통해 DevOps 학습 심화하기

비즈니스에 DevOps 문화를 만들 방법을 고민하고 있다면 잠시 시간을 내어 다음 질문에 답해 보세요.

  • DevOps는 소프트웨어 개발, 제공 및 유지 관리 단계의 모든 이해 관계자들을 조율하는 데 도움이 됩니다. 여러분의 조직에서는 누가 여기에 해당하나요? 함께 일하게 될 모든 사람을 목록으로 만들어 보세요.
  • 개발 팀과 운영 팀 사이의 의사소통을 더욱 활발히 하려면 어떻게 해야 하나요? 브레인스토밍을 통해 이해 관계자들의 협력을 증진할 몇 가지 방법을 도출해 보세요.

DevOps 동영상

다음 동영상을 통해 이 핸드북의 범위를 넘어 DevOps에 대해 자세히 알아보고 소프트웨어 개발 프로세스에 DevOps를 완전히 통합하는 방법을 살펴보세요.

Azure DevOps 소개

Donovan Brown과 함께 Azure DevOps의 특징과 기능을 살펴봅니다.

Azure Pipelines를 사용하여 코드 빌드 및 배포

Azure Pipelines가 코드의 CI/CD(연속 통합 및 지속적인 배포)를 관리하는 좋은 도구인 이유가 무엇인지 알아봅니다.

Azure에서 HashiCorp Terraform 사용하기

Terraform을 설정하고 구성하여 Azure IaC(infrastructure as code)를 관리하는 방법을 알아보는 간단한 DevOps 자습서입니다.

Azure DevOps 시작

최신 개발 서비스 세트를 사용하여 더 빠르고 안정적으로 소프트웨어를 제공하세요. 더 스마트한 계획, 더 효율적인 협업, 더 빠른 배송을 위해 모든 DevOps 기능을 사용하거나 자신에게 맞는 기능을 선택하세요.