노드 Node.js
20. 서버리스(Serverless) 환경에서 CI/CD 구축
안녕하세요! 태마입니다.
Node.js 기초 강좌입니다.
강좌의 경우
1. 주제 간단 정리
2. 상세 주제 정리
으로 이루어져 있습니다.
노드 Node.js

포스팅 시작하겠습니다 :)
1. 주제 간단 정리
1. 서버리스(Serverless)란?
서버리스(Serverless)는 서버를 직접 관리하지 않고, 클라우드 제공업체가 서버를 운영 및 자동 확장하는 모델입니다.
Node.js 기반의 애플리케이션을 AWS Lambda, Firebase Functions 등의 서버리스 환경에서 실행 가능합니다.
📌 서버리스 아키텍처의 특징
✔ 서버 관리 불필요 → 개발자는 코드 작성에 집중
✔ 자동 확장(Scaling) → 요청량에 따라 리소스 자동 조절
✔ 비용 절감 → 사용한 만큼만 과금(Pay-as-you-go 모델)
✅ 전통적인 서버 vs 서버리스 비교
구분전통적인 서버 방식서버리스 방식
서버 관리 | 개발자가 직접 서버 설정 및 운영 | 클라우드에서 자동 관리 |
확장성 | 트래픽 증가 시 수동으로 서버 확장 | 요청에 따라 자동 확장 |
비용 | 24시간 서버 실행 비용 발생 | 실행한 만큼만 비용 청구 |
📌 서버리스를 활용하면 비용 효율적인 운영과 빠른 배포가 가능!
✅ 여기까지 서버리스 개념과 장점을 배웠습니다!
👉 "그렇다면, 서버리스 환경에서 CI/CD를 어떻게 적용할까?"
✅ 2부에서 AWS Lambda, Firebase Functions를 활용한 CI/CD 구축 방법을 배워봅시다!
2. 상세 주제 정리
1. AWS Lambda를 활용한 서버리스 CI/CD
✅ 1) AWS Lambda 설정 및 서버리스 프레임워크 설치
$ npm install -g serverless
$ serverless create --template aws-nodejs --path my-lambda-app
$ cd my-lambda-app
$ npm install
📌 Serverless Framework를 사용하면 AWS Lambda 배포가 간편!
✅ 2) serverless.yml 설정 파일 작성
service: my-lambda-app
provider:
name: aws
runtime: nodejs18.x
region: us-east-1
functions:
hello:
handler: handler.hello
events:
- http:
path: hello
method: get
📌 Lambda 함수를 HTTP API로 실행하도록 설정!
✅ 3) Lambda 함수 코드 (handler.js) 작성
module.exports.hello = async (event) => {
return {
statusCode: 200,
body: JSON.stringify({ message: "Hello from AWS Lambda!" })
};
};
📌 AWS Lambda에서 실행될 기본 API 함수!
✅ 4) Lambda 배포 (Deploy)
$ serverless deploy
📌 Lambda에 배포 완료 후, API Gateway를 통해 API 호출 가능!
✅ 5) API 테스트
$ curl https://{API_GATEWAY_URL}/hello
📌 Lambda 함수가 정상적으로 실행되는지 확인 가능!
2. Firebase Functions를 활용한 서버리스 CI/CD
✅ 1) Firebase 프로젝트 설정 및 CLI 설치
$ npm install -g firebase-tools
$ firebase login
$ firebase init functions
📌 Firebase CLI를 통해 프로젝트를 초기화하고 Functions 설정!
✅ 2) Firebase Functions 코드 작성 (index.js)
const functions = require("firebase-functions");
exports.helloWorld = functions.https.onRequest((req, res) => {
res.json({ message: "Hello from Firebase Functions!" });
});
📌 Firebase Cloud Functions를 HTTP 엔드포인트로 설정!
✅ 3) Firebase Functions 배포
$ firebase deploy --only functions
📌 배포 후 https://us-central1-your-project.cloudfunctions.net/helloWorld에서 실행 가능!
✅ 4) Firebase CI/CD 자동화 (GitHub Actions)
name: Deploy to Firebase Functions
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: 코드 체크아웃
uses: actions/checkout@v3
- name: Firebase CLI 설정
run: npm install -g firebase-tools
- name: Firebase Functions 배포
run: firebase deploy --only functions --token "${{ secrets.FIREBASE_TOKEN }}"
📌 코드 변경이 push되면 Firebase Functions가 자동 배포!
✅ 5) Firebase Secrets 설정
✔ FIREBASE_TOKEN → Firebase CI/CD를 위한 인증 토큰 추가
📌 Firebase Functions가 자동으로 배포되도록 설정 가능!
3. AWS Lambda vs Firebase Functions 비교
✅ AWS Lambda를 선택해야 하는 경우
✔ 대규모 트래픽을 감당할 수 있는 서버리스 환경이 필요할 때
✔ AWS의 다양한 서비스(S3, DynamoDB, API Gateway)와 연동해야 할 때
✅ Firebase Functions를 선택해야 하는 경우
✔ Firebase Authentication, Firestore, Realtime Database 등과 쉽게 연동할 때
✔ 웹 및 모바일 애플리케이션과 빠르게 통합할 때
📌 AWS Lambda는 강력한 확장성을 제공, Firebase Functions는 앱 개발에 최적화!
4. 서버리스 CI/CD 적용 시 고려할 점
✅ 1) 배포 속도 최적화
✔ Lambda 함수 크기 최소화 → node_modules 최적화하여 배포 속도 향상
✔ Firebase Functions에서 Cold Start 방지 → Keep-alive 요청 추가
✅ 2) 환경 변수 관리
✔ AWS Lambda → serverless.yml의 environment 설정 사용
✔ Firebase Functions → firebase functions:config:set 사용
✅ 3) 서버리스 비용 관리
✔ Lambda의 실행 시간과 요청 횟수를 모니터링
✔ Firebase Functions의 무료 한도 초과 시 요금 발생 주의
📌 서버리스를 최적화하면 빠르고 비용 효율적인 운영이 가능!
✅ 여기까지 AWS Lambda와 Firebase Functions 기반 서버리스 CI/CD 구축 방법을 배웠습니다!
'IT Developer > Node.js' 카테고리의 다른 글
Node.js 기초 <19. CI/CD (Continuous Integration & Deployment) 구축> (0) | 2025.03.21 |
---|---|
Node.js 기초 <18. 중앙 집중형 로그 관리와 APM(Application Performance Monitoring)> (0) | 2025.03.20 |
Node.js 기초 <17. API 게이트웨이(API Gateway)와 서비스 관리> (0) | 2025.03.19 |
Node.js 기초 <16. 마이크로서비스 아키텍처(MSA)와 RabbitMQ 활용> (0) | 2025.03.18 |
Node.js 기초 <15. 작업 큐(Queue)와 백그라운드 작업 처리 (Bull 활용)> (1) | 2025.03.17 |
Node.js 기초 <14. 클라우드 스토리지(AWS S3, Firebase)와 파일 업로드> (0) | 2025.03.16 |
Node.js 기초 <13. 파일 업로드와 이미지 처리 (multer 활용)> (0) | 2025.03.15 |
Node.js 기초 <12. Express의 미들웨어와 요청 처리 흐름> (0) | 2025.03.14 |