지속적인 업데이트란?

완료됨

여기에서는 Tailspin 팀이 CD(지속적인 배포) 파이프라인이 향후 릴리스에 어떻게 도움이 되는지 논의하는 과정을 따라가게 됩니다.

Tailspin 팀은 빌드 프로세스에 대해 만족합니다. Azure Pipelines에서 실행되는 자동화된 프로세스가 있으므로 빌드 환경이 안정적입니다. Amita 님은 아티팩트를 테스트해야 하는 시기를 즉시 파악합니다. Andy 님과 Mara 님이 단위 테스트 및 코드 품질 테스트를 추가했기 때문에 버그가 감소했고 결과가 좋아 보입니다. 팀 구성원과 함께 확인해 보겠습니다.

아침 회의

팀은 팀원들과 얘기하고 싶어 하는 제품 관리자 Irwin을 회의실에서 기다리고 있습니다. 이들은 Irwin에게 진행 상황을 알리고자 합니다. 그런데 Irwin이 만족스럽지 않은 모습으로 들어옵니다. 그는 곧장 말을 꺼냅니다.

Irwin: 오늘 아침에 경영진과 회의를 했습니다. 게임과 웹 사이트를 릴리스하는 데 오랜 시간이 소요되는 이유를 알고 싶어 하더군요. 경쟁사가 우리보다 훨씬 빠르게 새 기능과 새 게임을 내놓고 있습니다. 우리는 일의 능률을 높여야 합니다. 난 당신만 경고하는 게 아닙니다. 나는 모든 팀에 경고하고 있어요. 팀이 더 빠르게 배포할 수 있도록 어떻게 도와드리면 될까요?

Andy: 갑작스럽게 말씀드리지만, 저희는 이미 성과를 이뤘습니다. 웹 사이트를 빌드하는 방식을 자동화했죠. 이제 릴리스 프로세스로 자동화를 확장할 때가 된 것 같군요.

Irwin: 어떻게 하신 거죠?

Mara: Azure Pipelines를 사용하여 자동화된 빌드 파이프라인을 만들었습니다. 이 파이프라인은 Amita 님이 테스트할 수 있는 아티팩트를 빌드하죠. CD(지속적인 업데이트) 파이프라인을 빌드할 수도 있습니다.

Irwin: CD 파이프라인이 뭔가요?

Mara가 설명을 시작하지만 Irwin의 휴대폰에서 신호음이 울리면 중단됩니다. Irwin은 문자 메시지를 읽고 중얼거립니다.

Irwin: 죄송합니다. 급한 일이라서요. 가봐야겠네요. 이 CD와 관련한 모든 사항을 파악한 다음 다시 만나는 게 어떨까요?

Andy 님은 팀원들을 바라봅니다.

Andy: 커피 어떠세요?

Andy 님과 나머지 팀원은 커피숍에서 계획을 세웁니다.

지속적인 업데이트란?

팀은 지속적인 업데이트 워크플로 설정 방법을 알아내기 위해 커피 타임을 가지는 중입니다.

Andy: Mara, 지속적 전달에 대해 알고 있는 것을 알려주실 수 있나요?

Mara: 제게 있어 CD와 DevOps는 불가분한 관계에 있습니다. DevOps는 최종 사용자에게 지속적으로 가치를 제공할 수 있는 사람, 프로세스 및 제품의 합집합으로 정의됩니다.

CD 자체는 소프트웨어를 빠르고 안정적이며 지속적으로 업데이트할 수 있는 프로세스, 도구 및 기술의 세트입니다. 그래서 파이프라인을 설정하는 것이 중요하긴 하지만 CD는 그에 대한 것만이 아니죠. CD는 작업 환경을 설정하는 방법에 대한 것으로, 다음과 같은 특징이 있습니다.

  • 소프트웨어를 릴리스 및 배포하기 위한 안정적이고 반복 가능한 프로세스를 제공합니다.
  • 최대한 자동화합니다.
  • 우리는 어렵거나 고통스러운 일을 미루지 않습니다. 대신, 우리는 이런 작업을 일상적으로 만드는 방법을 알아내기 위해 해당 작업을 더 자주 수행합니다.
  • 모든 것이 원본 제어를 통해 유지됩니다.
  • ‘릴리스’되어야 비로소 ‘끝난’ 것이라는 점에 다들 동의하실 테죠.
  • 프로세스의 품질을 높입니다. 품질은 후순위 고려 사항이 아닙니다.
  • 모두가 릴리스 프로세스에 책임이 있습니다. 더 이상 사일로에서 작업하지 않습니다.
  • 항상 개선을 시도합니다.

해당 아이디어의 상당수는 이미 구현되었고, 이를 통해 작업 방식이 개선되었다는 점에 다들 동의하고 있습니다. CD는 이미 저희가 시작한 부분을 확대하는 것입니다.

지속적인 업데이트가 필요한 이유는 무엇일까요?

CD는 소프트웨어 팀이 고객에게 빈번한 주기로 안정적인 소프트웨어 업데이트를 제공할 수 있도록 지원합니다. 또한 CD는 고객과 관련자 모두에게 최신 기능과 수정 사항을 빠르게 제공하도록 도와줍니다.

이에 대한 다른 팀원분의 이야기를 계속 들어 보시죠.

