Azure SQL Database에 대한 CI/CD 구현
이제 Azure SQL Database를 배포, 구성, 사용하여 최신 애플리케이션의 강력한 기반을 구축하는 방법을 알고 있습니다. 애플리케이션 요구 사항은 계속 발전하고 변화하고 있으므로 다음 단계에서는 필요에 따라 데이터베이스를 업데이트하는 방법을 이해합니다. DevOps(개발 운영)는 도움이 될 수 있는 원칙 및 사례 모음입니다.
DevOps는 고객에게 가치를 지속적으로 제공할 수 있도록 사람, 프로세스, 기술이 결합한 것입니다. DevOps 문화, 사례, 도구를 도입하는 팀은 더 나은 제품을 더 빨리 빌드하여 고객 만족도를 높임으로써 높은 성과를 달성합니다.
데이터베이스는 솔루션의 주요 부분 중 하나이므로, 데이터베이스를 DevOps 사례와 통합하는 기능은 민첩한 최신 애플리케이션 개발의 핵심 요소입니다.
Azure SQL에서는 여러 가지 방식으로 DevOps 프로세스에 데이터베이스를 포함할 수 있습니다. CI(연속 통합) 및 CD(지속적인 업데이트) 파이프라인은 DevOps 환경의 백본이며, Azure SQL은 선택한 CI/CD 도구와 완전히 통합될 수 있습니다. Azure에서 가장 일반적이고 널리 사용되는 두 가지 도구는 GitHub Actions와 Azure DevOps입니다.
데이터베이스용 CI/CD 구현
데이터베이스를 CI/CD 파이프라인의 일부로 사용한다는 것은 완전히 자동화되고 재현 가능하며 결정적 방식으로 구조 및 일부 데이터를 구성하고 배포한다는 것을 의미입니다. 구성되면 배포 또는 업데이트 프로세스를 언제든지 횟수와 관계없이 실행하고 일관된 결과를 얻을 수 있습니다.
이 단원에서는 데이터베이스용 CI/CD 파이프라인을 구현하기 위한 세 가지 주요 방식에 대해 알아봅니다.
- 필요한 상태
- Code First 마이그레이션
- 사용자 지정 스크립트
SqlPackage.exe에서 필요한 상태 접근 방식 사용
Desired State 접근 방식에서는 참조 데이터베이스 구조의 스냅샷을 만들어 원하는 상태를 나타냅니다. 그런 다음, 해당 스냅샷을 사용하여 다른 대상 데이터베이스(일반적을 테스트 또는 프로덕션 데이터베이스)를 필요한 상태로 동기화할 수 있습니다. SqlPackage.exe와 같은 도구를 사용하여 .dacpac
파일로 스냅샷을 만들 수 있습니다. .dacpac
가 대상 데이터베이스에 적용되면 자동으로 차이점을 찾고, 올바른 스크립트를 생성하고, 해당 스크립트를 적용하여 대상 스키마를 참조와 동기화합니다.
Desired State 접근 방식은 아마도 앞에서 설명한 세 가지 접근 방식 중 가장 쉽고 간단한 버스 타기 시나리오에서 사용됩니다.
언어에 따라 Code First 마이그레이션 구현
T-SQL 스크립트를 작성하지 않으려는 경우 다른 옵션이 있습니다. 대신 C#, Python 또는 Node 및 솔루션에 정의된 엔터티(예: Bus, 경로 또는 위치)가 데이터베이스 및 스키마를 자동으로 생성하도록 하려는 경우 일반적으로 플랫폼 또는 프레임워크와 함께 제공되거나 적용되는 특정 도구가 있습니다. 이러한 도구를 사용하면 필드나 엔터티를 변경하거나 추가할 때마다 새 구조가 데이터베이스에 반영됩니다. 이 모듈의 끝부분에서 특정 플랫폼 및 프레임워크용 도구에 대한 참조를 찾을 수 있습니다.
단계별 배포를 위한 수동 스크립트 사용
수동 스크립팅 접근 방식에서 개발자는 시간 경과에 따라 데이터베이스를 만들고 변경하는 데 필요한 스크립트를 신중하게 작성하고 유지 관리합니다. 프로덕션에 배포된 스크립트는 변경되지 않고 새로 만들어집니다. 각 스크립트에는 데이터베이스를 새 스키마로 발전시키는 데 필요한 코드가 포함되어 있습니다. 데이터베이스를 처음부터 배포해야 하는 경우에는 모든 스크립트를 올바른 순서로 실행하여 데이터베이스가 올바르게 생성되고 발전되도록 해야 합니다. 스크립트가 배포되면 SSDT(SQL Server Data Tools)의 스키마 비교 유틸리티와 같은 도구를 사용하여 데이터베이스 정의를 비교할 수 있습니다. 이렇게 하면 배포된 스크립트가 후속 실행에서 동일한 데이터베이스에 다시 적용되지 않도록 할 수 있습니다.
간편하게 CI/CD를 구현하는 파이프라인 도구 선택
데이터베이스를 업데이트하는 방법을 가장 잘 처리하는 접근 방식을 파악한 다음에는 Azure DevOps 또는 GitHub Actions의 두 가지 일반적인 솔루션 중에서 선택하여 해당 접근 방식을 구현할 수 있습니다.
Azure DevOps를 사용하여 CI/CD 구현
Azure DevOps는 CI/CD 파이프라인을 포함하여 모든 DevOps 측면을 완벽히 지원하는 제품군입니다. 파이프라인은 파이프라인의 단계를 정의하는 작업으로 구성됩니다. 작업(Task)은 실행 파일의 실행에서 .NET 솔루션의 빌드에 이르는 거의 모든 항목이 될 수 있습니다. Azure SQL Database 배포 태스크라는 특정 작업을 사용하여 파일을 배포 .dacpac
하거나 .sql 스크립트를 실행할 수 있습니다.
GitHub Actions를 사용하여 CI/CD 구현
GitHub 작업을 통해 CI/CD 파이프라인을 정의할 수 있습니다. 작업을 사용하여 파이프라인의 단계를 만듭니다. 작업을 사용하여 거의 모든 유형의 프로세스를 실행할 수 있습니다. Azure SQL 배포 작업(Action)에서는 .dacpac
파일을 배포할 수 있습니다.
다음 연습에서는 Azure SQL 작업(Action)을 사용하여 데이터베이스 스키마를 배포 및 업데이트하여 실제 동작을 확인할 수 있습니다.