- [Raf] All right, let's call our customer for the week and learn more about what their current architecture state is, and what they expect to be done. During this call, I will also try to outline what is in scope and out of scope for the architecture. (phone ringing) - [Morgan] Hi, Raf, great to hear from you. - [Raf] Hello, Morgan, how are you doing? How are things going? - [Morgan] Things are pretty good. How are you doing? - [Raf] I'm doing pretty well. Is this a good time to talk about the use case and the requirements for the data analytics solution we talked about the other day at the cafeteria? - [Morgan] Sure, let me tell you the current state of what we already have, and then we can talk about what we need. Does that work? - [Raf] Yeah, sure, that's perfect. I'll be picturing the architecture in my mind as you speak, so I'll be mostly listening, but I'm paying attention. - [Morgan] Cool, so currently, we offer a solution that uses an S3 static website to host an HTML webpage containing restaurant menus. We have also developed a solution, where restaurant admins can log in to a system of ours and update that object in the bucket. They do that when they want to edit the menu. We also have a system to generate a QR code pointing to the bucket, so restaurants use that to print the QR code and add it to their restaurant tables. All of that is already done and we maintain it. - [Raf] Cool. That's pretty cool and useful during times when we don't want to touch menus with our hands. It is also a solution that helps save paper. I love it. To see if I understood it correctly, when customers are in the restaurant, they scan the QR, then they choose what they want, but they still have to wait for someone to come to their table. Is that right? - [Morgan] Yeah, yeah, that's right. And it's not optimal for restaurants and customers because it adds time between when the customer makes their choice and then actually ordering. We also have a third-party payment-processing service that we use for other solutions, and we would like to add an order this item option to the static HTML websites, that calls an API that we already have. - [Raf] Great, yeah, that all makes sense. That would be a nice upgrade to your product. Tell me more. - [Morgan] Yeah, so we know that we need to do one QR code per table because that will be the order identifier, and that's fine. But since we are doing this product upgrade, we would also like to have data analytics that will help restaurants gain insights into their menus. So for example, we want to be able to see what dishes in the menu people are viewing. Insights can show us if people are just scrolling through the whole menu, or if they stop after appetizers, and they don't get to entrees, things like that. We also want to help our customers optimize their menu design through analytics. - [Raf] Yeah. With that info, you can also discover things like items where customers see the description of it but don't add to their tab, or the amount of time between a customer expands an item's detail and they pay for it. With this kind of information, your BI analysts can make some reports to help restaurants, and even suggest specific dishes based on session data, like if you order this from restaurant A, then you might be interested on ordering this from restaurant B. That's called session data. This whole process is called clickstream data analysis. I can help you design a durable and resilient architecture that will receive, store, and process this data. This is perfectly possible using AWS data analytics services. Let me just ask you another question. Do you already have the client-side part that will send that clickstream data? How are you going to send data to be ingested? - [Morgan] So, we wrote a JavaScript library that we can use for that. All we need is an endpoint where we can do HTTP POSTs, and then the analytics side. So, we'd prefer a solution that accepts data through REST standards. - [Raf] All right, so the coding on the client side and the payment-gateway connection are out of scope for this project, right? - [Morgan] Right, we are happy if we have a RESTful HTTPS endpoint where we can send stuff. - [Raf] Perfect. Now, in addition, do you have any other requirements? - [Morgan] Yes, we do. Cost is a priority for us, so we would prefer to use AWS services that bill per refined usage, and not per time. We also would prefer using managed services, when possible, because we are operating at a reduced staff, so that means, like, no EC2 instances or operating systems to maintain, if possible. We'd also prefer to have the data ingested and available as a backup in another AWS Region with encryption. - [Raf] Absolutely, that seems the right thing to do. I assume you would like encryption both at rest and in transit, right? There is even a quote from Werner Vogels, Amazon's CTO, that says: "Dance like nobody's watching, encrypt like everyone is." (Raf laughs) Thanks for coming to me with well-defined requirements. That's really rare. (Raf laughs) So, we will likely use Amazon S3 for storage, which checks many of these boxes. I will call you with more questions as I progress through the architecture of this solution. Is that okay? - [Morgan] Yeah, yeah, please do call me. Call me any time you have any additional questions. - [Raf] All right. Thank you, bye bye, see you soon. - [Morgan] Bye.