• [ 배경 ]
    • 회사에서 운영하는 상점/쿠폰/거래 시스템의 서버 환경이 클라우드 서버였다. 그중에서도 aws에 올라가 있는데 마침 회사 복지중에 aws 솔루션 아키텍터님들에게 오프라인으로 수업을 들을 수 있는 강의가 있어서 운영시에 조금이라도 도움이 될것 같아서 수강하게 되었다.
    • "AWS Developing Serverless Solutions" 과정은 다양한 실습과 과제를 통해 학습자가 실제 서버리스 애플리케이션을 구축하고 배포하는 경험을 제공한다. AWS의 서버리스 서비스를 활용하여 확장 가능하고 유연한 애플리케이션을 개발하는 방법을 익힐 수 있다.

  • [ 과정 ]
    • 아래는 "AWS Developing Serverless Solutions" 커리큘럼 입니다.
        1. Serverless 아키텍처 소개:
          • 서버리스 컴퓨팅의 개념과 이점
          • AWS Lambda를 비롯한 AWS 서비스의 개요
        2. AWS Lambda:
          • Lambda 함수 작성과 배포 방법
          • 이벤트 소스와의 통합
          • Lambda 함수의 확장성과 성능 최적화
        3. AWS API Gateway:
          • API Gateway를 사용하여 RESTful API 만들기
          • API Gateway의 인증 및 인가 설정
          • API Gateway의 보안 및 모니터링 기능
        4. AWS Step Functions:
          • Step Functions을 사용한 워크플로우 설계
          • 상태 머신과 서버리스 애플리케이션 흐름 관리
          • 비동기 작업 처리와 분산 트랜잭션
        5. AWS AppSync:
          • GraphQL을 활용한 데이터 쿼리와 변환
          • 데이터 소스와의 통합 및 역할 관리
          • 실시간 데이터 업데이트와 구독 기능
        6. AWS Serverless Application Model (SAM):
          • SAM을 사용하여 서버리스 애플리케이션 배포
          • 애플리케이션 스택 정의 및 관리
          • SAM 템플릿 및 CLI 활용

  • 위 아키텍처를 예제를 무료로 사용할 수 있는 연습 사이트에서 구성한다.
    • 웹 응용 프로그램은 3가지 구성 요소로 구성됩니다.

프런트엔드 애플리케이션

프런트엔드 애플리케이션은 에 의해 생성되는 모든 정적 콘텐츠(HTML 파일, CSS 파일, JavaScript 파일 및 이미지)입니다 create-react-app. 이러한 모든 객체는 AWS Amplify Console에서 호스팅됩니다.

사용자가 웹 사이트에 연결하면 필요한 리소스가 브라우저에 다운로드되어 실행되기 시작합니다. 애플리케이션이 백엔드와 통신해야 하는 경우 백엔드에 REST API 호출을 발행하여 통신합니다.

백엔드 애플리케이션(비즈니스 로직)

백엔드 애플리케이션은 실제 비즈니스 로직이 구현되는 곳입니다. 이 코드는 API Gateway REST API가 전면에 있는 Lambda 함수를 사용하여 구현됩니다. 우리의 경우에는 애플리케이션의 다른 측면을 처리하는 서로 다른 Lambda 함수가 있습니다. 할 일 항목 나열, 특정 항목에 대한 세부 정보 가져오기, 항목 업데이트, 새 항목 생성, 항목을 완료로 표시 및 삭제 기존 항목. 애플리케이션은 모든 항목을 DynamoDB 테이블에 저장합니다.

사용자 등록 및 인증

ToDo 애플리케이션에는 개인 정보(사용자의 ToDo 항목)가 포함되어 있으므로 등록 및 인증된 사용자로만 액세스가 제한됩니다. 각 사용자는 자신의 항목에만 액세스할 수 있습니다.

이를 달성하기 위해 사용자가 애플리케이션에 등록하고 인증하는 등의 작업을 수행할 수 있는 Cognito 사용자 풀을 사용하고 있습니다. 사용자가 인증된 후에만 클라이언트는 REST API 호출을 수행할 때 사용해야 하는 JWT 토큰을 받습니다.


  • [ 결과 ]
    • 아이디어를 출시까지 개발하고 배포하는데 시간을 단축한다.
    • 종량제 결제 모델로 비용을 절감할 수 있다.
    • 서버리스 애플리케이션은 서비스 통합이 내장되어 구성보다는 구축에 집중할수 있게 한다.
    • 고객의 요구사항 니즈에 맞추어 확장할 수 있다.

+ Recent posts