C#

C# ASP.NET MVC로 블로그 만들기 #3: 클라우드/IIS 배포 & CI/CD 완벽 가이드

로기221 2025. 5. 18. 23:55
728x90
반응형

C# ASP.NET MVC로 블로그 만들기 #1: CRUD 기본 기능 구현

 

C# ASP.NET MVC로 블로그 만들기 #1: CRUD 기본 기능 구현

ASP.NET MVC로 블로그 만들기: 실전 예제아래는 C# ASP.NET MVC로 간단한 블로그(게시글 CRUD) 기능을 구현하는 실전 예제입니다.Visual Studio에서 새 MVC 프로젝트를 만들고, 아래와 같이 따라 하면 블로그

rogi221.tistory.com

 

 

C# ASP.NET MVC로 블로그 만들기 #2: 고급 기능 구현 실전 가이드

 

C# ASP.NET MVC로 블로그 만들기 #2: 고급 기능 구현 실전 가이드

C# ASP.NET MVC로 블로그 만들기 #1: CRUD 기본 기능 구현 C# ASP.NET MVC로 블로그 만들기 #1: CRUD 기본 기능 구현ASP.NET MVC로 블로그 만들기: 실전 예제아래는 C# ASP.NET MVC로 간단한 블로그(게시글 CRUD) 기능

rogi221.tistory.com

 

 

C# ASP.NET MVC로 블로그 만들기 #3: 클라우드 배포 & CI/CD 파이프라인 구축


ASP.NET MVC 블로그를 클라우드에 배포하고 CI/CD 파이프라인을 구축하는 방법을 단계별로 설명합니다. 개발 환경에서 운영 서버까지 자동화된 배포 시스템을 구축해보세요!

 

 

1. 클라우드 배포 전략

1.1 Azure App Service 배포 (추천)

# Azure CLI 설치
winget install -e --id Microsoft.AzureCLI

# 로그인
az login

# 앱 서비스 생성
az webapp up --name myblog-2025 --resource-group BlogRG --sku B1 --runtime "DOTNET|6.0"

 

장점:

  • 5분 내 배포 완료
  • 자동 스케일링 지원
  • .NET 최적화 환경

 

2. CI/CD 파이프라인 구축

2.1 Azure DevOps YAML 설정

# azure-pipelines.yml
trigger:
- main

variables:
  buildConfiguration: 'Release'

stages:
- stage: Build
  jobs:
  - job: Build
    pool:
      vmImage: 'windows-latest'
    steps:
    - task: UseDotNet@2
      inputs:
        packageType: 'sdk'
        version: '6.0.x'
    
    - script: dotnet build --configuration $(buildConfiguration)
      displayName: '빌드'

    - task: DotNetCoreCLI@2
      inputs:
        command: 'publish'
        publishWebProjects: true
        arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    
    - task: PublishBuildArtifacts@1
      inputs:
        PathtoPublish: '$(Build.ArtifactStagingDirectory)'
        ArtifactName: 'drop'

- stage: Deploy
  dependsOn: Build
  jobs:
  - deployment: DeployToAzure
    environment: 'Production'
    pool:
      vmImage: 'windows-latest'
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              azureSubscription: 'AzureConnection'
              appType: 'webApp'
              appName: 'myblog-2025'
              package: '$(Pipeline.Workspace)/drop/*.zip'

 

주요 기능:

  • 코드 푸시시 자동 빌드
  • 단계별 승인 프로세스
  • 롤백 자동화

 

3. 고급 배포 기법

3.1 Blue-Green 배포

# 슬롯 교체 명령
az webapp deployment slot swap \
  --resource-group BlogRG \
  --name myblog-2025 \
  --slot staging \
  --target-slot production

 

장점:

  • 무중단 배포 가능
  • 이전 버전 즉시 복구

 

4. 모니터링 설정

4.1 Application Insights 연동

// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddApplicationInsightsTelemetry(Configuration["APPINSIGHTS_CONNECTIONSTRING"]);
}

 

수집 데이터:

  • 실시간 성능 지표
  • 사용자 행동 분석
  • 오류 자동 추적

 

5. 보안 강화

5.1 Key Vault 통합

// Program.cs
builder.Configuration.AddAzureKeyVault(
    new Uri("https://myblog-vault.vault.azure.net/"),
    new DefaultAzureCredential());

 

보호 항목:

  • 데이터베이스 연결 문자열
  • API 키
  • 인증서

6. 로컬 IIS 배포 방법

6.1 IIS 설정

# Windows 기능 켜기
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45

6.2 프로젝트 배포

# 프로젝트 게시
dotnet publish --configuration Release --output "C:\Deploy\MyBlog"

 

6.3 IIS 사이트 구성

  1. 응용 프로그램 풀 생성
    • .NET CLR 버전: 관리 코드 없음
    • 관리 파이프라인 모드: 통합
  2. 사이트 추가
    • 물리적 경로: C:\Deploy\MyBlog
    • 바인딩: localhost:8080
  3. 권한 설정
icacls "C:\Deploy\MyBlog" /grant "IIS_IUSRS:(OI)(CI)F"
 

문제 해결 팁:

  • 500.19 오류 → ASP.NET Core Hosting Bundle 설치
  • 502.5 오류 → dotnet restore 실행 확인

 

마치며

이번 포스팅에서는 Azure 클라우드 배포, IIS 로컬 배포, CI/CD 파이프라인 구축을 종합적으로 다뤘습니다.

 

핵심 정리

  1. Azure vs IIS 선택 가이드
    • Azure: 자동 스케일링, 무중단 배포(Blue-Green), 통합 모니터링(Application Insights)
    • IIS: 내부 시스템 연계 용이, 로컬 테스트 환경 구축 간편, 초기 비용 절감
       "내부용 시스템에는 IIS가 최적"
  2. 보안 강화 필수 사항
    • Key Vault로 연결 문자열/API 키 암호화
    • Blue-Green 배포로 다운타임 제거
  3. 성공적인 배포를 위한 체크리스트
    •  dotnet publish로 빌드 아티팩트 생성
    •  IIS 응용 프로그램 풀 버전 확인
    •  Azure DevOps 파이프라인 단계별 테스트
728x90
반응형