Features and Benefits

How can xpresso.ai help me?

xpresso.ai has a number of features aimed at standardizing and accelerating delivery of Analytics solutions. Some of these are listed in Table 1, along with the intended benefits to the development team.




Development Environment

Development environment available out of the box as a development VM within the xpresso.ai infrastructure, with all functionality accessed using a Jupyter Notebook

Developer time not wasted in infra setup High-end machines (extra RAM, GPU, etc.) available if required - no need for tedious procurement process or involvement of IT department

Appropriate and automatic linking to tools like code repositories (e.g., GitLab, Bitbucket), build pipelines (e.g., Jenkins) and containers (e.g., Docker)

Solutions are created automatically in these tools, thus saving time as well

Integration with JupyterHub

Each developer gets access to a private workspace, as well as shared solution workspace

Deployment Environment

Separate environments available out of the box for Dev, QA, PROD, etc.

Enables easy setup and deployment to different environments - project managers can select relevant environments at the time of solution creation, which are then created automatically. This enables standardization of deployment environments, avoiding the usual issues associated with setting up multiple environments Automatic enforcement of deployment rules (software cannot be deployed to a “higher” environment without having been deployed and tested in all “lower” environments

Out-of-the-box support for Kubernetes, Kubeflow and Spark

Kubernetes - deploy highly available services Kubeflow - run and compare ML/DL experiments Spark - Big Data Analytics Installation and configuration complexity is hidden from the developers. Relevant information is available through integrated dashboards

Software Architecture

Architecture of xpresso.ai solutions is defined in terms of re-usable components, which follow pre-defined design patterns. Specifically, for Analytics solutions, the patterns of “Training Pipelines” and “Inference Services” are integral to the architecture

Software architects and Project Managers are forced to think in terms of design patterns and re-usable components. In time, a library of such re-usable components is created, which further aids in accelerating development

As a result of standardized architecture, code is also organized in a standard manner, with standard folder names, etc.

Standard code organization enables easy documentation and knowledge transfer to clients and/or new team members

Software Development

Data Connectivity libraries to enable data fetch from disparate sources

Developers can make use of standard mechanisms to fetch data from sources as diverse as databases, file systems, SFTP sites, S3 buckets, etc.

Data Exploration libraries to explore and clean data, and provide guidelines on choice of independent variables for analytics solutions

Python libraries available to categorize data attributes Perform uni-variate and bi-variate analyses of structured data Perform various analyses on unstructured data (Bag Of Words, etc.) Clean data using standard techniques Analyze independent variables with respect to a target variable, thus enabling data scientists to hone in on the correct attributes for analysis Most exploration functions are supported on Spark clusters as well, thus enabling big data exploration

Data Visualization libraries to visualize exploration results

Visualize exploration results using standard graphing packages Export visualization results into well-formatted PDF reports

Data Versioning libraries to maintain data versions

Developers can manage data versions using a versioning system, similar to managing code versions in Bitbucket. Versions of data can be pushed, pulled, listed and compared

Jupyter notebook integration

Developers can convert a Jupyter notebook into an xpresso.ai solution with the push of a button using the Xpresso Jupyter Plugin

Analytics Pipelines

Data Scientists can run experimental pipelines for testing data models, compare results of experiments, pause / restart experiments, etc. Analytics pipelines can be run on both Spark and Kubeflow clusters, with no change in the build and deployment process.

Marketplace components

The xpresso.ai Marketplace provides ready-to-use components for a variety of tasks, saving developers hours of effort

Software Build

Automated DevOps is integral to the build process. Code is checked out of a versioning system (Bitbucket / GitLab) and run through a DevOps pipeline (Jenkins), finally resulting in the creation of Docker images for each component of the software

The build process is available out of the box, and requires minimal code changes on the part of the developer. Thus, each solution gets industry-standard best practices for the DevOps process with minimal effort Unit testing is part of the build process, with unit test reports available after each build

Software Deployment

Automated Deployment is part of the process - binaries get deployed to a Highly Available environment (Kubernetes cluster) at the click of a button

Use of Docker images ensures deployment without software compatibility issues Use of Kubernetes guarantees a high availability environment with easy scale out to ensure high performance

Inference Services and A/B Testing

Several versions of a model can be deployed for A/B Testing. Specifically for analytics solutions, multiple versions of trained models can be selected and automatically deployed as inference services, with A/B testing automatically supported.


Post-deployment monitoring is supported through advanced tools like Elastic Search and Kibana . xpresso.ai includes logging libraries for developers, which enforce common logging standards

Standardized logging standards enforced Dashboards available out of the box to monitor logs, using the ELK (ElasticSearch-LogStash-Kibana) stack Software performance can be monitored through the Kubernetes dashboard, and scaled up / down easily.

Table 1: Benefits of using xpresso.ai IDDME

What do you want to do next?