Guides
Components

Components

Components are software applications that you can deploy to Node Groups (i.e. groups of devices) via Ferry. Ferry supports all programming languages. For AWS, Ferry deploys your application as a ZIP archive; and for Azure, it is deployed as a Docker image which Ferry builds for you. We will be extending application types for AWS over time.

Ferry handles the versioning, packaging and deployment of Components to your hardware devices utilizing your preferred cloud provider (Greengrass for AWS; IoT Edge Hub for Azure).

Component Versions

Within a Workspace in Ferry, in the “Components” tab you can see all your associated software applications.

Mountains

Ferry versions each Component so that the user has full control to deploy different versions of a component to different groups of devices (i.e. Node Groups). Each Node Group can only have one version of a Component deployed to it at a time.

Building custom applications with Ferry

Ferry is designed to help developers, data scientists & IT teams with their edge projects, from prototyping to deploying to production. When you create or edit a Component Version, Ferry has an inbuilt IDE (integrated development environment) where developers can write scripts and entire applications that they would like to deploy on their devices.

Within the Ferry IDE, users can:

  • Create, edit, delete files: to be able to customise their application. Ferry supports all programming languages

  • Generate code: our GPT integration accelerates development time, especially for users who are less familiar with writing code that runs on hardware devices

  • Save & upload files: users can save their code to be able to return to it later, without having to publish or deploy their application. Additionally, if users have some code in their local IDE, they can bulk upload the application to Ferry.

  • Integrate Git: for users who want a closer integration of Ferry with their existing CI/CD flow, we support a Github integration. Commits to your linked repository’s main branches will create a new Component Version in Ferry.

  • Duplicate a component version: if a component version has been published & can no longer be changed, users can easily duplicate the application into a new component version to be able to modify it.

  • Azure only - build configuration: users can adjust the build configuration of their components (such as build architecture, OS, the number of CPU cores etc)

For AWS:

If you have integrated your AWS account with Ferry, at any time you can find the files for your component version within the S3 bucket pathname:

ws-{3 alphanumeric symbols}-{workspace_name}-comp-artifacts/components/{component_name}/{component_version}/{src}/{file_path}

For Azure:

Similarly, for Azure, we store your component code in a Blob Storage within your provisioned Azure Resource Group. The files can be identified with the pathname:

{workspace_identifier}/components/{component_name}/{component_version}/{src}/{file_path}

Publishing a Component Version

When you are ready to deploy a Component Version, it must be ‘published’, which commits the version on both Ferry and your integrated cloud provider.

When a Component Version is published, Ferry packages the applications files, and prepares all required configurations for deployment for your integrated cloud provider (whether AWS or Azure).

Ferry supports two different means by which your application can be packaged for deployment:

  • Collection of scripts, packaged as a ZIP archive - AWS only

  • Docker - Azure only

For AWS:

If you have integrated your AWS account with Ferry, you can find the distribution packages for your component version within the S3 bucket pathname:

ws-{3 alphanumeric symbols}-{workspace_name}-comp-artifacts/components/{component_name}/{component_version}/{dist}/{file_path}

For Azure:

Azure IoT Edge only supports containerized applications. Ferry containerizes applications you write with Ferry’s IDE into a Docker image automatically before deployment. Containerized applications are stored under the component name and version in the Azure Container Registry which is auto-provisioned for when you create a Workspace in Ferry.

Ferry Marketplace & templates

To help users of Ferry quickly bootstrap their applications, Ferry has a series of templates. They cover core programming languages with the appropriate starter files and code pre-built to allow users to jump straight into writing their application. Additionally, there are more advanced templates which are Ferry maintained designed to help companies solve some of the more common industrial use cases that are applicable in manufacturing.

Mountains

Debugging and testing (Azure only)

One of Ferry’s unique features is the ability to test your application on your device without going through build & deployment steps. Ferry maintains two templates - one for remote access to devices, and one for a local debugger - which users can deploy to the Node they want to test. In the IDE, a user can connect to this Node, providing terminal access within a sandboxed Docker container, and sync their code to a folder where the user can experiment with testing their application.

To find out more, please contact us here (opens in a new tab).