Software can be similar. While there are numerous multipurpose tools from programming languages to spreadsheets, they're usually best suited for a specific paradign. Excel, for example is commonly used for a lot of things beyond calculating books and it is possible to create a functioning Super Mario video game with it. This is a lot of work, but arguably it would be even harder to reverse engineer a game written in Excel to a platform more suitable. It would likely just be faster to rewrite it from scratch.
For web application frameworks and platforms one similar aspects is multitenancy. By multitenancy we mean a single installation of a piece of software being able to run multiple different instances for multiple user groups or different functionality. Ultimately a framework either supports running multiple instances or it doesn't. You can work around the limitations, creating your additions and logic to make a single tenant platform support multitenancy. At this point you've created your own framework. That's potentially a lot of work to maintain and debug going forward.
Multitenancy is a must for Digital Experience Platforms
At Ibexa we build a Digital Experience Platform built on the Symfony framework. Symfony at its heart is a single tenant framework; You have application A and B, you have two codebases, each with its own application code and deployment target. This makes it easy to work on each as they're completely separate and changes in one don't affect the other. But it also adds some overhead in maintenance and managing deployments and makes adding more targets a more manual operation.
The above is be fine if your core business is writing those applications and maybe are running a full engineering team from developers to devops for deployments. But for many who are looking at deploying a DXP, the software is there to support their business in complex B2B eCommerce, increase sales with integrated personalization and enabling marketing teams easily managing a fleet of marketing websites.
In many B2B companies looking to implement a Digital Experience Platform the role of software is to support the business operations and not turn the company into a software powerhouse. To allow the efficient development, rapid adjustments to business models and expansion to new markets we believe it is essential that a Digital Experience Platform support multitenancy through and through, for all of its features.
This is why our architecture takes this into consideration from the ground up, adding a multitenancy layer on to complement the Symfony framework. This multitenancy layer is always there and if you just deploy a single tenant website it will simply be a multitenant instance with a single instance. Adding more instances, for example to create new self-service portals for resellers, is trivial and can be done via the back office using the Sitefactory feature.
Deploying to Ibexa Cloud is a breeze
The Ibexa DXP suite of products (Ibexa Content, Ibexa Experience and Ibexa Commerce) can be installed on premise, self-hosted on IaaS or our own cloud platform. In partnership with Platform.sh we've created the easiest way to deploy your Ibexa DXP projects with the Ibexa Cloud. In addition to simple hosting the Platform.sh technology enables a development workflow driven by git, comprehensive user access management, easy scaling for traffic peaks and much more.
Together with the Ibexa DXP's multitenancy capabilities and the fully managed hosting provided by Ibexa Cloud, deploying a multiple services using a single instance of Ibexa DXP couldn't be easier. The tricky details such as server configurations and management of HTTPS Certificates are handled by the hosting platform, leaving just two steps to your developers and IT staff:
- Define the DNS settings for domains
- Configure Ibexa DXP domain matching.
The DNS configurations map a certain domain name (e.g. www.example.com, service.example.com) to a specific server on the internet. This is a task done by whoever manages the domain names in your organization. This can be your internal IT staff or even the agency working on your project implementation. What needs to be done is to create (or modify) the CNAME record for a given domains to match the domain used by the Platform.sh environment's domain:
- www.example.com -> main-313337-h4xxxxx0rrrrr.eu-4.platformsh.site
- service.example.com -> main-313337-h4xxxxx0rrrrr.eu-4.platformsh.site
With these entries requests to www.example.com and service.example.com are directed to the same Ibexa DXP instance. The next step is to make sure Ibexa DXP knows what to do with the passed domain. This can be done either via the Sitefactory Domains configuration or the standard siteaccess mapping configuration which is shown below:
siteaccess: list: [service_en,marketing_en,marketing_fr] groups: sitegroup: [marketing_en,service_en] default_siteaccess: marketing_en match: Map\Host: service.example.com: service_en www.example.com: marketing_en Compound\LogicalAnd: marketing_fr: matchers: Map\URI: fr: true Map\Host: www.example.com: true match: marketing_fr
With the above configuration Ibexa DXP will see the incoming request and match that to the configuration for a specific siteaccess (an Ibexa specific term for a single tenant). That configuration defines a configuration including the design, languages and content repositories used by individual siteaccess. The service.example.com and www.example.com map directly to a defined siteaccess.
In the example, I also included a third siteaccess, the French marketing site. It is included there to show that the mapping is flexible and you can use a configuration of matchers to achieve views to a tenant that does not require domain configuration. In our example, the French marketing site the Compound matcher matches based on both the domain and the path, meaning that the French marketing site will be shown in the URL https://www.example.com/fr but not for the service.example.com domain.
This was a brief introduction to how Platform.sh and Ibexa DXP enable deployment of multitenant applications effortlessly. We've just scratched the surface of what these both can do, so we recommend to learn more about Ibexa DXP on our developer portal and documentation as well as the Platform.sh documentation.