Skip to content

Taeyangmoon/azure-sql-modernization-hol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azure SQL 현대화 핸즈온 랩 (Portal 중심)

SQL Server → Azure SQL Database 마이그레이션 · 평가 · 비용 최적화(AHB)

온프렘 SQL Server를 Azure의 완전관리형 Azure SQL Database로 옮기는 전 과정을 Azure Portal 중심으로 직접 실습합니다. 평가(준비도) → 타겟 생성 → 마이그레이션 → 검증 → Azure Hybrid Benefit(AHB) 비용 비교까지, 반나절(약 2시간)이면 완주합니다.

License: MIT  Level: 초급중급 · 소요: 약 90120분 · 진행: Azure Portal


이 랩이 답하는 질문

  • SQL Server 라이선스/SA 갱신 시점이 왜 클라우드 전환의 가장 좋은 기회인가?
  • 온프렘 DB를 Azure로 옮기면 무엇이 좋아지나? (운영부담↓, 보안/ESU, 비용)
  • Azure SQL Database vs Managed Instance, 무엇을 언제 고르나?
  • 실제로 어떻게 옮기나? — 평가 → 마이그레이션 → 검증을 포털에서.
  • Azure Hybrid Benefit로 갱신비를 어떻게 전환 투자로 바꾸나?

학습 경로 (큰 그림)

[온프렘 시뮬레이션]                 [Azure]
  SQL Server on VM   ──평가(Assess)──▶  준비도/권고
  + 샘플 DB                              │
   (AdventureWorksLT)                    ▼
                       ──마이그레이션──▶  Azure SQL Database (완전관리형 PaaS)
                         (DMS / BACPAC)        │
                                               ▼
                                        검증 ─▶ 비용 최적화(AHB) ─▶ 정리

💡 이 랩의 "온프렘"은 학습용으로 Azure VM 위의 SQL Server로 흉내 냅니다. 실제 고객 환경에서는 사내 데이터센터의 SQL Server가 그 자리에 옵니다.


목차


프로젝트 구조

.
├── README.md                # 이 가이드 (랩 본문)
├── AGENTS.md                # 기여/가드레일
├── LICENSE                  # MIT
├── infra/
│   ├── main.bicep           # (강사용) 소스 SQL Server on VM + 네트워크 자동 배포
│   └── deploy.sh            # 배포 헬퍼 스크립트
└── assets/
    ├── verify-queries.sql   # 검증용 샘플 쿼리
    └── readiness-checklist.md  # 평가 체크리스트(요약)

🧑‍🏫 강사(SE) vs 수강생

  • 수강생은 README의 Part 0~8을 포털에서 따라가며 실습합니다.
  • 강사는 시간을 아끼기 위해 infra/소스 SQL Server VM을 미리 배포해 둘 수 있습니다(Part 2 참고).

Part 0. 배경 — 왜 지금 DB 현대화인가

0.1 갱신(Renewal) = 전환의 골든타임

SQL Server를 온프렘에서 계속 쓰려면 Software Assurance(SA)/라이선스를 주기적으로 갱신해야 합니다. 바로 이 갱신 시점이 "이 돈을 또 온프렘에 묶을 것인가, 클라우드 현대화에 쓸 것인가"를 정하는 의사결정 분기점입니다.

0.2 Azure로 옮기면 좋은 점

관점 온프렘 SQL Server Azure SQL Database (PaaS)
운영 패치·백업·HA를 직접 자동 패치/백업/고가용성 (관리형)
가용성 직접 구성 기본 99.99% SLA(구성에 따라 상향)
보안 직접 TDE 기본 암호화·Defender·감사 내장
비용 라이선스+하드웨어+운영 사용량 기반 + Azure Hybrid Benefit 절감
EOS(지원종료) ESU 유상/조건부 Azure에서 ESU 무상

출처: Azure로 옮긴 SQL Server는 Extended Security Updates(ESU)가 추가 비용 없이 제공됩니다. (SQL Server end of support options, SLA for Azure SQL Database)

0.3 Azure SQL Database vs Managed Instance — 무엇을 고르나

항목 Azure SQL Database Azure SQL Managed Instance
형태 단일 DB / 엘라스틱 풀 인스턴스(여러 DB·SQL Agent·교차 DB 쿼리)
호환성 대부분 호환(일부 인스턴스 기능 제외) 온프렘과 near-100% 호환
적합 신규/클라우드 친화 앱, 단순 마이그레이션 리프트&시프트(SQL Agent·Linked Server 등 의존)
프로비저닝 수 분 수 시간(인스턴스 단위)
이 랩 실습 대상 개념/의사결정으로 설명

