Node.js 및 Express에서 Azure Functions로의 마이그레이션 계획

완료됨

백 엔드 Express 앱을 서버리스로 전환할 계획을 세우려면 Express 앱을 세 가지 기본 영역으로 세분화할 수 있습니다.

  • Express 서버(주로 server.ts에 있음)
  • 경로(routes/ 폴더에 있음)
  • 서비스/폴더에 있는 데이터 액세스 논리

코드를 Express에서 Azure Functions로 리팩터링하려면 다음 단원에서 구현을 시작하는 다음 작업을 계획합니다.

  1. 새 Azure Functions 애플리케이션을 만듭니다.
  2. Node.js Express에서 Azure Functions 앱으로 서비스 폴더를 복사합니다. 이는 데이터 서비스가 Express 서버에 연결되지 않기 때문에 작동합니다.
  3. 각 경로 엔드포인트에 대한 새 함수 API를 만듭니다.
    • 휴가 받기
    • 휴가 추가
    • 휴가 업데이트
    • 휴가 삭제
  4. 서비스/폴더에서 데이터 액세스 논리를 사용하도록 함수 코드를 업데이트합니다.
  5. 원래 Express 경로와 일치하도록 함수 경로를 업데이트합니다.

Express 경로 예제

휴가 서비스에서 휴가를 가져오는 Express 경로의 간단한 예입니다. 경로 처리기에 대한 매개 변수는 및 res 개체입니다req.

import * as express from 'express';
import { vacationService } from '../services';

const router = express.Router();

router.get('/vacations', (req, res) => {    // API route
  vacationService.getVacations(req, res);   // Data access logic
});

Azure Functions 경로 예제

휴가 서비스에서 휴가를 가져오는 Azure Functions 경로 처리기 및 경로 정의의 간단한 예입니다. 경로 처리기에 대한 매개 변수는 및 context 개체입니다request.

import { app } from '@azure/functions';
import { HttpRequest, HttpResponseInit, InvocationContext } from '@azure/functions';
import * as vacationService from '../services';

export async function getVacations(request, context) {
    return {
        status: 200,
        jsonBody: vacationService.getVacations(); // Data access logic
    };
};

app.http('get-vacations', {  // API route
    methods: ['GET'],
    route: 'vacations',
    authLevel: 'anonymous',
    handler: getVacations
});

Azure Functions 앱의 구조를 이해하면 원래 Node.js Express 앱의 구조와 일치하도록 코드를 구성할 수 있습니다.

다음 연습에서는 Functions 앱을 만들고 코드를 Express 서버에서 Functions로 옮깁니다.