티스토리 뷰

반응형

웹 개발 실무 기술 A to Z

웹 애플리케이션을 운영할 때 서버를 직접 관리하지 않고 자동으로 확장되는 서버리스(Serverless) 아키텍처를 활용하면 비용 절감 및 성능 최적화가 가능합니다.
✔️ AWS Lambda → 이벤트 기반의 함수 실행
✔️ Firebase Functions → Firebase 생태계와 연동된 서버리스 기능
✔️ 비용 절감 및 확장성 극대화

이번 글에서는 서버리스 아키텍처를 활용하여 효율적인 웹 애플리케이션을 구축하는 방법을 설명하겠습니다.


1. 서버리스(Serverless)란?

✔️ 서버를 직접 관리할 필요 없이 코드 실행 가능
✔️ 사용한 만큼만 비용 지불 (Pay-as-you-go)
✔️ 자동 확장(Scaling) 기능 내장
✔️ AWS Lambda, Firebase Functions, Google Cloud Functions 등 지원

서버리스 아키텍처를 활용하면 유지보수 비용을 줄이고, 빠른 확장 가능!


2. AWS Lambda – 이벤트 기반 서버리스 컴퓨팅

2-1. AWS Lambda 개념

✔️ 서버 없이 코드를 실행할 수 있는 AWS의 서버리스 서비스
✔️ HTTP 요청, 데이터베이스 트리거, 파일 업로드 등의 이벤트에 따라 실행 가능


2-2. AWS Lambda 함수 생성 및 실행

(1) AWS Lambda에서 새 함수 생성

  1. AWS Lambda 콘솔 접속
  2. "Create function" 클릭 후 "Author from scratch" 선택
  3. 런타임 선택 (Node.js 18)
  4. Handler 설정 (index.handler)

(2) AWS Lambda 함수 코드 (index.js)

exports.handler = async (event) => {
  return {
    statusCode: 200,
    body: JSON.stringify({ message: "Hello from AWS Lambda!" }),
  };
};

AWS Lambda에서 코드 실행만으로 API 구성 가능!


2-3. AWS API Gateway와 연결하여 HTTP 요청 처리

(1) API Gateway 생성

  1. AWS API Gateway 콘솔 접속 → "Create API" 선택
  2. "HTTP API" 또는 "REST API" 선택
  3. Lambda 통합(Integration) 추가 → Lambda 함수 연결

(2) Lambda에서 API 요청 데이터 읽기

exports.handler = async (event) => {
  const name = event.queryStringParameters?.name || "Guest";
  return {
    statusCode: 200,
    body: JSON.stringify({ message: `Hello, ${name}!` }),
  };
};

Lambda + API Gateway 조합을 사용하면 서버리스 API 구성 가능!


3. Firebase Functions – 실시간 데이터 및 인증 연동

3-1. Firebase Functions 개념

✔️ Firebase 생태계(Firestore, Authentication, Storage)와 연동되는 서버리스 함수
✔️ 사용자 이벤트(로그인, 데이터 변경 등)에 따라 코드 실행 가능
✔️ Google Cloud 기반으로 실행되며 Firebase Hosting과도 연동 가능


3-2. Firebase Functions 설정 및 배포

(1) Firebase CLI 설치

npm install -g firebase-tools
firebase login

(2) Firebase 프로젝트 초기화

firebase init functions

✔️ Node.js 선택 및 Firebase 프로젝트 연결


3-3. Firebase Functions 코드 작성

(1) 간단한 Firebase Function (index.js)

const functions = require("firebase-functions");

exports.helloWorld = functions.https.onRequest((req, res) => {
  res.json({ message: "Hello from Firebase Functions!" });
});

(2) Firebase Functions 배포

firebase deploy --only functions

Firebase Functions를 활용하면 간단하게 서버리스 API 구현 가능!


4. 서버리스 아키텍처의 장점과 단점

4-1. 장점

✔️ 서버 유지보수 필요 없음 → 인프라 관리 없이 코드 실행
✔️ 트래픽 증가 시 자동 확장 → 사용량에 따라 자동으로 리소스 조정
✔️ 비용 절감 가능 → 실행한 만큼만 비용 청구

4-2. 단점

콜드 스타트(Cold Start) 문제 → 첫 실행 시 지연 시간 발생 가능
장기 실행 프로세스 지원 불가 → 15분 이상 실행되는 작업은 수행 불가능
디버깅 및 로깅 어려움 → 서버 환경이 없어 직접적인 로깅 및 디버깅 어려움

서버리스는 짧은 시간 내에 실행되는 이벤트 기반 함수에 적합!


5. 서버리스 아키텍처 적용 전후 비교

5-1. 적용 전

  • 고정된 서버 인프라 운영 → 트래픽 증가 시 서버 증설 필요
  • 서버 유지보수 및 보안 패치 필요
  • 비용 절감이 어려움 → 사용하지 않는 시간에도 서버 유지 비용 발생

5-2. 적용 후

✔️ 서버리스로 운영 → 서버 유지보수 불필요
✔️ 자동 확장 지원 → 트래픽 변화에 따른 리소스 조정 가능
✔️ 비용 절감 가능 → 사용한 만큼만 비용 지불

서버리스 아키텍처를 활용하면 운영 부담을 줄이고, 효율적인 웹 애플리케이션 운영 가능!


6. 마무리 및 다음 글 예고

이번 글에서는 AWS Lambda, Firebase Functions을 활용한 서버리스 아키텍처 구축 방법을 살펴봤습니다.
다음 글에서는 **실시간 데이터 스트리밍 및 이벤트 기반 아키텍처 (Kafka, WebSockets, Firebase Realtime Database)**을 소개하겠습니다.

다음 글 예고: "실시간 데이터 스트리밍 – Kafka, WebSockets, Firebase Realtime Database 활용" 🚀

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함
반응형