System Architecture and Wire Frames Major Modules Rider/Drive r Phone Interfaces Browser Interface Cloud Routing Data Personal Data Trip Manager Google Maps Traffic Monitor Billing System SMS Service Mail Service • Drivers and Riders use a common interface that can run on either a phone (iPhone, Android, SMS) or a browser (Firefox, Explorer, Chrome). We can start with just a browser, usable on smart phones. • Requests for service and profile modification are recorded in the personal data base which is kept synchronized between the interface device and the cloud. • The Trip Manager is communicates with all active users, receiving location information and coordinating realtime communication. • Matches are performed in the Routing Data module which uses Google Maps for basic services but maintains a large graph of all trips planned or requested. • Google Maps is also used to create presentations for the interfaces. • Italics designates outsourced modules. • Not all connections are shown. BoE Data Requirements • Each user requires a negligible amount of data, easily held on a smart phone: contact information, current coordinates, social network, preferences, current plans, past trips • The Routing Data base might be big. – For every existing street segment or planned traverse of a street segment, 103 bytes – Manhattan has over 125 cross streets and 12 avenues, so it has over 2*125*12 = 3,000 street segments – Suppose 10% of our N customers have 20-block trips in the data base at any time. 2*N planned segment traverses. – 103*(3000+2*N) = 3*106+2*103*N = 3*106+2*106*(N/103) = 3 + 2*n MB for n thousand users. – For 1 million users, about 2GB—still not much. BoE Processing Requirements • We’d like instantaneous response for active users, but network delays will probably dominate, so programming convenience is probably the more important consideration. Dedicate a virtual processor to each one. • Suppose .01% of 106 users are active at a time. Requires 100 processes = 100 Heroku Dynos and 100 Heroku Workers. About $6,000 per month. Ride Offer Date: (today) Start time: Start place: (now) (here) End place: Return start time:* Ask per trip: $ Repeat* Daily MTWTF Weekly Ride Request for You Date: <rider’s date> Time: <rider’s time> Start:<rider’s place> End: <rider’s destination> Offer: $ <rider’s offer> Name:<rider’s name>* Cell: <rider’s cell>* Email: <rider’s email>* Send My Name My cell My email Message Yes No Maybe Ride Request Date: (today) Start time: (now) Start place: (here) End place: Return start time:* Offer per trip: $ Daily Repeat* MTWTF Weekly Request Title Xxx: (preset) Xxx: Xxx: (preset) (preset) Xxx:* Xxx Xxx Xxx Xxx XXX Confirm Ride <day><time><start><end> <people….> The ride was… aborted good bad Details: Send Profile Password: Name: Email: Use for real-time communication (X) Cell Phone: Birthday:* Male Female Gender* I would drive* I would charge the rider $ (1.00) Prefer Link to Facebook I would ride* if it took less than (10) extra minutes. plus $ (0.00) Set Billing Information if it took less than (10) extra minutes. I would pay the driver $ (1.00) per mile plus $ (0.00) Male Riders Female Riders Prefer Submit per mile Male Drivers Female Drivers