Software distribution involves delivering software to a specific environment. Within the distribution process, there are three key points that software needs to be securely delivered to after development:
- Internal repositories: This is for developers and CI servers globally and is used in ongoing development and testing.
- External repositories: Used by the developer ecosystem, partners, and customers, it includes drivers, plugins, and OSS components.
- Machines: Runtime environments and infrastructure endpoints where applications are deployed.
In this article we’ll look at the second point, and in particular the development and delivery of SaaS products to customer-managed environments.
Why SaaS Vendors Pursue Customer Installs
A recent survey by Replicated, the commercial software distribution platform, found that installing SaaS software into customer-managed environments continues to be popular among security-conscious clients. It was also found to be profitable, with 79% of respondents reporting higher revenue from such customers compared to general SaaS offerings.
Not surprisingly, Industries like fintech, healthcare, and government prioritize data privacy, network security, and regulatory compliance. These enterprise-grade customers are willing to pay premium prices for these features and prefer running the software in their chosen environments, whether air-gapped or on their preferred cloud platforms.
This demand presents a good business opportunity for software companies, but some challenges arising from the distribution model can deter vendors from developing software for customer environments. So what are these difficulties?
Challenges of Building Software for Customer-Managed Environments
Customer Support During Installation and Upgrade
Some installations can be complicated, with numerous configurations and dependencies potentially delaying deployment. At the same time, vendors want to provide maximum convenience for their customers and reduce demands on their support teams by providing them with a seamless user experience.
Integration with the Customer’s Environment
Integration can frequently be challenging during initial installation due to unexpected compatibility issues. Replicated has reported that such issues are the primary cause of reluctance amongst vendors to undertake development of software for customer environments. Additionally, software often requires further customization to match the customer’s business logic, creating additional problems and diverting developer resources.
Supporting Multiple Versions and Release Lag
Replicated’s survey shows that features for customer-managed environment software typically lag behind their SaaS counterparts by around three weeks, due to vendors understandably giving the greatest importance to updates for their main SaaS offerings used by the majority of clients.Complexities of the upgrade process can also lead to customers deciding to delay required updates.
Development and Testing for Different Installation Options
Designing and testing solutions for different runtimes (operating systems, containers, virtual machines, bare metal, etc.) is still a major issue in creating software for customer-managed environments.
Challenges of Distributing Software to Customer-Managed Environments
Lack of advanced DevOps skills
Delivering a developed product to end-users involves distributing software as installation packages such as binary releases, Docker images, or Helm charts. Customers often struggle with cloud prerequisites for deploying these packages, especially without advanced DevOps skills in platforms like AWS, GCP, or Azure.
Software distribution scenarios
Distributing across various tools and cloud platforms
Distributing software across different tools and cloud platforms, such as various Kubernetes distributions and operating systems can be challenging. Each environment requires specific configurations, dependencies, and compatibility checks which can be extremely inefficient when they require their own unique installation protocols.
How Cloud Installers Can Help
The benefit of cloud installers or installation scripts is that they simplify software deployment and setup in the cloud. This is achieved by reducing the complexity of the initial installation, streamlining the user experience and making the process of software adoption far easier.
Cluster.dev: A Solution for SaaS Deployment
So, how does Cluster.dev, an infrastructure templating technology by SHALB, help in the development and deployment of SaaS software to customer-managed environments? Cleverly, it packages the software code with a preconfigured template that includes all prerequisites for setting up infrastructure in a customer’s cloud account.
The Cluster.dev installer diagram
By maintaining a shared state between components, Cluster.dev sequences their launch within an infrastructure template, enabling the installation of the entire stack with a single button push in the WebUI or a one-shot CLI command. Compatibility issues become easier to manage as Cluster.dev allows pinning component versions within a template’s code base, ensuring harmonious performance. The templates are also completely customizable, meaning that integration with complex customer systems is no longer a pinch point.
While testing different installation options can often be challenging due to the difficulty of provisioning customer-specific environments, Cluster.dev addresses this by automating their launch to enable effective testing of infrastructure changes and checking the compatibility of system components.
Conclusion
It’s clear that there are various difficulties SaaS vendors face when developing software for customer-managed environments, negating or even outweighing the benefits. However, cloud installers can effectively address the issue by facilitating installations in customers’ chosen environments. Cluster.dev does exactly this by supporting installation on any cloud platform or on-premises by using templating and codifying best practices in deployment and Day 2 operations. The end result is a seamless software distribution and adoption process within customer-managed environments.