Estrategia de Desarrollo y Plan de Recursos
Estrategia de Desarrollo y Plan de Recursos
Estrategia de Desarrollo y Plan de Recursos
Name ID
1. Development Strategy
Based on the client’s requirements, both functional and restrictions, a cloud architecture was
designed that achieves both the purpose of the project, and facilitates a viable development
roadmap. The objective of defining the architecture and describing the services that will be used
is to have a clear and unified vision of how all of the individual components come together to
achieve all requirements. The main guidelines for the project is to utilize the architecture already
available through AWS, and using a serverless approach since it offers scalability and is cost
efficient for a project this size.
TC3004B.101 - Team #1
1
Instituto Tecnológico y de Estudios
Superiores de Monterrey
TC3004B.101 - Team #1
2
Instituto Tecnológico y de Estudios
Superiores de Monterrey
User authentication and role management will be handled by AWS Cognito, utilizing "user
groups" to differentiate access levels. Cognito also uses Amazon SES (Simple Email Service) to
send transactional emails necessary for account ownership validation and password resets. The
frontend will interact with backend services through a GraphQL API, deployed and authenticated
via AWS AppSync and the Cognito User pool, respectively. This API connects to a DynamoDB
database, also deployed by Amplify, serving as the application's No-SQL internal storage
solution.
Serverless functions for the NextJS project’s API routes will be automatically deployed as AWS
Lambda functions. These functions, managed via API Gateway, provide cost-effective, serverless
computation, eliminating the need for a traditional server. These Lambda functions will securely
interact with the Amazon Connect instance's API to fetch real-time data for dashboard insights.
AWS SNS (Simple Notification Service) will be utilized to publish notifications from the
backend, which are then subscribed to and received in real-time on the frontend. This system
enables the tracking of issue information through metadata included in the notifications.
TC3004B.101 - Team #1
3
Instituto Tecnológico y de Estudios
Superiores de Monterrey
Some of the backend services that will emit alerts are automatically deployed by Amazon
Connect, including a data lake in which we can analyze call data and another (Connect Managed)
S3 bucket for call transcripts and call recordings, along with Lambdas that will be called on
relevant moments of the calls to emit alerts into SNS.
2. Resource Plan
This section will outline the technological resources that will be used for the development
process. It is crucial that all of the developers are aligned on this topic, to avoid having issues
with versions or tools used, and to facilitate the process of finding an error with incompatible
resources. Furthermore, information resources will be outlined, more specifically, how the API
will be documented. Since our architecture is mostly a consumer of endpoints, and Amazon
Amplify generates the endpoints, it is hard to define the endpoints before the development
process. Given this, an example of how to document the endpoints will be presented, with the
goal of unifying how the API will be documented during the development process.
TC3004B.101 - Team #1
4
Instituto Tecnológico y de Estudios
Superiores de Monterrey
○ Tailwind CSS v3: CSS framework that simplifies frontend design by styling
directly in the React component, and using global design choices. This will be
paired with Amplify UI components.
○ Python 3.10: Python is a language that works well to develop using AWS services
when paired with Boto3. As well as offering a shorter invocation time, reducing
latency compared to other runtimes.
○ Boto3 1.34: AWS SDK for Python: Boto3 is the AWS SDK for Python. It enables
Python developers to create, configure, and manage AWS services directly from
Python scripts.
○ Cypress 13.6.6: Testing framework: Cypress is a modern, front-end testing
framework designed for web applications. Its main use is to write and automate
end-to-end tests in a user-friendly and efficient manner.
○ Amplify generated GitHub actions for CI/CD: GitHub Actions are automation
tools that can be configured to automate software workflows. Amplify generated
GitHub Actions refers to workflows specifically created for AWS Amplify
applications. In your project, these actions would be used for continuous
integration and continuous deployment (CI/CD)
○ Git 2.44.0 for version control, paired with GitHub: Git is a distributed version
control system. In the project, it's used for tracking changes in source code during
software development, facilitating collaboration between several developers.
○ Amplify-CLI 12.10: The Amplify Command Line Interface (CLI) is a tool chain
for simplifying serverless web development with AWS. Amplify-CLI will be used
to create, configure, and manage the AWS backend for the application.
TC3004B.101 - Team #1
5
Instituto Tecnológico y de Estudios
Superiores de Monterrey
2.2 Information Resources
Nombre del PreSignUp()
Servicio
URL arn:aws:lambda:us-east-1:123456789:function:amplify123456PreSignup-pr
odu
Input (JSON) {
"request": {
"userAttributes": {
"string": "string",
. . .
},
"validationData": {
"string": "string",
. . .
},
"clientMetadata": {
"string": "string",
. . .
}
},
"response": {
"autoVerifyEmail": "boolean"
},
TC3004B.101 - Team #1
6
Instituto Tecnológico y de Estudios
Superiores de Monterrey
Respuesta (JSON) {
"request": {
"userAttributes": {
"string": "string",
. . .
},
"validationData": {
"string": "string",
. . .
},
"clientMetadata": {
"string": "string",
. . .
}
},
"response": {
"autoVerifyEmail": "boolean"
},
"error": {
"message": "string",
"code": "int"
}
}
TC3004B.101 - Team #1
7
Instituto Tecnológico y de Estudios
Superiores de Monterrey
TC3004B.101 - Team #1
8