A capstone project by Sajal Biswas and Shreya Sharma
Use Case: Accommodation options in the travel industry are not limited to hotels and resorts. People often look for homestay options as this model benefits both the parties. Tourists can enjoy home-like comfort while owners can earn reasonable revenues on the rent.
We have taken the Airbnb business model as a reference, and we have analyzed how to utilize AWS cloud services so that business only need to focus on their model.
We are following ‘server-less architecture’ for our proposed solution. Serverless architectures help in significantly reducing operational cost, complexity, and engineering lead time, at the price of increased reliance on the vendor.
Tech stack used:
– ReactJs for creating the web application using AWS AMPLIFY
– Profile Management using AWS COGNITO
– ChatBot using AWS LEX and AWS AMPLIFY
– Static website hosting on S3 bucket
– CLOUDFRONT for CDN
– Code repository in CODECOMMIT
– Backend API’s using Lambda functions(in Python) which will be triggered via API Gateway
– AWS ElastiCache for efficient Search functionality
– DynamoDB database for storing data in key-value pairs
– Static files like images are kept in an S3 bucket
– CloudWatch Alarms are being used for monitoring purpose
– AWS SES service to send emails to customers
– AWS Pinpoint and Athena for analytics purpose
- Without provisioning Infrastructure, load balancing and less cost, how can we develop API, as fast as business needs to launch in the market?
For this requirement, Serverless architecture is the best choice. So, we have implemented the same so that business need not worry about Infrastructure changes and management.
- What if a user wants to track email user communication and process the data based on reply?
Enterprise solutions not only want the business to send promotional emails, contact services but also interested in user replies and track user communication as well. AWS SES is implemented for this feature, though we have integrated only sending email using Lambda function, other features can also be explored.
- The design approach for Search and Listing Properties on website
We have considered that a large amount of data will be generated, hence transaction would be huge as well, so we have chosen Dynamo DB. We are maintaining property list by partition key as <propertyCode>_<stateCode>_<pinCode> so that we can easily search, and whenever a huge request comes in, then it should split up in such a way that hot partition key issue does not arise.
- Efficient Search functionality using AWS ElasticSearch.
We are using AWS ElasticSearch for saving a record along with DynamoDB. We have also created Lambda function for collecting transaction data from DynamoDb and create a CSV file in S3 bucket which will be used from Athena for analytics purpose.
- Is it possible to increase customer interaction, instantly?
We have integrated LEX ChatBot with basic functionalities.
- What would be a good approach for User Profile Management?
The initial thought was to use AWS RDS service for this, but later we used managed service for this which is AWS Cognito.
- Analytics from Business Perspective.
Currently, we have used below services for analytics purpose:
– Aws pinpoint
– Athena Query
Website hosting with API integration:
We have developed a static website using React Js and AWS Amplify. This website is hosted on S3 bucket and Cloudfront is integrated for caching and CDN.
– User Registration, Login, Password Management, Logout and Session management using AWS Cognito.
– LEX Chatbot for basic functionalities
– Integration with backend API’s deployed on API Gateway. We have consistent response JSON format i.e. ArrayList of objects
– AWS pinpoint for tracking user activity on the website
Repository Management: Website repository is maintained using AWS Code Commit.
CI/CD: We have used AWS Code Pipeline for website deployment
API deployment: All Backend API’s are deployed in API gateway integrated with AWS Lambda and we have created the dev stage environment for the same.
Monitoring and Metrics:
We have used Cloud Watch logs and Metrics for debugging and monitoring purpose using various tags.API’s and Database:
We have created API’s using AWS Lambda as backend. All functions are written in the Python environment.
Although neither of us has expertise in Python, we learnt about it in the PGPCC course.
We have used PIP package manager for installing boto3 for python.
All Lambda functions are exposed through API gateway as a POST request, wherein we have used “action” field in the body so that based on this field, API can respond accordingly.
We have created the following services:
Product Management Service:
We have created 3 functionalities by querying DynamoDb database/ ElasticSearch
– Create product
– Get All product
– Get all product by state
For the same functionality, based on the “es_service” flag in the body, we decide whether to call DynamoDb or ElasticSearch
Transaction Management Service:
We have created 3 functionalities by querying DynamoDb
– Create Transaction
– Get All transaction and by UserID
– Transaction by date for a particular UserId.
Transaction Analytics service which will gather all transaction data and dump into s3 as CSV file where we can query the data using Athena.
Serverless computing offers several advantages over traditional cloud-based or server-centric infrastructure. For many developers, serverless architectures offer greater scalability, more flexibility, and quicker time to release, all at a reduced cost. With serverless architectures, developers do not need to worry about purchasing, provisioning, and managing backend servers.
We have observed the following advantages while working on this capstone project:
– No server management is necessary
– Developers are only charged for the server space they use, reducing cost
– Serverless architectures are inherently scalable
– Quick deployments and updates are possible
– Code can run closer to the end-user, decreasing latency
Shreya Sharma – Shreya is an AWS Certified Solutions Architect and is currently working as Senior Software Developer with Hexaware Technologies Pvt Ltd. in Mumbai. She has a particular interest in all things related to AWS Cloud, migration from on-premise to Cloud & Backend API. She has 8 years of extensive work experience in designing and developing Full Stack Applications on cloud and on-premise both.
Sajal Biswas – Sajal is passionate about cloud computing development and architecting cloud migration projects with backend API development. He is an OCA 7(java), CSM, Mule ESB certified professional and is currently working with Capgemini as a software consultant in Mule ESB technology. He has a total experience of 6.7 years including extensive experience in API integration.