Do you have an idea for a marketplace app
and aren't sure which AWS Services you should use to build it quickly?
Sit back, grab your favorite beverage, and I'll show you where to get started.
Today's episode comes from Oscar.
Oscar is a DevOps Engineer in Nairobi, Kenya.
Now he wants to build an app that helps students in Kenya find housing accommodations
and for landlords to list their apartments for rent.
Let's hear from Oscar.
Student housing industry in Kenya right now is quite unstructured.
The main challenge is the purchase of advertising media.
This has made it very difficult for them to convince their potential clients
of the quality of services they provide.
They also have a challenge in collecting feedback
on how best to improve
the quality of the services and customer journey.
I'll use Oscar's app as an example to show you the services
that you can use to get your Marketplace app off the ground.
Every Marketplace app has at least two personas that you need to build features for
to keep them coming back to your app.
For Oscar, this means building features for students and landlords.
Both sides of a Marketplace app can be built using serverless infrastructure.
This way, infrastructure management tasks
like capacity provisioning and patching are handled by AWS.
You'll need to add authentication to verify who's using your app
and which features to show that person.
Amazon Cognito lets you add user sign up, sign in, and access control
to your web and mobile apps quickly and easily.
Cognito has a feature called User Pools
which allows you to control who can access your APIs.
All of the APIs to access your backend services will be built using Amazon API Gateway.
API Gateway makes it easy to build, maintain, and secure APIs at any scale.
This combination of Cognito with API Gateway allows you to restrict access to the APIs.
In Oscar's app, only students will be able to apply for housing
and only landlords will be able to list an apartment.
In API Gateway, you'll create an API endpoint
that enables CRUD operations on an Amazon DynamoDB table.
DynamoDB is a fast and scalable NoSQL database.
I'm choosing DynamoDB because a NoSQL database fits the access patterns
and scale requirements of a Marketplace app.
NoSQL databases provide high throughput and low-latency reads and writes.
In Oscar's app, students from all over the country will be searching through housing listings
and applying to multiple apartments.
Landlords will want to list their apartments and see who has applied to rent their apartments.
A really useful feature of DynamoDB that you'll want to take advantage of is DynamoDB Streams.
This captures information about every modification to data in a table.
One of the use cases is for triggering an event based on a particular item change.
Let's go back to Oscar's app to see an example of how DynamoDB Streams can be used.
Once the user has applied to rent an apartment,
DynamoDB Streams will trigger an AWS Lambda Function
to send a confirmation email to the user and landlord.
Lambda allows you to run code without having to manage servers.
The email will be delivered through Amazon's Simple Email Service,
which is a cost effective and scalable email service.
You can even build out marketing services for your sellers in your Marketplace app
when you combine Simple Email Service with Amazon Pinpoint.
Pinpoint is a flexible and scalable outbound and inbound marketing communication service.
With Pinpoint, you can enable sellers to send mass emails to buyers
that have opted in to receive emails.
For Oscar, this means landlords can send emails to students
before the start of the school year to showcase their apartments.
You can also use Pinpoint to understand who is using your app and how they are using it.
For a marketplace app, this means knowing who's purchasing your products,
the country or region where users live,
and metrics that show how frequently your app is used.
For Oscar, this means he can compare the cities in which students are searching for housing
versus where they actually live and understand the average distance.
He can now find out which month students begin to search for housing
and make sure that he has a large enough supply of apartments to fulfill demand.
You've got two options to process payments.
You could build your own from scratch or use a third party.
If I was in your position, I'd use a third party.
Building your own sounds hard and pretty boring.
Either way, API Gateway will trigger an AWS Lambda Function to either process the payment
or request a third party payment processor to process the payment.
If you're building a web app or React native app,
you can host your app in Amazon S3
and deliver your app to users using Amazon CloudFront.
S3 is scalable object storage in the Cloud.
CloudFront is a fast and secure content delivery network.
You'll also use S3 with CloudFront for serving images or videos to your users
since CloudFront will speed up the delivery of your content.
CloudFront delivers your content
through a worldwide network of data centers called Edge Locations.
When a user requests content that you're serving with CloudFront,
the request is routed to the Edge Location that provides the lowest latency
so that content is delivered with the best performance possible.
You might be wondering what's the most secure way to host your website
or serve images and videos to your app?
I recommend using the CloudFront Secure Static Website hosting solution.
I'm all about finding code or pre-built cloud formation templates
that doesn't work for me and this one does a lot.
It deploys a CloudFront distribution to an S3 bucket,
grades SSL and TLS certificates through AWS Certificate Manager
and add security headers to every response
through a feature of CloudFront called Lambda at Edge.
You can find this in the AWS Samples GitHub repo.
Don't worry, I've dropped the link to that repo in the bottom of the video.
Are you fired up right now to start building?
I know I would be if I had an awesome idea like yours.
But before you head to the AWS Console,
watch this recap to make sure you don't miss a thing.
Add user authentication and authorization with Amazon Cognito.
Build APIs to your database with Amazon API Gateway and Amazon DynamoDB.
Lambda will respond to changes to tables in DynamoDB
and perform other backend processing.
Send emails with Amazon's Simple Email Service.
Analyze how users are using your app with Amazon Pinpoint.
Host your app in Amazon S3 with Amazon CloudFront.
That covers services that you can use to quickly build an MVP of a Marketplace app.
Make sure you check out the links below the video to help you build.
It doesn't matter when you start as long as you just get started!
Thanks for hanging out with me. See you soon.