Full_Stack developer

Azure DevOps์—์„œ ํ™˜๊ฒฝ๋ณ„(Dev/Prod) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑํ•˜๊ธฐ ๋ณธ๋ฌธ

Devops/Azure

Azure DevOps์—์„œ ํ™˜๊ฒฝ๋ณ„(Dev/Prod) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑํ•˜๊ธฐ

develkbh 2025. 4. 8. 14:38


๐ŸŒ Azure DevOps์—์„œ ํ™˜๊ฒฝ๋ณ„(Dev/Prod) ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑํ•˜๊ธฐ

์•ž์„œ ์šฐ๋ฆฌ๋Š” Azure DevOps๋ฅผ ์‚ฌ์šฉํ•ด
๊ธฐ๋ณธ์ ์ธ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•ด๋ดค์–ด์š”.

์ด๋ฒˆ์—๋Š” ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€,
**๊ฐœ๋ฐœ(Dev)**๊ณผ ์šด์˜(Prod) ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•ด์„œ
๋ฐฐํฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

โœ”๏ธ ๊ฐœ๋ฐœ์ž๋Š” Dev ํ™˜๊ฒฝ์— ์ž์œ ๋กญ๊ฒŒ ํ‘ธ์‹œํ•˜๊ณ ,
โœ”๏ธ ์šด์˜ ๋ฐฐํฌ๋Š” ์Šน์ธ(์Šน์ธ์ž)์ด ์žˆ์–ด์•ผ๋งŒ ๋ฐฐํฌ๋˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.


๐Ÿค” ์™œ ํ™˜๊ฒฝ์„ ๋‚˜๋ˆ ์•ผ ํ• ๊นŒ?

Dev์™€ Prod๋ฅผ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ด์š”:

  • Dev: ์ž์œ ๋กญ๊ฒŒ ํ…Œ์ŠคํŠธ, ๋””๋ฒ„๊น…, ๋น ๋ฅธ ๋ฐ˜์˜
  • Prod: ์‹ค์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š” ์‹ ์ค‘ํ•œ ํ™˜๊ฒฝ (๋ฒ„๊ทธ ์žˆ์œผ๋ฉด ํฐ์ผ!)

CI/CD ํŒŒ์ดํ”„๋ผ์ธ๋„ ์ด๋Ÿฐ ๊ตฌ์กฐ์— ๋งž์ถฐ์•ผ๊ฒ ์ฃ ?


๐Ÿงฉ ๊ตฌ์„ฑ ํ๋ฆ„ ์š”์•ฝ


 

               โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
     Commit →  โ”‚  Build Stage โ”‚
               โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    ↓
            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            โ”‚ Dev ๋ฐฐํฌ   โ”‚ (์ž๋™)
            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    ↓
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚ ์Šน์ธ ํ›„ Prod ๋ฐฐํฌ โ”‚ (์ˆ˜๋™ ์Šน์ธ)
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜



๐Ÿ› ๏ธ ์‹ค์Šต: ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๋งŒ๋“ค๊ธฐ

1. CI ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ (Build)

๋ฃจํŠธ์— azure-pipelines.yml ํŒŒ์ผ ์ž‘์„ฑ:


trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '18.x'

  - script: |
      npm install
      npm run build
    displayName: 'Build App'

  - task: PublishBuildArtifacts@1
    inputs:
      pathToPublish: 'build'
      artifactName: 'drop'


๐Ÿ’ก ๋นŒ๋“œ๋œ ๊ฒฐ๊ณผ๋ฌผ์„ Artifacts๋กœ ๋งŒ๋“ค์–ด์„œ Release ๋‹จ๊ณ„๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.


2. Release Pipeline ๊ตฌ์„ฑ (ํ™˜๊ฒฝ๋ณ„ ๋ฐฐํฌ)

  1. Azure DevOps → Releases → New Release Pipeline
  2. Artifacts ์—ฐ๊ฒฐ
    • ์œ„ CI ํŒŒ์ดํ”„๋ผ์ธ์˜ Artifacts(drop) ์„ ํƒ
  3. Stage 1: Dev ํ™˜๊ฒฝ ๊ตฌ์„ฑ
    • ๋ฐฐํฌ ๋Œ€์ƒ: Azure App Service (Dev์šฉ)
    • ์ด๋ฆ„: Deploy to Dev
    • ์ž๋™ ๋ฐฐํฌ ์„ค์ •: ์ฒดํฌ!
  4. Stage 2: Prod ํ™˜๊ฒฝ ๊ตฌ์„ฑ
    • ๋ฐฐํฌ ๋Œ€์ƒ: Azure App Service (Prod์šฉ)
    • ์ด๋ฆ„: Deploy to Prod
    • ์ž๋™ ๋ฐฐํฌ: โŒ ํ•ด์ œ
    • Pre-deployment approvals์— ์Šน์ธ์ž ์ง€์ • (PM, Tech Lead ๋“ฑ)
  5. Dev → Prod ์—ฐ๊ฒฐ
    • Dev Stage ์™„๋ฃŒ ์‹œ → Prod Stage ์‹œ์ž‘๋˜๋„๋ก ์—ฐ๊ฒฐ

โœ… ํ™˜๊ฒฝ๋ณ„ ๋ถ„๊ธฐ ์ „๋žต๋„ ๊ณ ๋ คํ•˜๊ธฐ

  • main ๋ธŒ๋žœ์น˜ → Dev ์ž๋™ ๋ฐ˜์˜
  • release ๋˜๋Š” production ๋ธŒ๋žœ์น˜ → Prod ์Šน์ธ ๋ฐฐํฌ

๋˜๋Š”

  • dev, prod ๋ธŒ๋žœ์น˜๋กœ CI/CD ๋”ฐ๋กœ ๊ตฌ์„ฑํ•ด๋„ ์ข‹์•„์š”

๐Ÿ’ก ์‹ค๋ฌด ํŒ

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๋ณ€์ˆ˜ or Azure App Service ์„ค์ •์—์„œ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • Secret ๊ฐ’์€ Azure Key Vault์™€ ์—ฐ๋™ ๊ฐ€๋Šฅ
  • pm2, Docker, Helm ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ฐฐํฌ ๋„๊ตฌ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ฐ€๋Šฅ
  • ์Šน์ธ์ž ์ง€์ • ์‹œ, ์Šน์ธ ์š”์ฒญ ๋ฉ”์ผ/Slack ์•Œ๋ฆผ๋„ ๊ฐ€๋Šฅ

๐ŸŽฏ ๋งˆ๋ฌด๋ฆฌ

ํ™˜๊ฒฝ์„ Dev/Prod๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฑด ๋‹จ์ˆœํžˆ “๋ถ„๋ฆฌ ๋ฐฐํฌ”๊ฐ€ ์•„๋‹ˆ๋ผ
์ฑ…์ž„ ์žˆ๋Š” ๋ฆด๋ฆฌ์ฆˆ ๊ด€๋ฆฌ์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

Azure DevOps์˜ Release ํŒŒ์ดํ”„๋ผ์ธ์„ ํ™œ์šฉํ•˜๋ฉด

  • ์ž๋™ ๋ฐฐํฌ์™€ ์ˆ˜๋™ ์Šน์ธ์„ ๋ณ‘ํ–‰ํ•˜๊ณ 
  • ์‹ค์ˆ˜ ์—†์ด ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์š”.