Skip to content

seonjl/tms

Repository files navigation

Serverless Task Management System

프로젝트 개요

목표: 서버리스 애플리케이션을 개발하고, DevOps 파이프라인을 구성하여 AWS 아키텍처링 능력과 Node.js 활용 능력을 증명합니다.

기능 목록

  1. 사용자 관리

    • 사용자 등록 및 인증 (Cognito 사용)
    • 사용자 프로필 관리
  2. 업무(Task) 관리

    • 업무 생성, 조회, 업데이트, 삭제 (CRUD)
    • 업무 상태 변경 (To-Do, In Progress, Done)
  3. 알림 시스템

    • 업무 상태 변경 시 알림 발송 (SNS 사용)
  4. 파일 업로드

    • 업무와 관련된 파일 업로드 (S3 사용)
  5. 데이터 분석

    • 업무 데이터 분석 및 보고서 생성 (Athena 사용)
  6. 메시징 큐

    • 비동기 작업 처리 (SQS 사용)

아키텍처 구성

  1. API Gateway & Lambda

    • API Gateway를 통해 HTTP 요청을 처리하고, Lambda 함수에서 비즈니스 로직을 실행합니다.
  2. 사용자 인증 (Cognito)

    • AWS Cognito를 사용하여 사용자 등록 및 인증을 처리합니다.
  3. 데이터 저장 (DynamoDB)

    • 사용자 정보와 업무 데이터를 DynamoDB에 저장합니다.
  4. 파일 저장 (S3)

    • 사용자가 업로드하는 파일을 S3 버킷에 저장합니다.
  5. 알림 시스템 (SNS)

    • 업무 상태가 변경될 때 SNS를 통해 알림을 발송합니다.
  6. 비동기 작업 처리 (SQS)

    • 긴 작업이나 비동기 작업을 SQS를 사용하여 처리합니다.
  7. 데이터 분석 (Athena)

    • 업무 데이터를 정기적으로 S3에 저장하고, Athena를 사용하여 쿼리 및 분석합니다.
  8. DevOps 파이프라인 (CodePipeline, CodeBuild, CodeDeploy)

    • CI/CD 파이프라인을 구축하여 코드 배포를 자동화합니다.

상세 구성

  1. API Gateway & Lambda

    • API Gateway로 HTTP 요청을 수신하고, Lambda 함수로 비즈니스 로직을 실행합니다.
    • 각 Lambda 함수는 사용자 관리, 업무 관리, 파일 업로드 등의 기능을 담당합니다.
  2. 사용자 인증 (Cognito)

    • 사용자 등록 및 인증을 위한 Cognito User Pool을 설정합니다.
    • Lambda 함수에서 JWT 토큰을 검증하여 사용자 인증을 처리합니다.
  3. 데이터 저장 (DynamoDB)

    • 사용자 정보와 업무 데이터를 저장할 DynamoDB 테이블을 설정합니다.
    • Lambda 함수에서 DynamoDB를 사용하여 CRUD 작업을 처리합니다.
  4. 파일 저장 (S3)

    • 사용자가 업로드하는 파일을 저장할 S3 버킷을 설정합니다.
    • Lambda 함수에서 S3 SDK를 사용하여 파일 업로드 및 다운로드를 처리합니다.
  5. 알림 시스템 (SNS)

    • 업무 상태가 변경될 때 SNS 토픽에 메시지를 발행하여 알림을 보냅니다.
    • 이메일, SMS 등의 방식으로 알림을 수신하도록 설정할 수 있습니다.
  6. 비동기 작업 처리 (SQS)

    • 긴 작업이나 비동기 작업을 처리하기 위해 SQS 큐를 설정합니다.
    • Lambda 함수에서 SQS 메시지를 읽어와서 작업을 처리합니다.
  7. 데이터 분석 (Athena)

    • 정기적으로 업무 데이터를 S3에 저장합니다.
    • Athena를 사용하여 S3에 저장된 데이터를 쿼리하고, 분석 결과를 저장합니다.
  8. DevOps 파이프라인 (CodePipeline, CodeBuild, CodeDeploy)

    • CodePipeline을 설정하여 코드를 자동으로 빌드하고 배포합니다.
    • CodeBuild를 사용하여 Lambda 함수와 기타 리소스를 빌드합니다.
    • CodeDeploy를 사용하여 Lambda 함수 및 기타 AWS 리소스를 배포합니다.

프로젝트 구현 단계

  1. 프로젝트 초기 설정

    • AWS 계정 설정 및 IAM 역할 구성
    • Node.js 프로젝트 초기화 및 필요한 패키지 설치
  2. Lambda 함수 작성

    • 사용자 관리, 업무 관리, 파일 업로드 등을 위한 Lambda 함수 작성
    • API Gateway와 Lambda 함수 연동
  3. DynamoDB 테이블 생성

    • 사용자 정보 및 업무 데이터를 저장할 DynamoDB 테이블 생성
  4. Cognito 설정

    • Cognito User Pool 생성 및 사용자 등록/로그인 기능 구현
  5. S3 버킷 생성

    • 파일 업로드를 위한 S3 버킷 생성
  6. SNS 설정

    • SNS 토픽 생성 및 알림 발송 기능 구현
  7. SQS 설정

    • SQS 큐 생성 및 비동기 작업 처리 기능 구현
  8. Athena 설정

    • S3에 저장된 데이터를 쿼리하기 위한 Athena 설정
  9. DevOps 파이프라인 구축

    • CodePipeline, CodeBuild, CodeDeploy 설정 및 CI/CD 파이프라인 구축
  10. 테스트 및 배포

    • 전체 시스템 테스트
    • 프로젝트 배포 및 문서화

최종 결과

이 프로젝트를 통해 서버리스 아키텍처와 AWS의 다양한 서비스를 활용하는 능력을 증명할 수 있습니다. 또한, DevOps 파이프라인을 통해 코드의 빌드 및 배포 자동화를 구현함으로써 효율적인 개발 및 운영 환경을 보여줄 수 있습니다.

프로젝트 기여

이 프로젝트는 오픈 소스로, 누구나 기여할 수 있습니다. 기여하고 싶다면, 이 저장소를 포크하고 풀 리퀘스트를 생성해 주세요.

라이선스

이 프로젝트는 MIT 라이선스 하에 제공됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published