LinkORB Engineering
DevOps tools automate various aspects of the software development and delivery process, such as code testing, deployment, monitoring, and administration. These technologies can help open source developers simplify their workflows, reduce errors and downtime, and improve overall product quality.
One of the greatest advantages of using DevOps tools in open source is the ability to quickly iterate and improve software based on feedback from the community. DevOps tools allow developers to deploy updates and new features rapidly while also ensuring that the software remains stable and secure.
LinkORB has been actively involved in the open source community for over a decade. We’ve been able to both benefit from and contribute to the community by creating and maintaining multiple open source projects and DevOps tools that we use to manage our own internal software development projects.
Here are some of our most popularly used DevOps tools and repositories.
Infra is an infrastructure-as-code (IaC) tool used to easily define and deploy objects to GraphQL services. At LinkORB, we make use of Infra to manage over 70 servers. This tool has been a game-changer for us, as it has allowed us to automate the deployment and management of our infrastructure, resulting in more efficient workflows and reduced downtime.
With Infra, we can define our infrastructure as code, which means that it is version-controlled, easily replicated, and can be deployed quickly and consistently. We continue to use and develop Infra internally while also sharing it with the open source community for others to benefit from its features.
Envoi is a library that we developed at LinkORB to streamline and automate common DevOps tasks, such as deploying code or running unit tests.
Developers can make sure a project or repository defines necessary or mandatory environment variables by using Envoi. You can check the validity of an environment variable provided in the .env file during the setup or life cycle of a project. Example: APP_ENV
and DATABASE_URL
.
It is primarily designed to work with the Symfony PHP framework, but it can be used with any PHP project. As it can be extensively customized, developers can define their own unique commands and scripts. Envoi is a great option for developers wishing to automate their workflows because it is simple to set up and utilize.
This is a Function-as-a-Service (FaaS) framework for building, calling, and testing reusable, stateless, and language-agnostic functions, also known as Exo Actions. The name is derived from the idea of improving an app with new functions external to the app itself, like an exoskeleton. These functions can be used as workers to accept a payload, perform a single job, and provide an output.
Exo can be hosted on an HTTP server accepting payloads that include the named target action. Alternatively, you can create dedicated worker instances using Nats and Camunda.
This library provides a collection of pre-built Exo Actions that can be used to perform common tasks in a serverless environment. These actions include sending emails, processing images, and interacting with databases.
These actions are designed to be modular and extensible, enabling developers to easily add new actions and customize existing ones.
This package allows Lua scripting support for PHP applications. The LuaSandbox class is particularly used for running the user-supplied Lua scripts securely. It runs Lua scripts safely in an isolated sandbox environment. The sandbox environment restricts access to dangerous functions, such as those related to file and network I/O, by default.
The data-router library is a tool that routes data according to nested routing rules. It has various use cases, including advanced alert/support routing, Q/A routing, self-service, and on-call scheduling. Each route is identified by a name, expression for matching, and optionally, child routes and output data. The routing expressions are evaluated hierarchically using the Symfony Expression Language Component, which allows for highly complex routing rules.
It is also possible to customize the routing expressions by passing in a custom “ExpressionLanguage” instance, which enables the use of custom functions to enrich the routing expressions.
This library is used for building in-memory graphs. It is designed to be easy to use and flexible, allowing developers to create complex graphs and visualize data in a variety of ways.
At LinkORB, we use graph to power Infra, our infrastructure-as-code service for GraphQL. This package enables you to write GraphQL queries, easily write CLI scripts that operate against your graph, and define your own loaders (i.e., load from YAML, JSON, Markdown, etc).
Graph can also be used to model your organization and complex documentation projects.