Best practices to extend business critical traditional language applications on distributed platforms to cloud and mobile