The applications that we build for today's world have a lot of requirements. They need to provide the best user experience and to be always up and running. To achieve this in a massive scale you need a multi data center architecture. When we have more than one data centers, even if one of them goes down, the other can handle the traffic and your users will continue to use your application uninterrupted. Also by having datacenters in different locations around the world you can you take advantage of lower latencies and provide a better usability. But to take advantage of all those benefits you need to architect your application in a special way. During the talk we’ll explore the different multi data center configurations and the tradeoff of each one of them. We’ll also go over the ways to do failover and some useful processes to facilitate it better. Moreover, we’ll see how each layer of the application is affected by such architecture, all the way down to the database and the data model. Finally, I’ll share what technologies help Uber to run in multiple data centers and the lessons we learned by doing so.