LUIS DevOps에 대한 지속적인 통합 및 지속적인 업데이트 워크플로

Important

LUIS는 2025년 10월 1일에 사용 중지되며 2023년 4월 1일부터 새 LUIS 리소스를 만들 수 없습니다. 지속적인 제품 지원 및 다국어 기능을 활용하려면 LUIS 애플리케이션대화 언어 이해로 마이그레이션하는 것이 좋습니다.

LUIS(Language Understanding) 앱을 개발하는 소프트웨어 엔지니어는 소스 제어, 자동화된 빌드, 테스트 및 릴리스 관리관련된 DevOps 사례를 적용할 수 있습니다. 이 문서에서는 LUIS용 자동화된 빌드를 구현하기 위한 개념을 설명합니다.

LUIS용 자동화 워크플로 빌드

CI workflows

SCM(소스 코드 관리) 시스템에서 다음 이벤트에서 실행되도록 자동화된 빌드 파이프라인을 구성합니다.

  1. PR(끌어오기 요청)이 발생할 때 트리거되는 PR 워크플로입니다. 이 워크플로는 업데이트가 기본 분기에 병합되기 전에 PR 내용의 유효성을 검사합니다.
  2. 업데이트가 기본 분기에 푸시될 때(예: PR의 변경 내용 병합 시) 트리거되는 CI/CD 워크플로입니다. 이 워크플로는 기본 분기에 대한 모든 업데이트의 품질을 보장합니다.

CI/CD 워크플로두 가지 보완적인 개발 프로세스를 결합합니다.

  • CI(연속 통합 )는 공유 리포지토리에서 코드를 자주 커밋하고 자동화된 빌드를 수행하는 엔지니어링 방식입니다. 자동화된 테스트 접근 방식과 쌍을 이루는 연속 통합을 사용하면 각 업데이트에 대해 LUDown 원본이 여전히 유효하고 LUIS 앱으로 가져올 수 있는지 확인할 수 있지만 학습된 앱이 솔루션에 필요한 의도 및 엔터티를 인식할 수 있는지 확인하는 테스트 그룹을 통과합니다.

  • CD(지속적인 업데이트 )는 더 심층 테스트를 수행할 수 있는 환경에 애플리케이션을 자동으로 배포하기 위해 연속 통합 개념을 더 많이 사용합니다. CD를 사용하면 가능한 한 빨리 변경으로 인해 발생하는 예기치 않은 문제에 대해 조기에 알아보고 테스트 검사의 격차에 대해 알아볼 수 있습니다.

지속적인 통합 및 지속적인 제공의 목표는 "기본 항상 배송 가능"을 보장하는 것입니다. LUIS 앱의 경우 필요한 경우 기본 분기 LUIS 앱에서 모든 버전을 가져와 프로덕션 환경에 제공할 수 있습니다.

LUIS용 자동화 워크플로를 빌드하기 위한 도구

LUIS DevOps 템플릿 리포지토리에서 DevOps를 구현하기 위한 완벽한 솔루션을 찾을 수 있습니다.

빌드 자동화 워크플로를 만드는 데 사용할 수 있는 다양한 빌드 자동화 기술이 있습니다. 모두 빌드 서버에서 실행할 수 있도록 CLI(명령줄 인터페이스) 또는 REST 호출을 사용하여 단계를 스크립트할 수 있어야 합니다.

LUIS에 대한 자동화 워크플로를 빌드하려면 다음 도구를 사용합니다.

PR 워크플로

멘션 개발자가 PR을 발생시 실행하도록 이 워크플로를 구성하여 기능 분기 기본 분기로 병합할 변경 내용을 제안합니다. 그 목적은 pr에서 변경 내용이 기본 분기에 병합되기 전에 변경 내용의 품질을 확인하는 것입니다.

이 워크플로는 다음을 수행해야 합니다.

  • PR에서 .lu 소스를 가져와서 임시 LUIS 앱을 만듭니다.
  • LUIS 앱 버전을 학습하고 게시합니다.
  • 해당 버전에 대해 모든 단위 테스트를 실행합니다.
  • 모든 테스트가 통과하면 워크플로를 통과하고, 그렇지 않으면 실패합니다.
  • 임시 앱을 정리하고 삭제합니다.

SCM에서 지원하는 경우 이 워크플로를 성공적으로 완료해야 PR을 완료할 수 있도록 분기 보호 규칙을 구성합니다.

기본 분기 CI/CD 워크플로

PR의 업데이트가 기본 분기에 병합된 후 실행할 이 워크플로를 구성합니다. 그 목적은 업데이트를 테스트하여 기본 분기의 품질 표시줄을 높게 유지하는 것입니다. 업데이트가 품질 표시줄을 충족하는 경우 이 워크플로는 더 심층 테스트를 수행할 수 있는 환경에 새 LUIS 앱 버전을 배포합니다.

