IT Developer/Node.js

Node.js 기초 <20. 서버리스(Serverless) 환경에서 CI/CD 구축>

TEMA_ 2025. 3. 22. 15:47
반응형

노드 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 구축 방법을 배웠습니다!

 

반응형