Microservice architecture, or simply microservices, is a distinctive method of developing software applications as a suite of independently deployable, small , modular services in which each service runs a unique process and communicates through a well-defined, lightweight mechanism to serve a business goal. Thanks to its scalability, this architectural method is considered particularly ideal when you have to enable support for a range of platforms and devices-spanning web, mobile, Internet of Things(IOT), and wearables—or simply when you’re not sure what kind of devices you’ll need to support in an increasingly cloudy future.Most of the micro services communicates with each other using REST(Representational State Transfer) with JSON or Protocol Buf as data exchange format.
Microservices are opposite to monotholic architecture style which is build upon a single autonomous unit . In a client-server model based architecture,he server-side application is a monolith that handles the HTTP requests, executes logic, and retrieves/updates the data in the underlying database. One of the main problem with architecture is that any change in the application are tied to one another . A small change applied to a small section of the application might require building and deploying an entirely new version.If we want to scale up specific functions of an application ,we have to scale the entire application instead of just desired components .
While designing microservices based architecture a monothilic application is broken down into multiple microservices .One of the main problem is maintaining data consistency within these services as these services are in distributed environment.Most of the people working on microservices agrees that it should implement the Single Responsibility Principle(SPR) so that it can manage its own transaction.
A monolithic application consists of multiple libraries in a single process which makes it difficult to change any components separately in the service .But if the same application is decoupled into multiple services ,any change to a single service will affect only that service.
It is the coordination and arrangement of multiple services exposed as a single aggregate service. It is the combination of service interactions to create higher-level business services, and is used to support the automation of business processes by loosely coupling services across different applications. This model relies on a central controller to couple services.
All components will be implemented as service in the platforms that will be developed in the future.Service Orchestration is implemented as a way to interact with various services in the platform to provide a business function. To implement an application based on microservices ,we need to create a microservice which will act a gateway call back-end services .Response obtained from various back-end services are aggregrated and send back to the original consumer of this service.
(Microservice E contains the orchestration logic to invoke services A and C to complete a business function. Microservices E, along with A and C would be independently scalable.)
Mobile Backend as a Services(MBaaS)
It is the way to link mobile applications to backend cloud storage and APIs exposed by back-end applications while also providing features such as user management, push notifications, and integration with social networking services. Futuristic Platform is envisioned to host applications that serve both Web and Mobile users. It is therefore necessary to build a scalable backend mobile services framework which provides the following advantages,
- It provides unified and enhanced user experience for the mobile users.
- It simplifies the discovery and interfacing with various applications and provide the necessary feature set for mobile users.
- It minimizes the impact of data source schema changes in mobile clients
- It consistently represent data on the client side, independent of the underlying data source (RDBMS, NoSQL, web services etc)
- It optimizes data including images and videos for mobile apps
- It includes mobile app specific business logic
- It implement push, email and other notifications
- It merge data from multiple data sources
- It future proof mobile apps by de-coupling logic and presentation layers
API Gateway for Web, Mobile and Third Party Integrations
The granularity of APIs provided by microservices is often different than what a client needs. Microservices typically provide fine-grained APIs, which means that clients need to interact with multiple services. Different clients need different data. For example, the desktop browser version of a product details page desktop is typically more elaborate then the mobile version. Since the Futuristic Platform is envisioned to implement a Cloud-Native Microservices Framework, it is therefore essential that a API Gateway is provided to insulate the Clients from how application is partitioned into microservices. The API gateway will be a single entry point for clients.