Deploying the Project

AI/ML projects are generally built using scripts or notebooks, well suited for prototyping and simple implementations but lacking Software Development Lifecycle (SDLC) best practices such as unit/integration testing, peer reviews, and a consistent build process. aiSSEMBLE provides a structured approach for designing, developing, deploying, and monitoring AI/ML solutions to standardize delivery and drive consistency and reliability. A key component of this approach is automating the building, testing, and deployment of software through Continuous Integration and Continuous Delivery (CI/CD). The following outlines the deployment and delivery approach in aiSSEMBLE.

Deployment Artifacts

aiSSEMBLE makes your project portable, scalable, and platform-agnostic by using Docker to create “images” which are blueprints for containers. Docker is a software platform designed to help developers build, share, and run modern applications. Docker is used in aiSSEMBLE to create portable software components packaged up for deployment in a containerized environment.

Container orchestration is important for automating deployments. Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications. aiSSEMBLE generates Kubernetes artifacts to ease the management and scalability of your project.

Helm is used in aiSSEMBLE as the package management tool and template engine for Kubernetes. Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes. Helm packages and deploys aiSSEMBLE’s Kubernetes applications while also providing templating services that allows for easy modifications.

Deployment Infrastructure

Local Deployment

aiSSEMBLE’s framework enables rapid development and testing by ensuring local build and deployment processes are fast, alleviating the need for ad-hoc scripts and notebooks. To achieve this, your project needs the ability to be deployed in an environment where it can be easily stood up and torn down locally. In doing so, you ensure when you deploy your project to a higher environment, all the pieces work together cohesively, similar to how they would in production. The two necessary components you require to get to this state is a local Kubernetes environment and a local deployment tool for Kubernetes.

The aiSSEMBLE team promotes the usage of Rancher Desktop for the local Kubernetes environment and management tool. Rancher Desktop is a light-weight, user-friendly tool which comes packaged with critical tools such as Helm, Docker and Kubernetes. By deploying to a real Kubernetes environment, Rancher Desktop allows you to test integration points between the key components of your project.

In order to ease testing in your local Kubernetes environment, there is a need for a simple Continuous Deployment (CD) tool that can deploy your entire project quickly. The aiSSEMBLE team encourages the usage of Tilt as your local CD for Kubernetes. By default, aiSSEMBLE will generate Tilt deployment files to get you started. Tilt can deploy your project (in its entirety or partially) with a single command and provides a user-friendly interface to monitor your container activity and logs. In addition, Tilt keeps the deployment up to date with the latest code changes with very little downtime.

Remote Deployment

Including continuous integration (CI) is a best practice for unit/integration testing and consistent builds. By default, aiSSEMBLE will include starter Jenkins CI pipelines for building, testing, packaging, and deploying your project. Jenkins is an open-source, automation, DevOps tool commonly used for CI.

aiSSEMBLE enables standardized delivery and monitoring to drive consistency and reliability. ArgoCD is a CD tool which deploys and continuously monitors running applications and compares the current, live state against the desired target state. aiSSEMBLE promotes ArgoCD’s "app of apps" pattern in the Helm charts generated for your project.