Services
Definitions
Service is a fundamental concept in Mosaic, as it is built using a microservice architecture. Each service is designed to perform a specific task or a set of related tasks and runs as a separate process. Here are some key characteristics of a Mosaic service:
- Independence: Services operate independently of one another. They can be developed, deployed, and scaled independently.
- Single Responsibility: Each service is responsible for a specific business capability or function, following the principle of single responsibility.
- Communication: Services communicate with each other via well-defined APIs, usually GraphQL for synchronous calls and RabbitMQ messages for asyncrhonous communication (but also other APIs can be supported).
- Encapsulation: Each service encapsulates its own data and logic, ensuring that the implementation details are hidden from other services.
- Resilience: Services are designed to handle failures gracefully, including mechanisms for retrying operations, fallback strategies, and monitoring.
- Scalability: Services can be scaled independently based on their specific needs, allowing for more efficient use of resources.
- Technology Agnostic: Each service can be built using different technologies and languages, as long as they adhere to the agreed-upon communication protocols. Mosaic-own services are built using a specific technology stack (NodeJs, TypeScript, GraphQL, PostgreSQL, etc.), but other services can use other stacks, e.g. Microsoft .NET.
- Autonomy: Services can be developed by different teams (even companies), enabling parallel development and continuous deployment.
Types of Services
Based on who owns and manages the services, we can distinguish between three types of services in Mosaic:
- Managed Services
- Customizable Services
- 3rd Party Services
Service Types in Mosaic
Managed Services
- are provided and operated by Axinom
- are backed by robust SLAs
- provide out of the box integration with other Axinom Mosaic Services.
Examples: Image Service, Localization Service, DRM Service.
Core Services are such managed services that are necessary for Mosaic Platform to operate, such as orchestration, identity, authentication, authorization, reporting.
Customizable Services
- are provided by Axinom in source code under an open-source license (see Mosaic Media Template)
- can be used as-is or with individual customization
- use Mosaic libraries to simplify development
- can be deployed anywhere depending on the customer’s choice
- can be hosted by Axinom using Mosaic Hosting Service.
Examples: Media Service, Catalog Service, Channel Service.
A custom service is a result of a customizations made to a customizable service, or a service built from scratch using Mosaic tools and technologies.
3rd Party Services
3rd Party Services are those:
- not built on the Axinom Mosaic Service Stack
- provided and operated by Customer or 3rd-party vendor.
Such services can be integrated into Mosaic landscape using its defined APIs.
- Mosaic can consume 3rd party services using their APIs
- 3rd party services can consume Mosaic services using either GraphQL API or event-based communication using RabbitMQ.
- Service Accounts can be used to authenticate 3rd party services with Mosaic.
Management and Provisioning Services
Mosaic is especially strong in building OTT / Video Portal solutions. Based on a stereotypical architecture of such solutions, we can distinguish the (content) Management side and the (content) Provisioning side.
Management and Provisioning Services
Management side
Typical properties of the management services:
- Management side for editors and other content preparation processes
- Unified UI
- Complex workflows
- Publication step for verifying business rules
Examples: Media Service, Channel Service, Video Service.
Services on the management side usually provide their UI in form of a microfrontend integrated into the Mosaic Management System. This ensures:
- Consistency of the UI
- Centralized user and permissions management
- Low deployment efforts
- Reuse of the frontend components exposed by other services.
Provisioning side
Typical properties of the provisioning services:
- Provisioning side for End-User clients
- Frontend-facing
- Optimized data storage
- Prepared for high load; behind CDN
Examples: Catalog Service, Entitlement Service, User Service.
While Axinom Mosaic focuses on the development of backend applications, services and processes, ultimately the services provided by the backend are consumed by end-users through frontend applications. Axinom Mosaic is unopinionated about the frontend technologies, concepts or user experiences used to develop the end-user facing applications. Still, we developed a Frontend Samples application that demonstrates how a frontend can interact with Mosaic services. It is meant to showcase the capabilities of Mosaic and to provide a starting point for frontend developers but can also be used to test out your backend services without the need of an actual frontend.
Frontend and Backend
Mosaic services typically consist of two parts: frontend and backend.
A backend is responsible for processing data, performing business logic, and interacting with databases and other services. It exposes APIs that can be consumed by other services or frontend applications. Mosaic services are using Node.js, TypeScript, GraphQL, PostgreSQL, and Postgraphile for the backend, but custom services can use any technology stack.
A frontend is responsible for presenting data to the user and handling user interactions. It consumes APIs exposed by the backend services.
In Mosaic, the provisioning services don’t have a frontend, as they are consumed by the frontend applications developed by the customer or 3rd-party vendors. Frontend Samples can be used to see the intendent usage of the Mosaic services in a frontend application.
The management services have their frontend integrated into the Mosaic Management System using microfrontends. Mosaic microfrontends are using React, TypeScript, and Piral. Customers' frontends shall use the same stack to integrate to run inside the Management System. If the Management System integration is not needed, any frontend technology can be used to consume Mosaic services.
The Management services have their frontend integrated into the Mosaic Management System.
Industry-specific services
While most of the services in Mosaic are targetting Media-scenarios, such as OTT/Video Portals, some services are developed specifically for aerospace to support solutions like In-Flight Entertainment (IFE), Over-The-Air (OTA) updates, Connectivity Portals, etc.
See: Aerospace Services.