Cradle

Get Started

Overview

Motivations

One of the pillars of ADI’s push to move up the stack is our ability to derive actionable intelligence from raw sensor data by leveraging compute capability on a server/cloud.

Our extensive experience with building edge to cloud solutions over the past years has helped us identify some of the key capabilities of successful implementations, such as flexibility, scalability, robustness, accelerated development cycles and being cloud agnostic. These insights include architectural patterns and techniques, protocol definitions and development/operational best practices developed over multiple iterations and informed by real customer feedback.

Cradle represents a synthesis of these ideas, delivered as a production ready, turn key platform solution. It is aimed at rapid application development, while not compromising the solution’s ability to scale or gracefully handle component failures that are unavoidable in real world scenarios. Critically, the platform is cloud agnostic and can be seamlessly ported across different cloud providers or even to on premises hardware. Target infrastructure sizes can also vary widely, ranging from small deployments running on a single computer to very large deployments using dozens of compute instances in the cloud.

What is Cradle?

Cradle is a production ready, edge to cloud platform that provides a turnkey solution for edge to cloud solutions. It is aimed at rapid application development, while not compromising the solution’s ability to scale or gracefully handle component failures that are unavoidable in real world scenarios. Critically, the platform is cloud agnostic and can be seamlessly ported across different cloud providers or even to on premises hardware.

Cradle encompasses a suite of technologies and services that provide a flexible, scalable and robust foundation for edge to cloud applications, spanning the gamut from the edge gateway to the cloud. These services and technologies work together to deliver an easy to use system for development teams.

  • Cradle Cluster: A cloud agnostic application platform for the server/cloud component of an edge to cloud application. It serves as a robust and elastic foundation on which applications can be developed by composing multiple containerized microservices.

  • Cradle Edge: A gateway component that serves as a bridge between edge sensors or low power sensor networks (SmartMesh®, BLE, etc.) and the cloud. It is provided as a software component that can be installed on a range of hardware devices and is optimized for secure communication with a Cradle Cluster.

  • Cradle Core Services: A set of centralized services that allow easy setup, management and configuration of Cradle Cluster and Edge components. This includes an encrypted store for securely storing and managing secrets associated with the clusters, and a set of APIs around which custom UIs may be developed.

  • Cradle Store: A centralized store of Cradle components that can be readily used when composing applications on the Cluster or Edge. Development teams are free to use the components available here, and to make their own contributions for other teams to use.

Cradle Cluster

This is the server-side component of Cradle and provides a foundation on which server/cloud applications can be built. Applications developed on Cradle Clusters are cloud agnostic and can be installed/redeployed on a variety of different infrastructures including on premises and public clouds. A Cradle Cluster is both elastic and self-healing, which means that it can:

  1. Automatically expand or contract to use the resources made available to it, allowing the platform to scale up or down as necessary

  2. Detect failures and heal the system – application crashes and infrastructure failures – by automatically restarting crashing components or rescheduling workloads from unhealthy to healthy resources.

Applications can be developed on Cradle Clusters by composing individual components (or microservices) that can be upgraded or patched remotely. These components are language agnostic, and are packaged as containers and can be deployed and scaled independently. Development templates, tooling and best practices are available to enable quick and easy development Cradle components.

A novel feature of the cluster is the Data Processing Pipeline – a reliable and robust pipeline for processing data packets as it enters and flows through the system. Developers can configure pipelines with multiple stages, where each node transforms/augments data before passing it on to the next stage. A pipeline may be constructed by using existing components from the Cradle Store, or by developing custom components as dictated by project needs.

Cradle Edge

This is a gateway component that is designed to integrate directly with sensors or with low power sensor networks such as a SmartMesh®.

The primary function of the Cradle Edge is to ingest sensor data and securely publish it to a Cradle Cluster, but the Edge component also supports a Data Processing Pipeline that can perform additional processing on the data, ranging from minor data transformations to complex operations such as anomaly detection.

Using Cradle components that are designed to run on both the Cluster and the Edge, developers have the flexibility to shift processing from the Cradle Cluster to Cradle Edge and vice versa. This opens up a range of possibilities for application deployments to suit different customer needs and project constraints.

Cradle Edge is provided as a software component that can be installed on a range of hardware devices and is optimized for secure communication with a Cradle Cluster. Components for integration with common low power networks such as SmartMesh® will be available out of the box, while developers can build integrations to other sensors and networks.

Cradle Core Services

This is a centralized, cloud only service that powers the creation and management of Cradle Clusters and Cradle Edge gateways. It includes a set of APIs and secret management services that allow teams that work on Cradle to quickly, easily and securely create Cradle Clusters or Cradle Edges and deploy applications on them.

Typically, a single instance of Cradle Core Services will manage multiple cluster deployments, but it is possible to create multiple instances of the Cradle Core Services. For example, a business unit may decide to create a dedicated instance of Cradle Core Services for every cluster operated by them.

These APIs can be used by Cradle administrators to:

  • Register new clusters

  • Manage secret information for a cluster with knox

  • Define and manage the Cluster Software Manifest, including the Data Processing Pipeline

For a deeper understanding of Cradle Core Services, please review the Cradle Core Services Architecture.

Cradle Store

This is a central repository for all available Cradle components. The store includes a curated list of ready to use components that may be configured and deployed on to an existing cluster. Some of these components have been authored inside ADI and many others are public/open source. The Cradle team will continue to add to this list, and we encourage development teams to contribute to this store as they work on individual projects.

In addition to being an internal service for Cradle developers, the Cradle Store can be used to monetize ADIs IP by licensing certain Cradle components, for example - components for data analytics and anomaly detection - to end customers.

The use of a Cradle Store has a other benefits that we are currently not taking advantage of, but plan to do so in the future. For example, the Store could include an automatic vulnerability scanning capability for container images, and/or a license manifest generation for every component that has been published to the store. These capabilities will enable teams to go from development to production rapidly, providing added layers of security, and automating laborious and time consuming tasks. For more information, please see the Cradle roadmap