Uber Using Driver Phones as a Backup Datacenter
highscalability.com
highscalability.com
I hadn't updated in a week or two, just out of laziness to not check for updates everyday. So it's possible I had missed more than one update that caused the issue.
All it needs to do is take you back to where you started from based on where it last dropped you off.
That also has the advantage of not requiring invasive app permissions.
Backwards Compatible: In a world of deployed native mobile applications with no forced upgrades, backwards compatibility is a challenge. Facebook, for example, releases apps on a two week fixed cycle and pledges to maintain those apps for at least two years. This means there are at a minimum 52 versions of our clients per platform querying our servers at any given time. Client-specified queries simplifies managing our backwards compatibility guarantees.
via https://facebook.github.io/react/blog/2015/05/01/graphql-int...
I didn't know they had such a liberal backwards compatibility policy until I saw this GraphQL talk, which is a pretty interesting overview of why / how they do it: https://www.youtube.com/watch?v=WQLzZf34FJ8.
Makes me wonder how much money / how many users Uber loses by not supporting older versions.
https://toucharcade.com/2015/09/23/bioshock-removal-2k-suppo...
But tools and equipment are commonly specified (even down to a specific tool model for insurance requirements or material brand for warranty requirements) as part of contracted labor.
If I hire someone to cut down a tree on contract, I can't dictate their tool of choice - only that it complies with what's necessary to complete the work.
There are plenty of fair criticisms of Uber. This isn't one.
The latest version of the app supports Android 4.0.3 and up, as well as iOS 7 and up.
>with tons of space
The iOS app is 59MB. In 2015, you're claiming it's unreasonable to ask for a few megabytes? What? 8GB flash drives were party favors 5 years ago.
I wonder if Uber realizes in the uk they will be on the hook if they employ those with out the right to work.
I think these ride sharing apps also report giving you money as required by law, and you have to put in such info as an SSN in the USA so they can do background checks. I'm pretty sure they also do background checks in the UK and part of that will be your immigration status. It's just they are efficient and automated in doing so, so it seems like they don't check anything because of the speed.
P.S. I know that they claim that their drivers are not employees but if it walks like an employee and talks like an employee it's an employee.
What job lets you work with competitors while you are working?
Full-time employees are subject to using specified equipment by the employer.
Contractors can choose but it doesn't mean they can choose tools that don't do the job. If part f the job is storing backup data on a phone the tool needs to be a phone capable of storing backup data.
API's, etc. change or break completely all the time. Often it is simply a trade-off between acquiring new, perhaps more affluent users, and loosing those with less money to spend and cheaper phones.
The morality behind this is questionable off course.
If they ran the numbers and the cost was greater than the reward why would they both maintaining backward compatibility?
oh but young people are idiots. That's right. Back to waterfall guys.I'll stand up the new CVS server.
https://news.ycombinator.com/item?id=10446977
> It's very hard to maintain compatibility for different versions of mobile operating systems.
Except it's not. It requires thought, but the reality is, they aren't trying to maintain compatibility, they are merely saying "Nope, you have to have the latest and greatest or it won't work" regardless of whether it would work or not.
If anything, this demonstrates that Uber itself is not concerned with quality. Considering my experiences with Uber in the past, this is not surprising.
> In the background the Replication Service encrypts the data and sends it to the Messaging Service.
> The Messenger Service sends the backup to the phone.
As long as the phone can't ever read the encrypted data this is probably secure, but shifting costs onto the driver through using their bandwidth to store encrypted backup blobs seems unethical. The uber app on the phone isn't using this data to the benefit of the user, it can't as it is encrypted.
I don't think you should use a person's device for anything other than serving that person. This is the kind of thing though I would totally expect from Uber. Based on what the media has reported in the past, the whole company's culture seems toxic and dishonest from top to bottom.
Now, if Uber were offering a free 'lol cats apps' on the app store that surreptitiously ran this protocol in the background of unsuspecting users I think it would be a different case, but running technology that supports the goal of the main app doesn't feel out of bounds to me.
I might have missed something to the contrary, but to me the article only describes how they use a drivers phone to store information about the trips he is making. Which the phone is involved in anyways.
Similar to storing stuff in the session cookie of a web app.
If you don't, networking failure scenarios will destroy your user experience since you'll end up with frequent irreconcilable data gaps with cellular networking being what it is.
A famous example is Skype: they were able to set up a global VoIP system with very little capital, by making it a peer-to-peer application rather than requiring a central server to route all calls. So your computer was used to forward unrelated calls, but that's generally fine, the burden on each individual user is low.
In the Skype case, there were tons of computers out there, owned by individuals but mostly idle, and Skype managed to use them more productively--that is a win for everybody. With mobile phones it might be a bit different because the bandwidth is limited, but still, people can see how much data the uber app is using, and decide whether it is worth the benefit to use it to hail uber cars or not.
Why choose this approach? The traditional approach would be much simpler. I
think it is to make sure the customer always has a good
customer experience and losing trip information for an
active trip would make for a horrible customer experience.
By building their syncing strategy around the phone, even thought it's
complicated and takes a lot work, Uber is able to preserve trip data and make
for a seamless customer experience even on datacenter
failures.
If the phone can't unencrypt it, it can't take advantage of the data if the datacenter goes down surely?edit: p.s. dang if you read this, please can we get a way to do quotes with automatic text-wrapping >:
It's not the person's device. Uber requires all drivers to have a separate phone just for Uber usage. I had always assumed it was so that drivers wouldn't hit on passengers by calling them after dropping off. The distributed data backup seems like another advantage.
To my knowledge, Uber relays calls between drivers and passengers through its own phone network, which effectively anonymizes each end.
For example, an Uber driver once called me, and then my phone lost service. I tried to call back with a friend's phone, and an automated Uber message said that there were no active rides associated with my friend's number.
For example, a Lyft driver mentioned to me they had an Uber recruiter in their car the other day. The person was pushy, insistent and distracting, which motivated this driver's loyalty to Lyft and gave me a subtle, mental "-1" for Uber.
The concept is obviously sound, but that doesn't make the companies driving it immune to failure.
The so called "safe rides" fee is another example of Uber dishonesty. The percentage of the fare that goes to Uber w/o having to actually say they are changing the split has gone way up. That was set initially at $1 and it looks like it is up to around $1.50 now. This is in addition to the 20% cut Uber takes off the top of the actual fare.
So simple yet could be overlooked. Great read overall.
Couchbase Mobile is native on iOS, Android, and C#, and compatible with PouchDB and Apache CouchDB. http://developer.couchbase.com/mobile
Here is an example of how General Electric is using our open source platform to power the Internet of things. http://www.couchbase.com/nosql-resources/presentations/offli...
[edit] we've been able to do this, funded by the success of Couchbase Server. Which looks like a high-performance NoSQL database, not an offline mobile database, but it uses many of the same data structures.
Aside: This is why I love HN. Thanks for all of your hard work.
There are also other models, sharding individual databases per user or some other application logic. There are definitely some use cases we dont handle amazingly right now, but its all heavily being worked on.
Their explanation leaves me wanting more. If the phone is compromised, surely the encryption process might also be compromised.
https://en.wikipedia.org/wiki/Conflict-free_replicated_data_...
"A network architecture that uses one or more end-user clients or near-user edge devices to carry out a substantial amount of storage (rather than stored primarily in cloud data centers), communication (rather than routed over backbone networks), and control, configuration, measurement and management (rather than controlled primarily by network gateways such as those in the LTE core)."
An example would be the rider seeing the position of the car they have hailed - P2P would save DC bandwidth without having the devices spend more.
I skimmed through the youtube preso and saw nothing about results observed in production, either through actual DC outages, or chaos monkey, or game days.
Seems highly overwrought architecture astronaut'ing and also very difficult to get any telemetry on how well/if it works, to me.
From http://www.nytimes.com/2011/01/09/business/09digi.html?_r=0: "A home user’s Internet connection, with a laptop using Wi-Fi, would be available about 99.8 percent of the time, estimates Mr. Hölzle at Google, which equates to about 18 hours of cumulative downtime a year."
So yeah, two nines.
Also, here's the results of me pinging google.com from the network of my "large technology company" who employees me.
652 packets transmitted, 646 packets received, 0.9% packet loss.
Two nines.
I'm looking forward to the day when this "fat client" strategy will have lead to a "decentralized Uber" (based on open-source technology, etc.).
Further, as the article describes, this may actually be more reliable than separate backup data centers.
And even when I was out of work for a while-I've got a car that would be perfect for Uber Select, I refused to drive for them because their business practice makes it abundantly clear they do not care about you as a driver. You're a means to an end, no matter the cost.