Canvas Microservices (Beta)

Canvas now offers Microservice capability for its existing functional modules which restructures the monolithic interwoven server-side architecture into independently functioning Microservices. However, by default all requests will continue to follow the existing route (monolith style). Implementation teams have the choice of either using the microservices offered by Canvas or use the default monolithic architecture. When using Canvas’ microservices, all client requests on your application will be distributed to respective individual microservice components to balance the load.

The functional capabilities that are now exposed as independent microservices that can be readily consumed are: 

  1. Metadata service

    The Metadata microservice fetches the metadata of various Canvas components such as view, form, widget etc. Canvas provides two mechanisms for fetching the metadata namely, Java and Node JS. The Java service for fetching the metadata is inevitable whereas the Node JS is an optional one for the implementation teams. The Metadata service internally chooses to invoke a Mongo service or the in-memory cache to fetch the metadata based on the respective mechanisms chosen.

    1. Node JS Metadata Service
      The Node JS metadata service is an event-based model where each service request is processed as an event. The threads for handling each request are passed to event handlers to fetch the metadata from cache. The Node JS metadata service stores, retrieves, and processes data in JSON format, thereby avoids data conversion from JSON to Java objects (Maps) and vice versa.
    2. Java Metadata Service
      The Java metadata service is a thread-based model where each service request is processed as a thread. It loads the metadata from the database for the first time and stores it as an in-memory cache from which it serves the consecutive requests. The storage and retrieval of data involve data processing as it works with the table data directly. When the Node JS service is down, the requests to Node JS are routed to Java service to process them.

  2. Notification service
    The notification microservice is a standalone module that handles all requests to audit and alert events and sends out alerts/notifications to the end users via multiple channels like Email, SMS, Push Notifications and Inbox. These notifications can be sent based on priority viz. high, medium, low. Notification service also comes with a Quartz scheduler that can schedule a specific task to be executed at a specified time.



Refer the following topics for more information