🧭 이 랩은 빠르고 저렴한 Azure SQL Database로 실습합니다. 실제 고객 설계에서는 위 표로 DB vs MI를 함께 검토하세요. (의존성이 많은 리프트&시프트면 MI가 유리)


Part 1. 사전 준비

1.1 필요한 것

  • Azure 구독 + 리소스를 만들 수 있는 권한(구독 Contributor 권장).
  • 웹 브라우저(Azure Portal). 별도 설치는 없습니다(폴백 BACPAC 경로도 포털만 사용).

1.2 리소스 공급자 등록 확인

포털 > 구독 > 설정 > 리소스 공급자에서 다음이 Registered인지 확인(아니면 등록):

  • Microsoft.Sql (Azure SQL)
  • Microsoft.DataMigration (DMS — Part 5 기본 경로)
  • Microsoft.Compute, Microsoft.Network (소스 VM)

1.3 비용 안내 (중요)

  • 이 랩은 소액입니다. 핵심 과금원은 ① 소스 SQL Server VM(시간당), ② 타겟 Azure SQL Database(소형 티어).
  • 반드시 Part 8 정리로 리소스를 삭제하세요. 미삭제 시 비용이 계속 발생합니다.
  • 권장 SKU: VM Standard_B2ms, Azure SQL DB General Purpose Serverless 또는 S0.

💡 같은 리소스 그룹 하나(rg-sqlmod-hol)에 모든 리소스를 만들면, 끝나고 그룹째 삭제하기 쉽습니다.


Part 2. 소스 환경 준비 (SQL Server on VM)

"온프렘"을 흉내 낼 SQL Server VM샘플 DB를 준비합니다. 두 가지 경로 중 하나를 선택하세요.

경로 A — 강사 사전 배포(권장, 시간 절약) · infra/main.bicep

강사(SE)가 워크숍 전에 아래로 소스 VM을 미리 배포해 둡니다. (수강생은 Part 3부터 시작)

# Azure CLI 로그인 후
az group create -n rg-sqlmod-hol -l koreacentral
az deployment group create -g rg-sqlmod-hol \
  -f infra/main.bicep \
  -p adminPassword='<강력한암호>'   # 12자+ 대소문자/숫자/특수문자

배포가 끝나면 SQL Server 2019(개발자 에디션)와 AdventureWorksLT 샘플 DB가 올라간 VM이 생깁니다.

경로 B — 수강생이 포털에서 직접 (학습 효과 ↑)

  1. 포털 > 가상 머신 만들기 > 이미지에서 "SQL Server 2019 on Windows Server 2022"(개발자 에디션, 무료) 검색·선택.
  2. 크기 Standard_B2ms, 관리자 계정 설정, RDP(3389) 인바운드 허용(본인 IP로 제한 권장).
  3. 만든 뒤 RDP 접속 → SSMS(SQL Server Management Studio)로 로컬 인스턴스 연결.
  4. 샘플 DB 복원: AdventureWorksLT2019.bak 다운로드 → SSMS 데이터베이스 > 복원.

📌 포털 우선 원칙: 이후 Part 3~8은 모두 포털에서 진행합니다. VM 준비만 한 번 거치면 됩니다.

확인: SSMS에서 SELECT name FROM sys.databases; 결과에 AdventureWorksLT가 보이면 성공.


Part 3. 평가 — 마이그레이션 준비도

옮기기 전에 호환성·차단요소(blocker)·권고 타겟을 확인합니다. assets/readiness-checklist.md도 함께 보세요.

3.1 무엇을 평가하나

  • 호환성: 현재 DB가 Azure SQL Database에서 지원되지 않는 기능을 쓰는가? (예: 교차 DB 쿼리, CLR, 일부 Agent 작업)
  • 권고 타겟: Azure SQL Database vs Managed Instance 중 무엇이 맞는가?
  • 사이징: vCore/스토리지 권장치, 예상 비용.

3.2 포털에서 평가 (개념 + 실습)

