Umbraco 9 Compatibility
Umbraco has been rewritten to run on .NET and ASP.NET Core 6, which means that this version of Ucommerce can't' be installed into Umbraco 9 or any newer version of Umbraco.
This may raise some questions like can we not base our new solution on Umbraco 9 or should we wait for Ucommerce 10 to be released?
In this article, we will address some of the concerns you might have in regards to this and show how you can build the infrastructure to accommodate this.
There is no reason not to build or upgrade your solution to use the latest version of Umbraco for managing content and storytelling.
The below architecture shows how you can build an infrastructure that leverages all the awesome features in Umbraco and combines them with Ucommerce as your eCommerce engine.
The clean Umbraco 9 instance is going to be responsible for the presentation of the website and managing the Content.
This instance will use the Headless APIs from the Ucommerce and Elastic instance in order to apply eCommerce data, flows, and features to the Umbraco 9 instance.
Since this version of Ucommerce is built on .NET Framework and Ucommerce isn't a standalone solution. We need to create an Umbraco 8 instance, which is only going to be responsible for hosting Ucommerce.
Ucommerce has Headless APIs that can be used to build the transaction flow on the Umbraco 9 instance. You can find more information about it here.
We also need to ensure that our catalog data is accessible for the Umbraco 9 instance in order to present it to the end customers.
Luckily Ucommerce already has an OOTB integration to Elastic Search, which will publish the data and make them available in Elastic Search. You can read more about the configuration options here.
Now that all the catalog data has been indexed to Elastic Search. We can leverage their Headless APIs to present all the required details around our products, categories, etc. in our Umbraco 9 instance.
How does this make the solution future proof you may ask. This architecture gives you a lot of flexibility because all involved systems are being managed in their own instance. You can upgrade the instance independently, allocate the exact resources needed for each instance, scale them individually, etc.