Abstract
The Architecture approaches to building enterprise web applications have evolved to a great extent over the past decade. These approaches, today, are crucial for enterprises that are expected to provide seamless service, with increasing data, at large scale. Application development frameworks use various design patterns are used to break down monolithic applications into modular components. Most use a tiered approach: back-end model store, middle-tier business logic, and a front-end interface. These components are then exposed using a standard communication method - REST APIs. However, with changing business needs of today, services are expected to operate at scale, serve different geographic areas. The services need to have provisions for easy maintenance, make changes on the fly, test, and quick rollout of features to adapt to user demands. Alongside these, there is also a need to have automation tools in place for efficient resource utilization and the underlying hardware. This project is a Platform-as-a-service to enable easy development, maintenance and deployment for modern enterprise applications using micro-service architecture. The core system can be broken down into the following components- frontend service, backend service/ controller, command line interface and a data store. A developer can create a new service (in one of the supported languages). The controller provisions initial project structure, then installs transitive dependencies and provides a unique URL to a Cloud IDE. The developer can use the cloud IDE to develop the business logic for the service, mention dependencies, and test. Once the module is ready, the developer can use the frontend console to build and deploy the service. The controller takes care of building the code, dependencies to be installed inside an isolated environment- Docker container, and provides back the developer with a service URL. The service URL can be used as an API endpoint to trigger the service using REST API requests- GET, POST. This allows the developer to develop loosely-coupled services that can be owned by small, self-contained teams. These services are thus- autonomous, specialized and agile. The infrastructure efficiency is abstracted away by the framework to provide- flexible scaling for each service, resource monitoring, easy re-deployment and resilience to failure.