Andy: Mara 님, 감사합니다. 아시다시피 환경이 변했기 때문에 CD가 필요합니다. 새 기능이 더 빠르게 릴리스되고 있습니다. 업데이트 및 버그 수정이 즉시 이루어져야 합니다. 경영진이 릴리스 속도를 높이기 원하기 때문만이 아닙니다. 경영진은 고객의 요구에 반응하는 것뿐입니다. 고객이 Tailspin으로부터 원하는 것을 얻지 못하면 다른 곳을 찾을 것입니다.

Tim: 동의합니다! 당장 시작하죠.

Andy: 다들 감사합니다. Mara 님과 제가 간단한 개념 증명(POC)을 함께 해 보겠습니다. CD 파이프라인의 실제 작동 모습을 보시면 이해하기가 훨씬 더 쉬울 것입니다.

Amita: 두 분에게 행운을 빕니다.

팀은 Andy 님과 Mara 님에게 세부 사항의 처리를 맡깁니다.

지속적인 업데이트는 마우스 오른쪽 단추 클릭을 통한 게시와 어떤 차이점이 있을까요?

많은 개발 도구는 애플리케이션을 Microsoft IIS(인터넷 정보 서비스) 또는 Azure와 같은 대상 환경에 바로 게시하는 방법을 제공합니다. 예를 들어 Visual Studio를 사용하여 Azure에 ASP.NET Core 앱을 게시할 수 있습니다. 이 프로세스는 ‘마우스 오른쪽 단추 클릭을 통한 게시’라고도 합니다.

마우스 오른쪽 단추 클릭을 통한 게시는 프로토타입을 신속하게 빌드할 수 있는 탁월한 방법입니다. 예를 들어 애플리케이션을 마우스 오른쪽 단추로 클릭하여 Azure에 게시하면 팀과 새 아이디어를 공유할 수 있습니다. 그러나 이 기술에는 한계가 있습니다.

지속적인 업데이트는 코드를 체크 인할 때마다 사용자와 팀이 지속적으로 애플리케이션을 테스트, 배포 및 모니터링할 수 있는 일관된 방법을 제공합니다. 애플리케이션을 마우스 오른쪽 단추로 클릭하여 게시하면 코드가 제대로 테스트되거나 실제 사용 시 예상대로 작동한다는 보장이 없습니다.

이 짧은 비디오에서는 Microsoft Cloud Advocate를 담당하고 있는 Abel Wang이 자세한 내용을 설명합니다.

지속적인 업데이트는 지속적인 배포와 어떤 차이점이 있을까요?

DevOps 커뮤니티에서 ‘지속적인 업데이트’와 ‘지속적인 배포’라는 용어를 들어 보셨을 것입니다. 이 용어의 의미는 동일할까요? 이 짧은 비디오에서 Abel이 그 차이점을 설명합니다.

어떤 지속적인 업데이트 도구를 사용할 수 있나요?

회의가 끝난 후 Andy 님과 Mara 님은 다음 단계를 계획합니다. 이들은 Azure Pipelines를 사용하여 소프트웨어를 빌드합니다. Azure Pipelines를 비롯하여 릴리스 프로세스를 지원하는 데 사용할 수 있는 도구를 고려하려고 합니다.

Mara: 무엇부터 먼저 해야 할까요?

Andy: 먼저 릴리스 관리 도구에 대해 합의해야 합니다. 선택한 도구의 경우:

  • 버전 제어 시스템을 지원해야 합니다.
  • 작업을 테스트하고 입증할 수 있도록 여러 환경에 배포할 수 있어야 합니다.
  • 배포 작업을 쉽게 정의할 수 있어야 합니다.
  • 간편하게 확장할 수 있어야 합니다.

Mara: Azure DevOps는 다른 여러 CI(연속 통합) 및 CD 솔루션과 통합됩니다. 많은 솔루션이 제공되고 있는데 저희는 아무 데도 투자하고 있지 않습니다. 투자했다면 해당 솔루션을 사용하는 것이 합리적이겠죠. 인기 있는 CI 및 CD 시스템에는 Jenkins, Circle CI, GitLab, Travis CI 및 Azure Pipelines가 있습니다.

이러한 도구는 유사하지만 각각 특정한 장점도 가지고 있습니다. 해당 도구 중 일부는 오픈 소스이며, 일부는 무료이며, 일부는 비용을 지불해야 합니다. 또한 다른 소프트웨어 도구와의 통합을 기본적으로 제공합니다.

예를 들어 Jenkins는 오픈 소스입니다. 여러 플러그인을 지원하며, 많은 회사에서 이를 사용합니다. 클라우드 또는 온-프레미스에서 Circle CI를 실행할 수 있습니다. 사용자 지정할 필요가 있다고 생각합니다. GitLab은 전체 소프트웨어 개발 수명 주기를 지원하는 단일 애플리케이션입니다. 이는 지금 필요한 규모보다 클 수 있습니다. Azure Pipelines를 계속 사용해도 됩니다.

다음은 Abel이 DevOps 모범 사례를 사용하여 Azure에 코드를 배포하는 방법을 설명하는 짧은 비디오입니다.

Mara: 저는 Azure Pipelines를 계속 사용하는 데 한 표를 던질게요.

Andy: 동의해요. Azure Pipelines는 지금까지 좋은 성과를 냈으니 다른 새로운 기술을 익힐 필요가 없죠.

Mara: 좋습니다. 이제 파이프라인 세부 사항에 대해 논의하시죠.

Andy 님과 Mara 님은 CD 파이프라인을 계획하기 위해 회의실로 이동합니다.