How it works
Omnistrate is a complete SaaS platform that allows you to build your SaaS in minutes, generates your control plane for you and your customers to access your SaaS and finally provides you with the management portal to operate your SaaS.
-
Build: If you are a new user trying to build your SaaS, start with the Build portal to build your SaaS. The build portal will convert your docker image into SaaS which can be accessed from the Access portal on release. More details, here
-
Access: If you are here to access one of your own existing services, please use the Access portal of the corresponding service to access your SaaS. More details, here
-
Operate: If you are here to operate one of the existing services that you have already built, please access the Operate portal to manage your SaaS. Operate portal is mainly used for day-2 operations by your devops/secops/finops teams from learning about the fleet health, exploring your inventory, patching the fleet, to getting visibility and insights into fleet. You can also evolve your service from tuning the customer experience, upgrading infrastructure, test your changes in a sandbox environment, and so on. More details, here
Build
Your SaaS is a collection of 1 or more service components. Each service component (also referred as resource) is a unit of functionality that can be run independently.
You can think of service component as a microservice with an optional image or infrastructure or configuration attached. To learn more about service component and what it entails, please see this page.
We provide multiple ways for you to build your SaaS. In the following section, we will go over each of those mechanism:
- You can bring your own compose specification, see here
- You can start from scratch on our API/CLI/UI, see here
Creating service from templates
If you already have a compose specification, you can directly import your specification into the platform and we will parse the specification to build an equivalent experience for your SaaS. To set it up using compose, please see this
Note that compose specification is just a way to quickly get started and is not a requirement to use the platform. You are welcome to use Omnistrate APIs/CLI/UI directly as well to build your SaaS. Once imported, you can review your SaaS on the Access portal.
If you are happy with your SaaS, you can show it to your customers otherwise you can continue to iterate through your SaaS and Omnistrate will automatically manage all of your SaaS versions.
Note
We have provided compose specification for some of the most common open source technologies. Feel free to leverage them or use them as examples to build your own.
If you need help with the compose specification for one of the open-source softwares, please send an email to support@omnistrate.com
Example
We will use a hello world example using MySQL. Here is a sample compose specification for reference:
version: '3'
services:
db:
image: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_password_here
MYSQL_DATABASE: your_database_name_here
MYSQL_USER: your_username_here
MYSQL_PASSWORD: your_password_here
volumes:
- ./data:/var/lib/mysql
ports:
- '3306:3306'
Create new service from Omnistrate API/CLI/UI
If you don’t have compose specification for your project or do not prefer to use that, you can directly use our UI to build your SaaS service by defining service plan, service components, images, infra, integrations and releasing them. Please see this page for more reference.
You can then view your SaaS on the Access portal. If you are happy with it, we also allow you to make your SaaS public with just 1-click and have your customers directly consume your SaaS from your own custom domain. If you want to make it live on cloud marketplaces as well, please follow this
Alternatively, you can also use our API or CLI to achieve the same if you prefer a programmatic way.
- For Omnistrate CLI, please see CLI Reference
- For Omnistrate API, please see API-Reference
Access
After you have built your SaaS, Omnistrate will automatically build your control plane and start hosting it across clouds and regions.
Access portal is an interface (API/CLI/UI) to your custom control plane for your SaaS built and hosted by Omnistrate. It allows your customers to provision, scale, view resources along with other management operations. Omnistrate generates API/CLI/UI for your customers to talk to your control plane.
Note
Please note that for all the data access, your customers' directly interact with the software running in your account (Hosted mode) or in your customers' account (BYOA mode) unless Omnistrate Hosted mode is explicitly chosen to deploy in Omnistrate's account.
Note
By default, it can only be accessed by your account and to allow customers to use your SaaS, you will have to either:
- mark your service public to make it available directly from the Omnistrate portal. Of course, you can bring your own custom domain and custom UI if you prefer
- keep the service private and wrap up your control plane interfaces to build your own experiences on top
UI
Here is a UI generated for a demo MySQL SaaS mentioned here built with Omnistrate:
CLI
Here is a CLI generated for a demo MySQL SaaS mentioned here built with Omnistrate:
kamal@kamal-Precision-T3610:$ ./mysql-saas-cli --help
./mysql-saas-cli is a command line client for the mysql-byoa API.
Usage:
./mysql-saas-cli [-host HOST][-url URL][-timeout SECONDS][-verbose|-v] SERVICE ENDPOINT [flags]
-host HOST: server host (default). valid values: default
-url URL: specify service URL overriding host URL (http://localhost:8080)
-timeout: maximum number of seconds to wait for response (30)
-verbose|-v: print request and response details (false)
Commands:
user-api signin
delivery-model-byoa-dedicated-tier-db (create|delete|describe|failover|list|restart|start|stop|update)
delivery-model-omnistrate-hosted-dedicated-tier-db (create|delete|describe|failover|list|restart|start|stop|update)
Additional help:
./mysql-saas-cli SERVICE [ENDPOINT] --help
Example:
./mysql-saas-cli user-api signin --username "Magni consectetur omnis voluptatem sit." --password "Sed nulla."
./mysql-saas-cli delivery-model-byoa-dedicated-tier-db create --body '{
"cloud_provider": "Voluptas error ad inventore quo.",
"region": "Autem fuga.",
"requestParams": {
"cloud_provider_account_config_id": "Dignissimos delectus eligendi nulla.",
"mysqlDatabase": "Ducimus tenetur reiciendis eos ut.",
"mysqlPassword": "Architecto qui at assumenda id dolores.",
"mysqlRootPassword": "Pariatur expedita dicta aut magnam.",
"mysqlUser": "Optio aut qui vitae debitis."
}
}' --token "Possimus excepturi eos qui."
./mysql-saas-cli delivery-model-omnistrate-hosted-dedicated-tier-db create --body '{
"cloud_provider": "Eligendi ex odit doloremque eos distinctio.",
"region": "Non qui quia suscipit non.",
"requestParams": {
"mysqlDatabase": "Et corporis quia aperiam.",
"mysqlPassword": "Ut sit rem.",
"mysqlRootPassword": "Quia voluptatem.",
"mysqlUser": "Fuga doloribus dolorum sit autem occaecati ut."
}
}' --token "Molestiae velit et."
To use the above CLI, run the signin command to get the token:
kamal@kamal-Precision-T3610:$ ./mysql-saas-cli user-api signin --username "foo" --password "strongpassword"
{
"Token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTIwMDM5MzYsImlhdCI6MTY5MTkxNzUzNiwiaXNzIjoib21uaXN0cmF0ZS5jb20iLCJsYXN0TG9nb3V0Q291bnRlciI6Niwicm9sZSI6InJvb3QiLCJ0b2tlbklEIjoiZTE3Y2FmOTktZjBjNi00YmM3LWJkZTQtNjNmZTM2ZjU2OTYxIiwidXNlcklEIjoidXNlci0xOFpaRDZKQnJTIn0.4jOYLqCLNYB6MF51GjiXa-GJdd6HSZVC9HSqMh3C9nFi8U0KXXUeFNtRO8RzLLtYYOpv0iRr5LDD5ucbygZ7DQ"
}
You can then use the token to provision a MySQL cluster:
kamal@kamal-Precision-T3610:$ ./mysql-saas-cli delivery-model-omnistrate-hosted-dedicated-tier-db create --token "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTIwMDM5MzYsImlhdCI6MTY5MTkxNzUzNiwiaXNzIjoib21uaXN0cmF0ZS5jb20iLCJsYXN0TG9nb3V0Q291bnRlciI6Niwicm9sZSI6InJvb3QiLCJ0b2tlbklEIjoiZTE3Y2FmOTktZjBjNi00YmM3LWJkZTQtNjNmZTM2ZjU2OTYxIiwidXNlcklEIjoidXNlci0xOFpaRDZKQnJTIn0.4jOYLqCLNYB6MF51GjiXa-GJdd6HSZVC9HSqMh3C9nFi8U0KXXUeFNtRO8RzLLtYYOpv0iRr5LDD5ucbygZ7DQ" --body '{
"cloud_provider": "aws",
"region": "us-east-1",
"requestParams": {
"mysqlDatabase": "test",
"mysqlPassword": "strongpassword",
"mysqlRootPassword": "strongpassword",
"mysqlUser": "test"
}
}'
{
"ID": "instance-um60g2esx"
}
You can then list your MySQL clusters:
kamal@kamal-Precision-T3610:$ ./mysql-saas-cli delivery-model-omnistrate-hosted-dedicated-tier-db list --token "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTIwMDM5MzYsImlhdCI6MTY5MTkxNzUzNiwiaXNzIjoib21uaXN0cmF0ZS5jb20iLCJsYXN0TG9nb3V0Q291bnRlciI6Niwicm9sZSI6InJvb3QiLCJ0b2tlbklEIjoiZTE3Y2FmOTktZjBjNi00YmM3LWJkZTQtNjNmZTM2ZjU2OTYxIiwidXNlcklEIjoidXNlci0xOFpaRDZKQnJTIn0.4jOYLqCLNYB6MF51GjiXa-GJdd6HSZVC9HSqMh3C9nFi8U0KXXUeFNtRO8RzLLtYYOpv0iRr5LDD5ucbygZ7DQ"
{
"Ids": [
"instance-um60g2esx"
]
}
You can then delete your MySQL cluster:
kamal@kamal-Precision-T3610:/tmp$ ./mysql-saas-cli delivery-model-omnistrate-hosted-dedicated-tier-db delete -id "instance-um60g2esx" --token "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTIwMDM5MzYsImlhdCI6MTY5MTkxNzUzNiwiaXNzIjoib21uaXN0cmF0ZS5jb20iLCJsYXN0TG9nb3V0Q291bnRlciI6Niwicm9sZSI6InJvb3QiLCJ0b2tlbklEIjoiZTE3Y2FmOTktZjBjNi00YmM3LWJkZTQtNjNmZTM2ZjU2OTYxIiwidXNlcklEIjoidXNlci0xOFpaRDZKQnJTIn0.4jOYLqCLNYB6MF51GjiXa-GJdd6HSZVC9HSqMh3C9nFi8U0KXXUeFNtRO8RzLLtYYOpv0iRr5LDD5ucbygZ7DQ"
And finally you can describe to check the status:
kamal@kamal-Precision-T3610:$ ./mysql-saas-cli delivery-model-omnistrate-hosted-dedicated-tier-db describe -id "instance-um60g2esx" --token "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTIwMDM5MzYsImlhdCI6MTY5MTkxNzUzNiwiaXNzIjoib21uaXN0cmF0ZS5jb20iLCJsYXN0TG9nb3V0Q291bnRlciI6Niwicm9sZSI6InJvb3QiLCJ0b2tlbklEIjoiZTE3Y2FmOTktZjBjNi00YmM3LWJkZTQtNjNmZTM2ZjU2OTYxIiwidXNlcklEIjoidXNlci0xOFpaRDZKQnJTIn0.4jOYLqCLNYB6MF51GjiXa-GJdd6HSZVC9HSqMh3C9nFi8U0KXXUeFNtRO8RzLLtYYOpv0iRr5LDD5ucbygZ7DQ"
{
"ID": "instance-um60g2esx",
"CreatedAt": "2023-08-13 08:52:36.500827 +0000 UTC",
"LastModified": null,
"Status": "DELETING",
"CloudProvider": "aws",
"Region": "us-east-1",
"ResultParams": {},
"NetworkType": "PUBLIC"
}
In addition to this, you can scale, monitor, audit, define access control and perform other management operations.
Note
Please note that this CLI is an Omnistrate CLI to build and operate your SaaS, and have no correlation with the above CLI. As discussed above, we generate interfaces(API/CLI/UI) to your SaaS control plane built with Omnistrate.
API
Here is an API generated for an demo MySQL SaaS mentioned here built with Omnistrate:
Operate
Building and providing access to your customers is the first step to launch your service and start monetizing your invention but it doesn’t end there. As part of managed services, you are expected to provide fully managed experience and you may have to worry about the following:
- Availability - Omnistrate helps you recover from the infrastructure so that you can focus on making your software resilient. More specifically, Omnistrate helps recover from machine failures, network partitions, AZ failures, temporary process failures, process deadlatches, gray storage nodes out of the box. For more details, please see this
- Operations - You may want to know fleet health, visibility into how your customer infrastructure is doing, inventory of your fleet, fleet insights. Omnistrate provides necessary views for you to operate and take necessary actions to enhance your service. For more details, please see this
- Patching - As a service provider, you may have updates to your software that you want to rollout. Omnistrate allows you to define and manage software upgrades across the fleet. For more details, please see this
- and, much more like continuous deployment, metering, scaling, compliance, access control, improve internal developer productivity
We also integrate with the SaaS applications of your choice for you to continue to use your favorite tooling. For more details, please see integrations
To get started with Omnistrate, see this
To learn more about Omnistrate Architecture, see this