{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Welcome to the Retail Demo Store Workshops\n", "\n", "The workshops in this project are designed to walk you through incrementally adding functionality to the base Retail Demo Store application. Some of the workshops build on each other so it is recommended to follow the workshops in order unless otherwise instructed as part of an organized event or workshop.\n", "\n", "**IMPORTANT: The workshops are implemented using Jupyter notebooks that are designed to be executed from a SageMaker Notebook instance in an AWS account where the Retail Demo Store has been deployed. Therefore, the notebooks may not be fully functional outside AWS such as on your local machine. The Retail Demo Store's deployment templates will create the SageMaker Notebook instance and preload the workshop notebooks for you.**\n", "\n", "## Retail Demo Store Architecture\n", "\n", "Before opening and walking through the workshops, let's get familiar with the Retail Demo Store architecture and infrastructure deployed into your AWS account. Establishing this foundation will make the workshops more understandable and relatable back to the functionality being enhanced.\n", "\n", "The core of the Retail Demo Store is a polyglot microservice architecture deployed as a collection of RESTful web services in [Amazon Elastic Container Service](https://aws.amazon.com/ecs/) (ECS). Several AWS managed services are leveraged to provide build, deployment, authentication, messaging, search, and personalization capabilities. \n", "\n", "![Retail Demo Store Architecture](./images/retaildemostore-architecture.png)\n", "\n", "## Personalization, Messaging, Analytics, and AB Testing Architecture\n", "\n", "The Retail Demo Store provides personalized user experiences in the user interface using Amazon Personalize. Amazon Pinpoint and Braze are integrated into the Retail Demo Store workshop environment to provide personalized email messaging capabilities via Amazon Personalize. Amplitude is integrated to provide real-time user behavior analytics. Optimizely is used for feature flagging and AB testing Personalize models.\n", "\n", "![Retail Demo Store Personalization Architecture](./images/retail-demo-store-personalization-architecture.png)\n", "\n", "### Microservices\n", "\n", "The **[Users](https://github.com/aws-samples/retail-demo-store/tree/master/src/users)**, **[Products](https://github.com/aws-samples/retail-demo-store/tree/master/src/products)**, **[Carts](https://github.com/aws-samples/retail-demo-store/tree/master/src/carts)**, and **[Orders](https://github.com/aws-samples/retail-demo-store/tree/master/src/orders)** web services located in ECS rectangle in the above diagram provide access to retrieving and updating each respective entity type. These services are built with the [Golang](https://golang.org/) programming language and provide very basic implementations.\n", "\n", "The **[Search](https://github.com/aws-samples/retail-demo-store/tree/master/src/search)** service leverages [Amazon OpenSearch Service](https://aws.amazon.com/opensearch-service/) to power user-entered product queries. The first workshop walks you through creating and populating the index.\n", "\n", "The **[Recommendations](https://github.com/aws-samples/retail-demo-store/tree/master/src/recommendations)** service provides personalized user and related product recommendations and personalized ranking of products. In its default launch state, the service lacks the ability to provide personalization and instead provides default recommendations, such as featured products, from the **Products** service. The second workshop steps you through how to use [Amazon Personalize](https://aws.amazon.com/personalize/) to add personalization capabilities in the Recommendations service.\n", "\n", "### Web Application\n", "\n", "The **[Web Application](https://github.com/aws-samples/retail-demo-store/tree/master/src/web-ui)** provides the user interface for the Retail Demo Store. It is built using the [Vue.js](https://vuejs.org/) JavaScript framework for UI components, [Axios](https://github.com/axios/axios) to communicate with back-end web service APIs, and [AWS Amplify](https://aws.amazon.com/amplify/) to integrate with [Amazon Cognito](https://aws.amazon.com/cognito/) for authentication, and [Amazon Pinpoint](https://aws.amazon.com/pinpoint/) & [Amazon Personalize](https://docs.aws.amazon.com/personalize/latest/dg/recording-events.html) for capturing user behavior and clickstream data.\n", "\n", "The Web Application is deployed to an [Amazon S3](https://aws.amazon.com/s3/) bucket and served to end-users using [Amazon CloudFront](https://aws.amazon.com/cloudfront/).\n", "\n", "### Support Services\n", "\n", "Retail Demo Store's microservices and workshops make extensive use of [AWS Cloud Map](https://aws.amazon.com/cloud-map/) to discover the private addresses of other microservices and [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) to store and discover important system configuration values that effect how the services behave. For example, once the Amazon Personalize campaigns are built in the Personalization workshop, the ARNs are saved as SSM Parameters that the Recommendations microservice uses to retrieve recommendations from Personalize.\n", "\n", "You are encouraged to explore these services in the AWS console as you work through the workshops to see how they're utilized by the Retail Demo Store.\n", "\n", "### Build and Deployment Pipeline\n", "\n", "Retail Demo Store uses [AWS CodePipeline](https://aws.amazon.com/codepipeline/) to automatically build and deploy the microservices and web application when a change is detected in the code repository (AWS CodeCommit or GitHub).\n", "\n", "### Source Code\n", "\n", "Unless you deployed the Retail Demo Store via a linked GitHub repository (in which case you already have access to the source code in GitHub), you can view all source code for the Retail Demo Store's microservices and notebooks in the [AWS CodeCommit](https://aws.amazon.com/codecommit/) Git repositories deployed in this AWS account. The full project is also available in the GitHub repository under aws-samples: [https://github.com/aws-samples/retail-demo-store](https://github.com/aws-samples/retail-demo-store).\n", "\n", "## User Interface Instructions\n", "\n", "When the Retail Demo Store project was deployed in your AWS account by CloudFormation, a CloudFront distribution was created that can be used to access the web application. The CloudFormation template provides the URL of the distribution as an Output parameter. Browse to the CloudFormation console in this AWS account, click on the Retail Demo Store's stack, then on the \"Outputs\" tab, and finally locate the key named \"WebURL\". Open this URL in a separate web browser tab/window.\n", "\n", "![CloudFormation Outputs](./images/cfn-webui-outputs.png)\n", "\n", "When you access the WebURL you should see the Retail Demo Store home page.\n", "\n", "![Retail Demo Store Home Page](./images/retaildemostore-home.png)\n", "\n", "### Create Retail Demo Store User Account\n", "\n", "#### 1. Access Create Account\n", "\n", "Click the \"Sign In\" button and then the \"Create account\" link on the sign in view.\n", "\n", "![Retail Demo Store Create Account](./images/retaildemostore-create-acct-link.png)\n", "\n", "#### 2. Complete New Account Form\n", "\n", "Complete all fields and be sure to use a valid email, so that you can receive an account confirmation code via email. The user create and confirmation process is provided by Amazon Cognito. If you don't receive the confirmation code email, you can manually confirm your user account by browsing to Amazon Cognito in this AWS account, then select User Pools > Users, find your user and confirm.\n", "\n", "![Retail Demo Store Create Account](./images/retaildemostore-create-acct.png)\n", "\n", "#### 3. Confirm Account\n", "\n", "Once you receive your confirmation code from Cognito via email, enter it here.\n", "\n", "![Retail Demo Store Confirm Account](./images/retaildemostore-confirm.png)\n", "\n", "#### 4. Sign In to Your Account\n", "\n", "![Retail Demo Store Sign In](./images/retaildemostore-signin.png)\n", "\n", "#### 5. Emulate Shopper\n", "\n", "The Retail Demo Store provides the ability for you to emulate one of the existing shoppers in the system. This is useful when you want to test the product and search personalization capabilities (after the search and personalization workshops are completed).\n", "\n", "Click on your user name in upper right corner and then click on Shopper to access the User Menu.\n", "\n", "![Retail Demo Store User Menu](./images/retaildemostore-user-menu.png)\n", "\n", "To emulate a shopper, select the option to switch shoppers. Once saved, you can browse the storefront. This will be covered in more detail in the workshops.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Workshop Instructions\n", "\n", "Each workshop is implemented as a [Jupyter Notebook](https://jupyter.org/).\n", "\n", "> The Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text. Uses include: data cleaning and transformation, numerical simulation, statistical modeling, data visualization, machine learning, and much more.\n", "\n", "Open each notebook and follow along by reading and executing the cells sequentially. Use the \"run\" (\">\") button at the top of the notebook page to execute each cell.\n", "\n", "![Jupyter Notebook Play](./images/notebook-play.png)\n", "\n", "### Search Workshop\n", "\n", "The [Search Workshop](./0-StartHere/Search.ipynb) will walk you through the process of creating an index in Amazon OpenSearch and loading the index with information on the products in the Retail Demo Store. The Retail Demo Store's Search service uses this index to perform queries based on user-entered search terms.\n", "\n", "**[Open Workshop](./0-StartHere/Search.ipynb)**\n", "\n", "### Personalization Workshop\n", "\n", "The [Personalization Workshop](./1-Personalization/Lab-1-Introduction-and-data-preparation.ipynb) will walk you through the process of training and deploying machine learning models using Amazon Personalize to add product recommendations and personalized ranking to the Retail Demo Store. The Retail Demo Store's Recommendation service provides these features.\n", "\n", "**[Open Workshop](./1-Personalization/Lab-1-Introduction-and-data-preparation.ipynb)**\n", "\n", "This part of the workshop also provides an introductions to using customer data platforms (CDPs) like Segment and mParticle as a real-time event pipeline to deliver real-time events to the Personalize datasets you create in the first Personalization workshop.\n", "\n", "- **[Segment Events Workshop](./1-Personalization/Lab-5-Real-time-events-Segment.ipynb)**\n", "- **[mParticle Events Workshop](./1-Personalization/Lab-6-Real-time-events-mParticle.ipynb)**\n", "\n", "### Customer Data Platform Workshops\n", "\n", "Once you deploy Amazon Personalize in your Retail Demo Store, and deploy the Segment or mParticle real time events pipelines, you can also us the Segment CDP (Personas) or mParticle to create audiences and pass them into your marketing tools. These workshop show you how to deploy Segment or mParticle as a CDP in the Retail Demo Store, and to send Amazon Personalize recommendations to the CDP and other marketing tools.\n", "\n", "- **[Segment CDP Workshop](./6-CustomerDataPlatforms/6.1-Segment.ipynb)**\n", "- **[mPartcile CDP Workshop](./6-CustomerDataPlatforms/6.2-mParticle.ipynb)**\n", "\n", "### Forecasting Workshop\n", "\n", "Coming soon!\n", "\n", "### Experimentation Workshop\n", "\n", "The [Experimentation Workshop](./3-Experimentation/3.1-Overview.ipynb) demonstrates how to add experimentation to the Retail Demo Store to evaluate the performance of different testing techniques. Three different approaches to experimentation are implemented including A/B testing, interleaved recommendation testing, and multi-armed bandit testing.\n", "\n", "**[Open Workshop](./3-Experimentation/3.1-Overview.ipynb)**\n", "\n", "Additionally, the Experimentation Workshop shows you how to set up [Amplitude](https://amplitude.com) user beahvior analytics to measure the performance of personalization features exposed in the Retail Demo Store, using Amazon Personalize.\n", "\n", "**[Open Workshop](./3-Experimentation/3.5-Amplitude-Performance-Metrics.ipynb)**\n", "\n", "### Messaging Workshop\n", "\n", "The Messaging Workshop will walk you through adding outbound messaging functionality to the Retail Demo Store:\n", "\n", "[Amazon Pinpoint Workshop](./4-Messaging/4.1-Pinpoint.ipynb) demonstrates how to implement dynamic messaging campaigns to automatically send welcome emails, abandoned cart emails, and emails with personalized product recommendations using the same machine learning model used to provide product recommendations in the web application.\n", "\n", "**[Open Pinpoint Workshop](./4-Messaging/4.1-Pinpoint.ipynb)**\n", "\n", "[Braze Workshop](./4-Messaging/4.2-Braze.ipynb) demonstrates how to implement email campaigns that use Personalize product recommendations to personalize content for Retail Demo Store users.\n", "\n", "**[Open Braze Workshop](./4-Messaging/4.2-Braze.ipynb)**\n", "\n", "### Conversational AI Workshop\n", "\n", "The Conversational AI Workshop will show you how to add a chatbot to the web application using [Amazon Lex](https://aws.amazon.com/lex/). The chatbot will support basic intents/actions such as providing a simple greeting or the store's return policy as well as a more sophisticated product recommendation intent that is powered by a Lambda function will retrieves recommendations from Amazon Personalize.\n", "\n", "When combined with the recommendations in the web application and through the messaging workshops, this provides a powerful example of how true omnichannel personalization can be implemented using a decoupled architecture and AWS services.\n", "\n", "**[Open Conversational AI Workshop](./5-Conversational/5.1-LexChatbot.ipynb)**\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "conda_python3", "language": "python", "name": "conda_python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.13" } }, "nbformat": 4, "nbformat_minor": 4 }