Node.js 및 Express에서 Azure Functions로의 마이그레이션 계획
백 엔드 Express 앱을 서버리스로 전환할 계획을 세우려면 Express 앱을 세 가지 기본 영역으로 세분화할 수 있습니다.
- Express 서버(주로 server.ts에 있음)
- 경로(routes/ 폴더에 있음)
- 서비스/폴더에 있는 데이터 액세스 논리
코드를 Express에서 Azure Functions로 리팩터링하려면 다음 단원에서 구현을 시작하는 다음 작업을 계획합니다.
- 새 Azure Functions 애플리케이션을 만듭니다.
- Node.js Express에서 Azure Functions 앱으로 서비스 폴더를 복사합니다. 이는 데이터 서비스가 Express 서버에 연결되지 않기 때문에 작동합니다.
- 각 경로 엔드포인트에 대한 새 함수 API를 만듭니다.
- 휴가 받기
- 휴가 추가
- 휴가 업데이트
- 휴가 삭제
- 서비스/폴더에서 데이터 액세스 논리를 사용하도록 함수 코드를 업데이트합니다.
- 원래 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로 옮깁니다.