이 워크플로는 다음을 수행해야 합니다.

  • 업데이트된 소스 코드를 사용하여 기본 LUIS 앱(기본 분기에 대해 기본 있는 앱)에서 새 버전을 빌드합니다.

  • LUIS 앱 버전을 학습하고 게시합니다.

    참고 항목

    자동화된 빌드 워크플로의 실행 테스트에 설명된 대로 NLU와 같은 도구가 있도록 테스트 중인 LUIS 앱 버전을 게시해야 합니다. DevOps는 액세스할 수 있습니다. LUIS는 LUIS 앱에 대한 스테이징 및 프로덕션이라는 두 개의 게시 슬롯만 지원하지만 버전을 직접 게시하고 버전별로 쿼리할 수도 있습니다. 자동화 워크플로에서 직접 버전 게시를 사용하여 명명된 게시 슬롯 사용으로 제한되지 않도록 합니다.

  • 모든 단위 테스트를 실행합니다.

  • 필요에 따라 일괄 테스트를 실행하여 LUIS 앱 버전의 품질과 정확도를 측정하고 일부 기준과 비교합니다.

  • 테스트가 성공적으로 완료되면 다음을 수행합니다.

    • 리포지토리의 원본에 태그를 지정합니다.
    • CD(지속적인 업데이트) 작업을 실행하여 추가 테스트를 위해 LUIS 앱 버전을 환경에 배포합니다.

CD(지속적인 업데이트)

CI/CD 워크플로의 CD 작업은 빌드 및 자동화된 단위 테스트 성공 시 조건에 따라 실행됩니다. 이 작업은 더 많은 테스트를 수행할 수 있는 환경에 LUIS 애플리케이션을 자동으로 배포하는 것입니다.

LUIS 앱을 배포하는 가장 좋은 방법에 대한 권장 솔루션은 없으며 프로젝트에 적합한 프로세스를 구현해야 합니다. LUIS DevOps 템플릿 리포지토리는 이를 위한 간단한 솔루션을 구현합니다. 이 솔루션은 새 LUIS 앱 버전프로덕션 게시 슬롯에 게시하는 것입니다. 간단한 설정에 적합합니다. 그러나 개발, 스테이징UAT와 같이 여러 다른 프로덕션 환경을 동시에 지원해야 하는 경우에는 앱당 두 개의 명명된 게시 슬롯 제한이 충분하지 않습니다.

앱 버전을 배포하는 다른 옵션은 다음과 같습니다.

  • 직접 버전 엔드포인트에 게시된 앱 버전을 그대로 유지하고 필요에 따라 직접 버전 엔드포인트를 사용하여 다운스트림 프로덕션 환경을 구성하는 프로세스를 구현합니다.
  • 각 프로덕션 환경에 대해 서로 다른 LUIS 앱을 유지 관리하고 자동화 단계를 작성하여 .lu 대상 프로덕션 환경에 대한 LUIS 앱의 새 버전으로 가져와 학습하고 게시합니다.
  • 테스트된 LUIS 앱 버전을 LUIS Docker 컨테이너로 내보내고 AZURE Container 인스턴스에 LUIS 컨테이너를 배포합니다.

릴리스 관리

일반적으로 개발 및 스테이징과 같은 비프로덕션 환경에만 지속적인 업데이트를 수행하는 것이 좋습니다. 대부분의 팀은 프로덕션 환경에 배포하기 위한 수동 검토 및 승인 프로세스가 필요합니다. 프로덕션 배포의 경우 개발 팀의 주요 사용자를 지원할 때 또는 트래픽이 낮은 기간에 수행하도록 할 수 있습니다.

GitHub Actions를 사용하여 LUIS 앱 개발에 DevOps 적용

LUIS에 대한 DevOps 및 소프트웨어 엔지니어링 모범 사례를 구현하는 전체 솔루션을 보려면 LUIS DevOps 템플릿 리포지토리로 이동합니다. 이 템플릿 리포지토리를 사용하여 사용자 고유의 프로젝트에 대해 LUIS를 사용하여 소스 제어, 자동화된 빌드, 테스트 및 릴리스 관리를 가능하게 하는 CI/CD 워크플로 및 사례를 기본적으로 지원하는 고유한 리포지토리를 만들 수 있습니다.

LUIS DevOps 템플릿 리포지토리는 다음 방법을 안내합니다.

  • 템플릿 리포지토리 복제 - 사용자 고유의 GitHub 리포지토리에 템플릿을 복사합니다.
  • LUIS 리소스 구성 - 연속 통합 워크플로에서 사용할 AZURE에서 LUIS 작성 및 예측 리소스를 만듭니다.
  • CI/CD 워크플로 구성 - CI/CD 워크플로에 대한 매개 변수를 구성하고 GitHub 비밀저장합니다.
  • "개발 내부 루프"를 안내합니다. 개발자는 개발 분기에서 작업하는 동안 샘플 LUIS 앱을 업데이트하고, 업데이트를 테스트한 다음, 끌어오기 요청을 발생하여 변경 내용을 제안하고 검토 승인을 구합니다.
  • CI/CD 워크플로 실행 - GitHub Actions를 사용하여 LUIS 앱을 빌드 및 테스트하는 연속 통합 워크플로를 실행합니다.
  • 자동화된 테스트 수행 - LUIS 앱에 대해 자동화된 일괄 테스트를 수행하여 앱의 품질을 평가합니다.
  • LUIS 앱 배포 - CD(지속적인 업데이트) 작업을 실행하여 LUIS 앱을 게시합니다.
  • 사용자 고유의 프로젝트에서 리포지토리 사용 - 사용자 고유의 LUIS 애플리케이션에서 리포지토리를 사용하는 방법을 설명합니다.

다음 단계