+
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
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载