Why Amazon Web Services
After months of research, Tapingo decided to migrate to Amazon Web Services (AWS). AWS provided the scalability, reliability, and computing power that the company needed in order to provide real-time service to its customers. Another factor in the company’s decision to move to the AWS Cloud is that AWS supports Python (on which Tapingo is written) and offers a robust API that lets developers make changes to the environment without having to go through the UI.
The company rewrote its architecture to run on AWS, and then relaunched its app — in one day. “We decided to give up all the useless complexity that we had and just make it as simple as possible,” Oster says. In the newly launched Tapingo app, a student selects a restaurant, orders off the menu (which is updated in real time to identify only the items available), and pays using a credit card, student card, or PayPal. The restaurant is immediately notified of the order, and estimates a pickup time for the user. Users can also schedule orders to be ready for pickup at a certain time each day.
Tapingo uses 40 Amazon Elastic Compute Cloud (Amazon EC2) instances for the app’s communication servers, the website, order processing and cache management. The scheduling system and PCI-compliant payment environment both run on Amazon EC2 instances as well. Orders and transactional data are stored in MongoDB databases on Amazon Relational Database Service (Amazon RDS).
The company uses Amazon Redshift as its analytical database and data warehouse, and for billing. Tapingo’s system transfers data from MongoDB and Amazon RDS to Amazon Redshift to enable the company to easily run reports and use predictive analysis. The company mines its data stream to predict what restaurants should stock and when they should staff up—and currently predicts about 30 percent of its orders every day. “We are creatures of habit,” Oster says. “Generally, people have between three and five items that they buy at a certain restaurant, and that’s it. Now that we can leverage the AWS Cloud, we have the computing and storage power to store all that data and predict consumer behavior.”
Orders are queued using Amazon Simple Queue Service (Amazon SQS). The company created a regional queue on the Tapingo side that sets the order flow for merchants based on each restaurant’s profile and needs. For example, if a café can only take 25 coffee orders per hour, Tapingo automatically adjusts the queue accordingly. The virtual queue is updated in real time on Tapingo, so that users know what to expect in terms of wait times. The company also maintains a queue for the monitoring service Amazon CloudWatch, which kicks off a phone call in case of delays or problems. Tapingo also uses Amazon Route 53 as its DNS service.
The company tackles its inventory management issue by using Amazon ElastiCache to cache communications between its users and its app. “Almost all the communications between Tapingo and the user are in ElastiCache,” Oster says.