/series-serverless-service

Serviço de gerenciamento de versões de séries de exercícios entre instrutor e aluno.

Primary LanguageC#

Series Serverless Service

Serviço de gerenciamento de versões de séries de exercícios entre instrutor e aluno. Composto por um aplicativo android nativo e uma api sem servidor para gerenciamento de séries de exercícios entre instrutor e aluno.

  • Series API with AWS Lambda and .NET, Amazon API Gateway, Amazon DynamoDB, and AWS SAM
  • Android Native App with Kotlin

Arquitetura

A arquitetura do aplicativo utiliza o Amazon API Gateway para se comunicar com uma função AWS Lambda escrita em .NET, que faz chamadas ao Amazon DynamoDB, com o AWS Identity and Access Management (IAM) fornecendo controle de acesso entre os componentes, conforme mostrado abaixo:

Arquitetura serverless

Implantação

A implantação dos componentes do aplicativo é gerenciada pelo AWS CloudFormation, que utiliza o AWS Serverless Application Model (AWS SAM) para simplificar o modelo.

O modelo do CloudFormation contém detalhes de configuração para cada componente e também faz referência a um bucket S3 usado para armazenar os artefatos de implantação, como o assembly .NET. Ao ser executado, o CloudFormation utiliza o modelo e o bucket S3 para criar um stack do CloudFormation que, em seguida, implanta os componentes do aplicativo.

Implantação na nuvem

docker run -d -p 8000:8000 --network=local-acad-serverless-api-network --name dynamo-local amazon/dynamodb-local

sam local start-api --docker-network=local-acad-serverless-api-network

Modelagem de Dados

Single table design usign global secondary indexes and usign one to many relationships with secondary index plus query pattern to retrieve data. https://www.youtube.com/watch?v=BnDKD_Zv0og

Padrões de Acesso aos Dados

  • Buscar os dados de um aluno ✔️
  • Buscar todas as séries de um aluno ✔️
  • Buscar os dados de um instrutor ✔️
  • Buscar todos os alunos de um instrutor ✔️
  • Buscar todos as séries de um instrutor por aluno ✔️
Entity PK SK
Student student#< studentId > student#< studentId >
Serie student#< studentId > serie#< serieVersion >
Instructor instructor#< instructorId > instructor#< instructorId >

Global Secondary Indexes:

  • GSI1PK
  • GSI1SK

alt alt

Ambiente de Desenvolvimento

Instruções para setup inicial do ambiente de desenvolvimento podem ser encontradas aqui https://aws.amazon.com/pt/blogs/dotnet/get-started-with-net-development-on-aws/

Resources