On March 13th, during the White House Rose Garden address, President Trump informed us that there is a Coronavirus testing site under development. He mentioned that Google is developing such a site. It felt like a good choice. Google has US and Worldwide presence with millions of consumers (aka citizens) on its accounts (thanks to gmail and Android distributions). Definitely they can quickly whip up a few Kubernetes clusters with python and deploy to Google Cloud Platform.
It was possible for such a site will be up and running by midnight of March 13th. It did not happen! I wondered why. There are additional issues written about in New York Times.
Note that there are some helpful tips from CDCif someone is sick. The big challenge is how to get tested across the United States. There are security, scale, integration, and routing challenges. 15 years back I was fortunate to lead an effort with a talented set of engineers and business professionals to build a donation site for helping people affected by Hurricane Katrina. In 20 hours we built a donation site that collected nearly $13.5M in donations over the next 5 days.
I spent some time considering additional technical challenges and issues. Below is a quick summary of some inputs in identifying building blocks to get to the final solution.
- Handle 300M+ users or at least 100M+ families/groups
- Handle concurrent registration of 1000+ users registered per second
- P99 response time for key experiences under 5 seconds
- High security and compliance for personal information
Data Items to Consider
- Symptoms and Assessment Scores
- Sites offering Testing (mostly Drive throughs)
- Drive Throughs to be provided by Walmart, Target, CVS, Walgreens, et al.
- Sites that local Public Health departments offer
- Regular clinics and hospitals
- Load at each test site (useful for routing)
- Wait time at each test site (reduced wait time)
User data easily can be shared across 100s of data stores to reduce latency, increase availability, and performance.
- User Information (contact information, age, any pre-history, travel-history)
- User Location
- Test Status
- Test Result
- Fraud checks
Some key methods
- ScoreSymptoms( userLocation, symptoms) // can be stateless calculator
- IsCoronavirusTestingRequired( userInfo, userLocation, symptoms)
- NearestSitesForTesting( userInfo, userLocation, isTestRequired) // return sites with rank order on proximity and low wait times
- ScheduleVisitForTest( userInfo, userLocation, testLocation) // gives a token for user to present at test site
- CheckinForTest( userInfo, scheduleToken, testLocation) // get a testingToken for tracking purposes
- PostResultsForTest( userInfo, testingToken, testLocation, testResults)
- viewTestStatus( userInfo) // will provide status and when available the results as well
- Citizen – end-user / family
- TestSiteAdmin – dedicated admin per site (most likely a group with rotation of people)
- TestSiteOwners – companies / individuals who offer the TestSites (ex: Walgreens for offering its drive-through locations)
- TestProvider – who runs the tests and provides results (ex: Government Labs, LabCorp, Quest Diagnostics)
- Website – front-end experience for each actors (role based control or dedicated website for each party)
- Accounts – handles identity, logins, userInfo, anti-fraud, etc.
- SymptomManager – helps with scoring symptoms for test requirement
- SiteManager – enables TsetSiteAdmin and TestSiteOwners to manage their sites
- TestProvider – manages test collection, routing, testing, and reporting results
- StatusManager – per-user, per-site, and per-provider status management
- Administration – security and compliance management, Reports, Configurations, etc.
- TrafficManager – marketing function to ensure that this site is discoverable and linked to from all sources.
- DataStores – sharded and scalable data store for transactional and bulk reporting purposes.
Additional APIs/Resource to Consider
- Google Maps
- API management service (apigee, …)
- OpenTable style reservation system for Testing Sites
- Sharded / Scalable User Authentication (reuse existing infrastructure at Google, Amazon, Facebook, Okta ?)
- Sharded / Scalable User Data Store (userInfo, userLocation, profile
- Edge Security
Definitely there are a LOT of items pending to be discovered and built out. This is a good start and something that we can iterate from.
We are gifted with the plethora of media and history that is available for us to learn from. Today I watched the video snippet showing internal launch of “Think Different” campaign by Steve Jobs. Very nice talk outlining his thinking to streamline and transform three things – products, marketing, and distribution. And world over, now business schools have many case studies about Apple’s success henceforth.
Wind back your clock to 1997. The Internet is starting to grow. Microsoft had a couple of block buster years with Windows 95 Operating System transforming the lives for consumers. Windows NT was in its v3.5 marching into the enterprises (with some contributions from yours truly for the web server). And down in the valley there was a legendary company – Apple – in some troubles. I was too immersed in doing daily work and barely knew about business landscape. Now I have the fortune to catch up with history and lessons.
Apple was not in small troubles; it was in fighting for its existence. After a series of lost opportunities, the company was almost written off. And then comes along Steve Jobs for his second act. Wind forward to 2016, we know that in the past two decades, Apple has been reborn and established very well. Steve had a confident and clear picture of what he wanted to go after. He had anticipated the confusion of speeds and feeds leading to spiraled down value chain in the PC market. He was clear about his focus on reducing the inventory time to ensure Apple can be an on-demand supplier to creative audience. He had lined up support from estates of many people to create a captivating ad campaign (though products came later). Brilliant!
My daughter is part of a Destination Imagination group where they picked a challenge related to community service. Part of the challenge is for them to create a meme and message. I am eager to see what her group comes up with. In DI we cannot tell kids what to do. They have to discover and do it themselves. I had seen some preliminary work and it looks promising. Perhaps I have to have her watch this video of Apple’s campaign for her to learn more too.
In the past week I had set up a private word press site for blogging atop LAMP to check it out. There was a learning curve to understand the LAMP and Word Press taxonomy. Still, I got a lot of easy help from some good documentation on Word Press and LAMP configuration. And as a saving grace, there is Stack Exchange where I can easily learn from attempts made by millions of pioneers.
You can check out the blog site – Bright Possibilities. It has a sister site on WordPress as well. Given that the main site is built from ground up, I also had to dig around and find ways to secure it with SSL. Thanks to some good documentation I was able to get this set up.
The best part in the entire experience has been how simple and nice the Word Press blog management site has been. I am sure there are lots I will continue to learn. The start looks simple, reliable, and fast. All ye, Word Press contributors, you rock!
For nearly 15 years, I had used a variety of blogging tools except for Word Press :(. I am glad to find an alternate solution on the outside besides corporate hosted sites to experiment with.