Categories: 미분류

Azure App Service를 이용한 Node.js 배포하기

Node.js는 비동기 이벤트 기반의 구조 덕분에 웹 API, 백엔드 서버, 마이크로서비스 구현에 적합한 플랫폼입니다. 그런데 서버를 직접 구축하지 않고, 클라우드 환경에서 자동으로 실행되고, 스케일링되며, 보안도 갖춘 환경이 필요하다면? 이럴 때 사용하는 서비스가 바로 Azure App Service입니다.

이번 글에서는 Node.js 앱을 Azure App Service에 배포하는 전체 흐름을, GitHub 연동 없이 가장 기본적인 FTP/ZIP 배포 방식으로 설명합니다.


Azure App Service란?

Azure App Service는 웹 앱을 쉽게 배포하고 운영할 수 있는 **PaaS(Platform as a Service)**입니다. Node.js 외에도 .NET, Java, PHP, Python 등을 지원하며, 다음과 같은 장점이 있습니다:

  • 서버 인프라 관리 불필요
  • 자동 확장 및 로드 밸런싱
  • 사용자 지정 도메인 및 SSL 설정
  • GitHub, Git, FTP, ZIP, VS Code 등 다양한 배포 방식 지원
  • 무료 플랜 포함

1단계 – Node.js 애플리케이션 준비

예제는 간단한 Express 기반 Node.js 앱입니다.

예제 코드 (index.js):

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello from Azure App Service!');
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

package.json 예시:

{
  "name": "azure-node-app",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}
  • 폴더 구조는 index.js, package.json, node_modules, 기타 정적 파일로 구성

2단계 – Azure App Service 계획 및 Web App 생성

1. Azure 포털 접속 > App Services 검색 → 진입

2. + Create → Web App 생성

항목설정
Subscription기본 구독
Resource Groupnode-demo-rg (신규 또는 기존)
Namemy-node-app-demo
PublishCode
Runtime stackNode.js 18 LTS (또는 최신)
RegionKorea Central 또는 가까운 리전
Operating SystemLinux (권장)
Pricing planF1(Free) 또는 B1(Basic) 이상 선택 가능

Review + Create → Create 클릭


3단계 – App Service에 Node.js 앱 배포하기 (ZIP 방식)

1. 배포할 프로젝트 ZIP 파일 생성

  • node_modules는 포함하지 않고 ZIP 압축:
npm install
rm -rf node_modules
zip -r app.zip .

2. App Service → 개요(Overview) > 배포 센터(Deployment Center) 클릭

  • 배포 방식: ZIP
  • 도구: FTP 또는 로컬 Git 배포 선택 가능 → 여기선 FTP 추천

3. FTP 배포 정보 확인

  • 배포 자격 증명 생성 필요 (App Service > 배포 자격 증명 설정)
  • FTP 호스트 주소, 사용자명, 비밀번호 확인

4. FTP 클라이언트(FileZilla 등) 또는 Azure CLI로 업로드

az webapp deployment source config-zip \
  --resource-group node-demo-rg \
  --name my-node-app-demo \
  --src app.zip

→ 업로드 완료 후 자동으로 Node.js 애플리케이션이 실행됩니다.


4단계 – 웹 앱 접속 및 확인

  • App Service > 개요에서 사이트 주소 확인:
https://my-node-app-demo.azurewebsites.net
  • 접속 시 Hello from Azure App Service! 메시지가 정상적으로 출력되면 성공!

5단계 – Node.js 환경 설정 및 로그 확인 팁

Node 버전 변경

  • App Service > 설정 > 구성 > 일반 설정
  • Node.js 버전 선택 가능 (14.x, 16.x, 18.x 등)

환경변수 설정

  • 설정 > 구성 > 애플리케이션 설정
  • NODE_ENV, DB URL 등 환경변수 설정 가능

로그 보기

  • App Service > 진단 및 해결 > 로그 스트림
  • 또는 Azure CLI 사용:
az webapp log tail \
  --name my-node-app-demo \
  --resource-group node-demo-rg

Q&A

Q1. App Service에서 Node.js 실행 시 꼭 process.env.PORT를 써야 하나요?

