Today, organizations rely on their enterprise software applications to carry out business functions more efficiently. However a disconnected heap of independent software applications can cause more problems than they solve. In order to make the most out of enterprise software deployments, they should be integrated to work together in perfect synchronicity. Though it seems simple enough, connecting a myriad of diverse applications with their different programming languages, platforms, data formats, protocols, and QoS requirements can be an architect's worst nightmare.