AWS Lambda를 활용한 API 개발 정리

Sue·2025년 6월 10일
0
post-thumbnail

AWS Lambda를 활용한 API 개발 정리

AWS Lambda와 API Gateway를 결합하면 서버 관리 없이 확장성, 비용 효율성, 유연성을 갖춘 API 백엔드를 빠르게 구축할 수 있습니다. 아래에 Lambda 기반 API 개발의 전체 흐름, 장점, 구조, 보안, 한계까지 체계적으로 정리합니다.


1. Lambda 기반 API 개발 구조

  • Lambda 함수: 실제 비즈니스 로직(예: 데이터 저장, 조회, 처리 등)을 수행하는 코드 단위입니다. 각 API 엔드포인트별로 별도의 Lambda 함수를 둘 수 있습니다.
  • API Gateway: 외부 클라이언트(웹/모바일 앱 등)로부터 HTTP 요청을 받아 Lambda 함수로 전달하는 역할을 합니다. RESTful API, WebSocket API 등 다양한 방식 지원.
  • 이벤트 기반 트리거: Lambda는 HTTP 요청(API Gateway), S3 업로드, DynamoDB 변경 등 다양한 이벤트에 의해 실행될 수 있습니다.

예시 구조

API 엔드포인트연결 Lambda 함수기능 예시
POST /users사용자등록 Lambda사용자 등록
GET /users/{id}사용자조회 Lambda사용자 정보 조회
POST /talents재능등록 Lambda재능 정보 등록

2. 개발 및 배포 절차

  1. Lambda 함수 생성
    AWS 콘솔, CLI, 혹은 IaC(CDK, CloudFormation)로 함수 생성 후 코드 작성
  2. API Gateway와 연결
    API Gateway에서 엔드포인트 생성 → 메서드(POST, GET 등)별로 Lambda 함수 연결
  3. 권한 및 보안 설정
    IAM 역할, API 인증(OAuth, Cognito 등), CORS, 최소 권한 원칙 적용
  4. 테스트 및 배포
    콘솔, Postman, curl 등으로 API 호출 테스트 후 배포.

3. Lambda API의 장점

  • 서버 관리 불필요: 인프라 관리, 패치, 확장 등은 AWS가 자동 처리
  • 자동 확장: 트래픽 증가 시 Lambda 인스턴스가 자동으로 늘어나고, 요청이 없으면 리소스가 줄어듬
  • 비용 효율성: 코드가 실행된 시간과 요청 횟수만큼만 비용 발생
  • 유연한 아키텍처: 마이크로서비스, 이벤트 기반 아키텍처에 적합
  • 다양한 언어 지원: Python, Node.js, Java 등

4. 보안 및 운영 고려사항

  • API 인증/인가: API Gateway에서 Cognito, OAuth, JWT 등으로 인증 처리
  • IAM 최소 권한: Lambda 함수에 필요한 최소 권한만 부여
  • 비밀관리: AWS Secrets Manager, 환경 변수 활용
  • 로깅 및 모니터링: CloudWatch Logs, X-Ray 등으로 함수 동작 추적
  • CORS 정책: 필요한 도메인만 허용하도록 설정

5. 한계 및 주의점

  • 실행 시간 제한: Lambda 함수는 최대 15분까지만 실행 가능
  • 콜드 스타트: 오랫동안 호출되지 않은 함수는 첫 실행 시 지연 발생 가능
  • 동시성 제한: 리전별 기본 동시 실행 제한(기본 1,000개), 초과 시 스로틀링 발생
  • DB 부하: 짧은 시간에 많은 요청이 몰릴 경우 DB에 부하가 집중될 수 있음
  • 코드/패키지 용량 제한: 배포 패키지 최대 250MB

6. 실전 활용 예시

  • 사용자 등록/조회 API: Lambda에서 DB에 사용자 정보 저장/조회, API Gateway로 HTTP 엔드포인트 제공
  • 파일 업로드 후 처리: S3 업로드 이벤트 → Lambda로 이미지 리사이즈/처리
  • 알림, 메시지 처리: SNS, SQS 이벤트 → Lambda로 비동기 알림 전송
  • 데이터 분석/정기 작업: CloudWatch Events로 Lambda 예약 실행

7. 샘플 코드 (Node.js)

// Lambda 함수 예시: 사용자 등록
exports.handler = async (event) => {
  const { name, email } = JSON.parse(event.body);
  // DB 저장 로직 (예시)
  // await saveUserToDB(name, email);
  return {
    statusCode: 201,
    body: JSON.stringify({ message: '사용자 등록 완료' }),
  };
};

요약

AWS Lambda를 활용한 API 개발은 서버 관리 부담 없이, 신속하게 확장 가능한 백엔드 API를 구축할 수 있는 현대적인 방법입니다. API Gateway와 결합해 RESTful API, 이벤트 기반 처리, 비용 효율성, 빠른 배포 등 다양한 장점을 누릴 수 있지만, 실행 시간·동시성·콜드 스타트 등 서버리스 특유의 한계도 함께 고려해야 합니다.

profile
AI/ML Engineer

0개의 댓글