- [Raf] All right. I just had a meeting with my customer, and that was a lot of information. Now that I'm back, it's time to digest and organize everything. The customer is a software company that created a solution for providing online menus using QR codes. Currently, they have a product that uses Amazon S3 for displaying HTML files used by restaurants. Let me start defining what they already have, then I'll navigate towards the requirements. Their current solution uses Amazon S3 with a feature called static website hosting. You can use this feature to host bucket content over the internet with HTTPS, as long as objects are public. For instance, this content can be HTML files with images, CSS style sheets, and JavaScript for running code on the client side. They also have a system that generates the menu and uploads it to the bucket. That is used by restaurant admins when they want to change prices, descriptions, pictures, or, actually, anything on the menu. In addition, they have a solution to generate the QR codes pointing to the bucket, and they provide a self-service system for the restaurant admins to copy the QR code image. The customer also told me they already have written a JavaScript library to collect the clickstream information. So, they just need a RESTful HTTPS endpoint to push that data. Probably, they need that because they want to take care of request authentication, or more flexibility on where to push data without having to change the client-side code. That is already done, and brings us to requirement number one. Our solution needs to provide an HTTPS endpoint for the data ingestion. This also brings us to requirement number two. According to my notes, I remember they said they are running with reduced staff. So, they prefer using AWS managed services for convenience. I will probably lean towards API Gateway, here. Cost was also a concern. The customer mentioned they preferred using services that will bill per refined usage, and not per time. Because of that, I will avoid using EC2 based services at all. So, I will focus on serverless and AWS managed services. Usually, managed services are already charging per refined usage, and not per time. So, the requirements align pretty well with each other. Like Amazon S3, for example, it charges per data stored, and not per number of hours a bucket exists. Another requirement was around data durability. I remember they asked for data backups to a different AWS Region. Since we will be using managed services for data storage, there are options to easily enable that. Check. Last, but not least, I remember the customer also asked for encryption in transit and encryption at rest. I even joked, saying the requirements were so well formed and this is rare. Speaking like that, encryption in transit and at rest, can seem complicated. But, luckily for us, it is easy to achieve in the cloud. Also, during the conversation with the customer, did you notice how I reinforced things that are in scope, and things that are out of scope? I made clear that the payment part, and the clickstream code that will collect information on the client side, are out of scope. Ideally, that needs to be documented. Doing so is a good practice that well-aligns expectations between your customer needs and what you are going to deliver as a consultant. Stay with me to learn more about the services used towards the part that is in scope for the architecture, which is the data analytics part. Together, we will build this solution piece by piece, or block by block, then put it all together, and present to the customer at the end. Along the journey, I will teach and talk about the possible AWS services used, always taking customer requirements into consideration.