Enterprises increasingly need to develop distributed systems in an agile manner, with minimal perturbation to end users and at lower costs. This paper discusses architectural design options and principles to address integration challenges. It includes a comprehensive table for evaluating relevant technologies.