네, Azure App Service는 내부적으로 포트를 지정해 전달하기 때문에, process.env.PORT를 사용하지 않으면 앱이 제대로 실행되지 않을 수 있습니다. 하드코딩된 포트(3000)만 사용하면 배포된 환경에서 서비스가 실패합니다. 항상 const port = process.env.PORT || 3000; 구조를 사용하세요.


Q2. ZIP 배포 외에 다른 방식도 있나요?

물론입니다. Azure App Service는 다음 배포 방식을 지원합니다:

  • GitHub Actions 자동 배포
  • 로컬 Git 연결
  • FTP 업로드
  • Visual Studio Code 확장으로 직접 배포
  • Docker 이미지 기반 배포

지속적 통합(CI/CD)이 필요한 경우 GitHub 연동이 매우 유용하며, 로컬에서 빠르게 테스트하려면 ZIP 방식이나 VS Code 확장이 편리합니다.


Q3. 무료 요금제로도 실서비스 가능한가요?

Azure의 F1(Free) 요금제는 테스트 및 학습용으로 적합하지만, 메모리/CPU 제한, 커스텀 도메인 불가, 성능 저하 등의 제한이 있습니다. 실제 서비스용이라면 B1 이상 요금제를 추천합니다. 또한, 프리 티어는 하루 요청 수 제한도 있으므로, 트래픽이 많아지면 과금되는 유료 플랜으로 전환이 필요합니다.


Q4. node_modules 없이 배포해도 되나요?

네, Azure App Service는 Node.js가 설치된 환경에서 앱을 실행할 때 자동으로 npm install을 수행합니다. 따라서 node_modules를 포함하지 않아도 되며, 오히려 포함하면 불필요한 용량 증가와 충돌 가능성이 있습니다. 꼭 package.json, package-lock.json만 포함된 상태로 배포하세요.


Q5. 정적 파일도 함께 배포할 수 있나요?

물론입니다. Express 앱 내에서 정적 디렉토리(/public, /static)를 설정하면 됩니다:

app.use(express.static('public'));

public/index.html, public/images/bg.jpg 등의 파일은 자동으로 서빙되며, Azure App Service는 정적 리소스도 빠르게 전송할 수 있도록 최적화되어 있습니다.

추가로 Azure CDN 또는 Blob Storage와 연계하면 더욱 효율적인 콘텐츠 배포도 가능합니다.


huniverse4

Recent Posts

윈드라이브 동기화 용량 초과 시 대처법

윈드라이브(OneDrive)를 사용하다 보면 어느 순간 “동기화 중지됨”, “저장소 가득 참”이라는 메시지를 마주할 수 있습니다. 이는…

1개월 ago

윈드라이브 동기화 폴더 바꾸는 법 (드라이브 변경 포함)

윈드라이브(OneDrive)를 사용하다 보면, 기본으로 설정된 동기화 폴더 위치가 불편하거나 C드라이브 용량 부족 등으로 인해 다른…

1개월 ago

윈드라이브를 수동 동기화로 설정하는 방법

윈드라이브(OneDrive)는 기본적으로 자동으로 파일을 클라우드와 동기화하도록 설정되어 있습니다. 문서를 수정하거나 사진을 추가하면, 몇 초 내로…

1개월 ago

윈드라이브 동기화 안 될 때 체크할 설정 5가지

윈드라이브(OneDrive)는 자동으로 파일을 클라우드에 백업하고 여러 기기와 실시간으로 동기화해주는 매우 유용한 도구입니다. 하지만 간혹 “OneDrive…

1개월 ago

윈드라이브 동기화 상태 확인 및 오류 해결법

윈드라이브(OneDrive)는 실시간으로 파일을 클라우드에 저장하고 여러 기기에서 자동으로 동기화해주는 편리한 서비스지만, 때때로 동기화가 멈추거나 오류가…

1개월 ago

윈드라이브 특정 폴더만 동기화하는 방법

윈드라이브(OneDrive)는 기본적으로 전체 OneDrive 폴더를 PC와 동기화하지만, 모든 데이터를 동기화할 필요는 없습니다. 저장 공간을 절약하거나,…

1개월 ago