logo dotConferences

The Case for Cross-Service Joins

Eliot Horowitz at dotScale 2016

Developing a modern application oftern means composing it with several services, many of them third-party. While this offers many benefits, it also traps your data in silos, preventing a holistic view. Eliot presents the cross-service-join: a means of querying across multiple services from a central database.

More details

Modern applications are composed of services, many of them third-party, orchestrated by the increasingly narrow band of behavior unique to any particular application: the business logic. Service-based architecture is faster to develop and more fault-tolerant than the monolithic and N-tiered applications that came before. But as a byproduct, it creates silos of data for each service, preventing a holistic view.

Current solutions to this problem, such as Data Lakes, are either nothing more than punting on the problem or themselves a huge hassle. If all services wrote their data to a single database owned by the application, it would be easy to query across it all, but providing reasonable SLAs under those circumstances seems impossible.

What we need is a cross-service-join, a method whereby a single database can optimize queries between multiple services, caching data where appropriate. Cross-service joins would build on the services that are already in place, and require extending them to support passing the meta-data to allow optimization. Eliot presents a proof-of-concept built on MongoDB’s aggregation framework.