Distributed Computing to Battle a Distributed Virus
Distributed computing, as we’ve learned at The New Stack over the years, can sometimes be complex and confusing. But working through these challenges pays off in that it means tackling workloads that a single computer just can’t handle.
Take, for instance, the impending job of tracking the COVID-19 virus as it moves across the population. One proposition floated is contact tracing, or tracking the virus through everyone's cell phones. This approach helped quell the spread of coronavirus in Asia. The idea is that if a user comes in contact with someone who has the virus, they will be notified by the phone and can take appropriate precautions, such as staying at home and wearing a mask.
Of course, the idea of tracking from a centralized server has raised privacy and security concerns, so when Google and Apple proposed incorporating Bluetooth-driven tracking software into their respective mobile devices, they included the smart idea of having the phones themselves do the heavy lifting, sending only non-identifiable tokens and timestamps back to whatever is collecting that data.
Through this form of distributed computing, the phones themselves could tell people when they’ve been in contact with a COVID-19 carrier, rather than depending on a centralized server, explained Patrick McFadin, DataStax's chief evangelist for Apache Cassandra, in a recent interview with The New Stack.
Apple and Google's architecture does not involve tracking user locations or identifying data. Instead, each device will create for itself a "beacon" number randomly generated by the phone’s hardware. As the phones come into proximity with others they will all share their beacons, each phone keeping a list of all the other phones it came in contact with.
Someone who contracted the virus would then volunteer this info to the app, which would relay the status to the backend database — the first time a central database is tapped. Even then, it has no personally-identifying information. A database would only periodically send to all the phones a list of infected keys, so to speak, and it would be up the user's phone itself that would check the infected keys against its own list, alerting the owner if they’ve been in contact with a COVID-19 carrier. Distributed computing in action!
A time of crisis always requires innovation to meet new demands, and it’ll be interesting to see how some of the ideas formulated in our own community come to be used in this new era.