DevOps 자습서 — 소개
DevOps 자습서를 사용하여 소프트웨어 제공 프로세스 개선
DevOps에는 다양한 단계, 개념 및 구성 요소가 있으며, 이 DevOps 자습서는 DevOps가 무엇이며 소프트웨어 제공 프로세스를 개선하는 데 도움이 되는 방법을 배울 수 있는 좋은 방법입니다.
DevOps 이해
이 DevOps 자습서를 시작하기 위해 DevOps가 무엇인지와 DevOps가 전체 소프트웨어 개발 프로세스와 어떻게 관련되는지 이해하는 데 도움이 되는 몇 가지 기본 정의를 소개합니다.
-
DevOps는 개발과 운영 간의 공동 작업을 촉진하여 더 빠르고 안정적인 소프트웨어 제공을 가능하게 하는 소프트웨어 개발 사례입니다. 일반적으로 문화라고 하는 DevOps는 사람, 프로세스 및 기술을 연결하여 지속적인 가치를 제공합니다.
-
소프트웨어 개발 프로세스는 매우 수동적인 프로세스일 수 있으며 이로 인해 많은 코드 오류가 발생할 수 있습니다. 개발 팀과 운영 팀이 매끄럽게 협업하지 못하여 소프트웨어 제공이 늦어지고 비즈니스 이해 관계자들이 실망하게 되는 경우도 많습니다. DevOps는 소프트웨어 개발, 배포 및 유지 관리와 관련된 모든 작업에서 효율성을 높여 줍니다.
개발 및 운영을 연결하면 가시성이 향상되고, 요구 사항이 정확하며, 통신이 향상되고, 출시 시간이 빨라집니다.
-
DevOps는 개발과 운영 간의 격차를 해소하여 소프트웨어 개발 및 배포 전반에 걸쳐 상당한 효율성을 창출합니다. DevOps는 자동화에 크게 중점을 두어 전체 오류 수를 줄이는 데 도움을 줍니다.
-
DevOps의 철학은 프로젝트의 모든 측면에서 엔드투엔드 책임을 지는 것입니다. 전통적인 소프트웨어 개발 방식과 달리, DevOps는 소프트웨어 제공 프로세스를 많이 지연시킬 수 있음에도 불구하고 종종 간과되곤 하는 개발 팀과 운영 팀 사이의 간극을 줄여 줍니다.
소프트웨어를 개발하고 릴리스하는 포괄적인 프레임워크를 제공하는 DevOps는 개발 및 운영 팀을 연결하여 소프트웨어 제공에 어려움과 비효율성을 야기할 수 있습니다.
-
DevOps와 Agile은 모두 소프트웨어 개발 사례이지만 각각은 약간 다른 포커스를 갖습니다. DevOps는 소프트웨어 개발, 배포 및 유지 관리 단계에서 모든 이해 관계자들의 효율성을 높이는 데 주력하는 문화입니다. 애자일은 소프트웨어 개발 프로덕션 프레임워크를 제공하는 데 도움이 되는 린 생산방식(lean manufacturing) 프로세스입니다. 애자일은 주로 개발 팀에 적용되는 반면, DevOps의 범위는 소프트웨어의 프로덕션 및 유지 관리에 관여하는 모든 이해 관계자들로 확대됩니다. DevOps와 Agile을 함께 사용하여 매우 효율적인 소프트웨어 개발 환경을 만들 수 있습니다.
다음 작업을 통해 DevOps 학습 심화하기
본 DevOps 자습서의 각 섹션에는 DevOps 방식을 구현하는 데 도움이 될 몇 가지 작업이 포함되어 있습니다. 잠시 시간을 내어 다음 질문에 답해 보세요.
- 소프트웨어 개발 및 배포 과정에서 겪은 어려움에는 어떤 것이 있나요?
- 소프트웨어를 개발하고 배포할 때 효율성 향상을 보려는 영역은 무엇인가요?
DevOps 사례의 기본 사항
이 DevOps 핸드북의 다음 단계는 DevOps 사례에서 사용되는 주요 개념을 이해하는 것입니다. 이 섹션에서는 주요 구성 요소를 설명하고 명백히하는 데 도움이 됩니다.
-
소프트웨어 팀에서 일반적으로 사용되는 Agile 개발은 린 제조와 관련된 제공 방식입니다. 개발은 짧은 증분식 스프린트 단위로 완료됩니다. DevOps와 다르지만 두 가지 접근 방식은 상호 배타적이지 않습니다. Agile 방식과 도구는 개발 팀 내에서 효율성을 높이는 데 도움이 되며 전체 DevOps 문화권에 기여합니다.
-
팀이 함께 작업하는 경우 버전 제어는 정확하고 효율적인 소프트웨어 개발의 중요한 부분입니다. Git와 같은 버전 제어 시스템은 파일의 스냅샷을 찍어 언제든지 모든 버전으로 영구적으로 돌아갈 수 있도록 합니다. 버전 제어 시스템을 사용하면 작업 중인 변경 내용과 충돌하지 않을 것이라고 확신할 수 있습니다.
-
지속적인 통합은 코드가 완료되고 시스템에 커밋될 때 발생하는 빌드 및 테스트를 자동화하는 프로세스입니다. 커밋된 코드는 자동화 프로세스를 거치게 됩니다. 자동화 프로세스에서는 코드에 대한 검증이 이루어진 다음, 테스트되고 검증된 코드만 기본 소스 코드에 커밋됩니다. 이때 소스 코드는 마스터 분기, 마스터 또는 트렁크라고도 합니다. 연속 통합은 이 프로세스를 자동화하여 효율성을 대폭 높입니다. 모든 버그는 마스터 분기와 코드를 병합하기 전에 초기에 식별됩니다.
-
지속적인 업데이트는 빠르고 신뢰할 수 있는 소프트웨어를 제공하는 DevOps 내에서 발생하는 기본 사례입니다. 이 프로세스는 DevOps의 핵심적인 개념과 비슷하긴 하나, 지속적인 업데이트는 소프트웨어를 언제든지 제공할 수 있게끔 코드의 각 구성 요소가 완성되자마자 테스트, 검증 및 커밋되는 프레임워크입니다. 연속 통합은 지속적인 업데이트의 구성 요소인 프로세스입니다.
-
온-프레미스에서든 클라우드에서든, 리소스의 프로비저닝 및 구성은 환경 운영의 핵심 부분입니다. 인프라에 대한 선언적인 정의를 제공하는 도구(예: 텍스트 기반 정의 파일)를 사용하고 프로세스를 자동화함으로써 반복 가능하고 안정적인 방식으로 리소스를 배포 및 구성할 수 있습니다. 텍스트 기반 정의 파일은 버전 제어를 갖춘 코드로 관리할 수 있으며, 이렇게 하면 복잡한 환경을 간편하게 롤백하고, 다시 만들고, 해제할 수 있습니다. Terraform 또는 Ansible과 같은 기술은 코드로 인프라를 구현하기 위한 일반적인 솔루션입니다.
-
DevOps의 범위는 개발 외에도 소프트웨어 성능을 포함하여 제공을 통해 소프트웨어에 대한 책임을 유지합니다. DevOps의 전체 프로세스는 피드백 루프를 형성하며, 이를 통해 향후 프로젝트를 개선하는 한편 소프트웨어 배포 결정을 검증하는 데 도움이 되는 데이터 포인트가 제공됩니다. 모니터링 및 로깅은 검증된 학습을 지원하는 주요 구성 요소로, 소프트웨어 개발 및 제공 프로세스에서 효율성을 높이기 위해 지속적으로 노력하도록 전반적인 이니셔티브를 지원합니다.
-
수명 주기 전반에 걸쳐 피드백 및 원격 분석 데이터가 수집되어 다음 주기에 대한 결정을 알리는 데 도움이 됩니다. 이 정보를 검증된 학습이라고 합니다. 검증된 학습은 주기당 소요 시간을 단축할 새로운 방법에 대한 인사이트를 제공합니다. 그런 다음 수집된 데이터를 사용하여 자동화를 늘리고, 프로세스를 개선하고, 배포를 보다 빠르고 효율적으로 준비하는 방법을 찾습니다.
다음 작업을 통해 DevOps 학습 심화하기
지금까지 DevOps 방식의 주요 개념을 알아보았습니다. 여기서 잠시 시간을 내어 다음 질문에 답해 보세요.
- 기존 개발 프로세스에서 현재 수동으로 진행되고 있으며 자동화가 적용되면 좋을 분야는 무엇인가요?
- 팀의 빌드 프로세스에 연속 통합을 도입할 기회가 있나요?
- 현재 팀에서 인프라를 관리하는 방식은 무엇인가요? 이 프로세스는 반복 가능하고 안정적인가요, 아니면 IaC(infrastructure as code)를 사용하여 개선할 여지가 있나요?
- 어떤 원격 분석 데이터가 있으면 작업에 도움이 될까요?
- 유효성이 검사된 학습을 지원하는 다른 데이터 요소는 무엇인가요?
DevOps 문화 구축
이 DevOps 자습서의 다음 부분에서는 DevOps 문화를 구축하는 방법을 논의합니다. 비즈니스에 DevOps를 도입할 준비를 하다 보면 소프트웨어 제공에 대한 기존 접근 방법과의 차이점에 맞닥뜨리게 될 것입니다.
새로운 문화를 만드는 것은 하루아침에 완성되는 일이 아니며, 새로운 도구 세트를 구입하는 것처럼 간단한 일도 아닙니다. 팀이 DevOps를 배우고 연습할 수 있도록 하려면 현재 팀 구조, 워크플로 및 습관을 변경해야 할 수 있습니다.
다음 작업을 통해 DevOps 학습 심화하기
본 DevOps 자습서의 각 섹션에는 DevOps 방식을 구현하는 데 도움이 될 몇 가지 작업이 포함되어 있습니다. 잠시 시간을 내어 다음 질문에 답해 보세요.
- 소프트웨어 개발 및 배포 과정에서 겪은 어려움에는 어떤 것이 있나요?
- 소프트웨어를 개발하고 배포할 때 효율성 향상을 보려는 영역은 무엇인가요?
Azure DevOps 시작
최신 개발 서비스 세트를 사용하여 소프트웨어를 더 빠르고 안정적으로 제공하세요. 더 스마트하게 계획하고, 더 효율적으로 공동 작업하고, 더 빠르게 제공하려면 모든 DevOps 기능을 사용하거나 본인에게 적합한 기능을 선택하세요.