대규모 환경은 Azure Migrate: 검색 및 평가로 다수 SQL 인스턴스를 한 번에 평가합니다 (SQL 평가 튜토리얼). 본 랩은 단일 DB이므로, 다음 경량 체크로 준비도를 확인합니다.

  1. 포털 > Azure Migrate > 프로젝트 만들기(없으면) — 평가 UI를 둘러봅니다.
  2. 단일 DB 호환성은 Part 5의 마이그레이션 마법사가 자동 호환성 점검을 수행하므로, 여기서는 assets/readiness-checklist.md수동 체크리스트를 통과시킵니다.

🔎 왜 어플라이언스를 안 쓰나요? 전체 자동 검색에는 Azure Migrate 어플라이언스 설치가 필요합니다. 반나절 HOL에서는 과합니다. 그래서 이 랩은 단일 DB + 마법사 내장 호환성 점검으로 충분합니다. (실제 대규모 평가 시 어플라이언스 경로를 안내하세요.)

확인: 체크리스트에서 "차단요소 없음(또는 경미)"이면 다음 단계로.


Part 4. 타겟 만들기 — Azure SQL Database

  1. 포털 > Azure SQL > 만들기 > SQL databases > Single database.
  2. 설정:
    • 리소스 그룹: rg-sqlmod-hol
    • 데이터베이스 이름: AdventureWorksLT-azure
    • 서버: 새로 만들기 → 서버 이름(전역 고유), 위치 Korea Central, 인증: SQL 인증(또는 Microsoft Entra) 관리자 설정.
    • 컴퓨팅+스토리지: General Purpose · 서버리스 또는 S0(소형) — 랩은 작게.
    • 백업 중복성: 로컬 중복(랩 비용 절감).
  3. 네트워킹 탭:
    • 연결 방법 공용 엔드포인트.
    • "Azure 서비스 및 리소스가 이 서버에 액세스하도록 허용" = 예.
    • "현재 클라이언트 IP 추가" = 예(내 PC에서 쿼리하려면).
  4. 검토+만들기 > 만들기. (수 분 내 완료)

확인: SQL DB 리소스 > 쿼리 편집기(미리 보기) 로그인 → SELECT 1; 성공.

💸 비용 팁: 서버리스는 유휴 시 자동 일시중지되어 랩 비용을 더 아낍니다.


Part 5. 마이그레이션 실행

소스(SQL on VM) → 타겟(Azure SQL Database)로 데이터를 옮깁니다. 기본 경로(DMS) 가 막히거나 시간이 부족하면 폴백(BACPAC Import) 로 동일 결과를 얻습니다. 둘 다 포털입니다.

경로 1 (기본) — Azure Database Migration Service, 포털, 오프라인

오프라인 = 마이그레이션 중 소스에 쓰기를 멈춤(컷오버). 랩에 적합.

  1. 포털 > Azure Database Migration Services > 만들기.
    • 소스/타겟이 보이도록 소스 VM과 같은 지역/네트워크를 선택.
  2. 새 마이그레이션 프로젝트:
    • 소스 서버 유형 SQL Server, 타겟 Azure SQL Database, 활동 유형 오프라인 데이터 마이그레이션.
  3. 마법사에서:
    • 소스 연결: 소스 VM의 SQL Server 주소/자격증명. (마법사가 호환성 점검을 자동 수행 — Part 3의 평가가 여기서 검증됨)
    • 타겟 연결: Part 4에서 만든 Azure SQL Database.
    • 테이블 매핑 선택 → 마이그레이션 시작.
  4. 진행 상태가 Completed가 되면 성공.

참고: Tutorial: Migrate SQL Server to Azure SQL Database (offline) — DMS

경로 2 (폴백) — 포털 BACPAC Import (가장 단순·항상 동작)

DMS 네트워크 구성이 어려운 환경에서 권장. 포털만 사용합니다.

  1. 소스에서 BACPAC 내보내기: SSMS > DB 우클릭 > 태스크 > 데이터 계층 응용 프로그램 내보내기.bacpacAzure Storage 컨테이너에 업로드(또는 로컬→포털 업로드).
  2. 포털 > 대상 SQL 서버 리소스 > 데이터베이스 가져오기(Import database) > 스토리지의 .bacpac 선택 → 가격 책정 계층 지정 > 확인. (포털이 새 DB를 생성하며 가져오기)

참고: Import a BACPAC to Azure SQL Database (Portal)

🧭 둘 중 무엇? 학습 목적이면 경로 1(DMS) 로 마이그레이션 도구 경험을 권장하고, 시간/네트워크 제약이면 경로 2(BACPAC) 로 결과를 보장하세요.

확인: 타겟 Azure SQL Database에 SalesLT 스키마의 테이블들이 보이면 마이그레이션 성공.


Part 6. 검증

타겟 DB가 소스와 동등한지 확인합니다. 포털 쿼리 편집기 또는 SSMS 사용. (assets/verify-queries.sql)

-- 1) 테이블 수
SELECT COUNT(*) AS table_count
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE';

-- 2) 핵심 테이블 행 수 (소스와 비교)
SELECT 'Customer' t, COUNT(*) c FROM SalesLT.Customer
UNION ALL SELECT 'Product', COUNT(*) FROM SalesLT.Product
UNION ALL SELECT 'SalesOrderHeader', COUNT(*) FROM SalesLT.SalesOrderHeader;

-- 3) 샘플 데이터 확인
SELECT TOP 5 ProductID, Name, ListPrice FROM SalesLT.Product ORDER BY ListPrice DESC;

확인: 소스와 행 수가 일치하면 데이터 마이그레이션이 정확히 된 것입니다.


Part 7. 비용 최적화 — Azure Hybrid Benefit

이제 "갱신비를 전환 투자로" 만드는 핵심, Azure Hybrid Benefit(AHB) 를 적용합니다.

7.1 AHB란

보유한 SQL Server 라이선스(SA 포함) 를 Azure SQL의 vCore 요금에 재사용해 비용을 절감하는 혜택입니다. (Azure Hybrid Benefit for Azure SQL)

7.2 포털에서 적용

  1. 타겟 SQL Database(vCore 모델) > 컴퓨팅+스토리지 > Azure Hybrid Benefit 옵션을 켭니다.
    • 라이선스 보유 시 "기존 SQL Server 라이선스 보유" 선택 → 라이선스 비용분 절감.
  2. 장기 약정(예약 용량) 과 결합하면 추가 절감.

⚠️ 현재 기준: 절감률은 SKU·vCore 수·SA 보유·예약 여부에 따라 다릅니다. 단정하지 말고 Azure 가격 계산기·TCO 계산기계정별 산정하세요.

7.3 (실습) 갱신 vs 전환 비교

가격 계산기로 ① 온프렘 갱신 비용(현 라이선스 갱신) vs ② Azure SQL DB + AHB 연간 비용을 비교해 1장으로 정리합니다. → 고객 미팅에서 바로 쓰는 자료가 됩니다.

확인: AHB 적용 전/후 월 예상 비용 차이를 숫자로 설명할 수 있으면 통과.


Part 8. 정리 (리소스 삭제)

💰 비용 방지를 위해 반드시 수행하세요.

모든 리소스를 한 그룹에 만들었다면 그룹째 삭제가 가장 깔끔합니다.

az group delete -n rg-sqlmod-hol --yes --no-wait

포털: 리소스 그룹 > rg-sqlmod-hol > 리소스 그룹 삭제.

확인: 리소스 그룹 목록에서 rg-sqlmod-hol이 사라지면 완료. (DMS 인스턴스를 별도 그룹에 만들었다면 함께 삭제)


부록 A. 트러블슈팅

증상 원인 해결
타겟 DB에 내 PC에서 접속 불가 서버 방화벽 SQL 서버 > 네트워킹에서 "현재 클라이언트 IP 추가"
DMS가 소스에 연결 못 함 네트워크 가시성/방화벽 DMS를 소스 VM과 같은 VNet/지역에, VM의 SQL 포트(1433) 허용
마이그레이션 호환성 경고 DB에서 미지원 기능 사용 경고 항목 수정 또는 Managed Instance 검토
BACPAC Import 실패 가격 계층/스토리지 권한 스토리지 접근 권한·충분한 DTU/vCore 티어 확인
리소스 공급자 오류 미등록 Part 1.2의 공급자 Registered 확인

부록 B. 참고 자료


이 랩은 교육용입니다. 가격·SLA·기능은 "작성 시점" 기준이며 변경될 수 있으니 위 공식 문서로 최신값을 확인하세요. 문서/화면이 다르면 공식 문서를 우선합니다. © Taeyang Moon · MIT License

About

Azure SQL 현대화 핸즈온 랩 — SQL Server를 Azure SQL Database로 (포털 중심): 평가·마이그레이션·AHB 비용 최적화

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors