Easyfy is a customizable e-commerce platform that uses RavenDB for its ease of custom tailoring, fast release cycles, ability to accommodate various heterogeneous data types, rich feature set, and low Total Cost of Ownership.
Table of contents
Easyfy started with Raven right out of the gate, working with it from 2.0.
Easyfy’s owner and CEO Marcus Oldin and his team had known about RavenDB for a long time through the blog of RavenDB CEO and founder Oren Eini (AKA Ayende). With this background, and after more extensive research, they determined that RavenDB was their best choice. It was “spot on for lots of e-commerce objects”, due to its ability to quickly accommodate various semi-structured data types coming in.
Features Used by Easyfy
Full-text search is available out of the box. It’s built on the industry-standard Lucene library and is comparable in functionality and performance to specialized search engines.
RavenDB provides various analyzers out of the box, but also allows custom analyzers to be defined.
Easify uses their own analyzers on the v3.5 instances but not on the instances on the cloud.
In version 6.0, RavenDB lets users choose between Lucene and RavenDB’s in-house Corax index/query engine to provide even faster searching abilities.
Faceted search is a way to break down search results into manageable categories of “facets”. Facets can be defined in code, and if they don’t need to change dynamically, that definition can be stored in a document whose ID can be passed to the query in place of a facet list.
We wouldn’t be where we are today if we didn’t have the facets and if we didn’t have the search in RavenDB.Marcus Oldin, Easyfy Owner
Map, Multi Map, and Map-Reduce
The Map and Multi Map features allow users to specify mapping functions that indicate how to index data in fields from one or multiple collections respectively.
Map-Reduce and Multi Map Reduce allow users to perform complex data aggregation during indexing time rather than at query time, again across one or multiple collections respectively.
Easyfy uses document expiration to automatically delete shopping carts/baskets that have been left unused for a certain amount of time.
They also have quite a few processes in the background that handle product relevance. Whenever a product is viewed or purchased, this event is aggregated into the user session. Each event is weighted based on its type and how long ago it occurred. The information is then used for marketing purposes such as product recommendations.
Easyfy’s tech stack is in C# and ASP.NET, and they’re using a large monolithic system on the web which contains most of their logic.
They have a few background services which handle important processes like updating stock from external warehouse systems, placing orders, communicating with customers, etc. These services listen to queues and mostly use Azure Service Bus.
Their typical deployment for a client is to host on the Azure platform with RavenDB Cloud, but some customers are self-hosted on virtual machines. They have different databases for different tenants (clients), but they’re hoping to transition to a multi-tenant system in the future.
In total, they have around 10-20GB in their databases, which they’ve begun to split up to get finer control over the indexing processes. (For example, they want to make building Order indexes a priority, so split that off into its own database.)
Use of RavenDB 5.3 Features
Easyfy needs a method to keep track of products that have been ordered, but whose order has not yet been reflected on the warehouse system. (That system does not report changes in stock levels until later in the process.) They’re considering using Counters, or Compare-Exchange values to handle this.
In Easyfys newest platform version they are making extensive use of subscriptions to trigger transformations of data to a read-friendly format, resetting prices at the end of sale periods, and more.
Challenges in Using RavenDB
Easyfy has never hired a dev with prior RavenDB experience. Every new hire has had to be onboarded. They’ve found that sometimes new employees have “a little bit of a hard time to get a grasp of indexing in general and more specifically map-reduce indexes, how they work. But it usually doesn’t take that long and they understand.”
The only thing they’ve struggled with in terms of working with RavenDB has been meeting reporting requirements from customers. They now have customers using the Power BI support introduced in 5.3 as a solution. This support allows users to push data to PowerBI, and run queries in RavenDB from the BI client. Once the data is in, they can analyze, process, transform, remodel, and report on it.
Easyfy is an e-commerce platform that’s been helping companies do business online for about 10 years. Theirs is a custom solution, rather than an off-the-shelf product. They have a base software platform that they build on to create tailored solutions for their customers.
Unlike most e-commerce platforms, they do more than just deliver a solution. They continue working with their customers to build their platform, even looking back after a few years to reevaluate the product from dev and e-commerce perspectives.
Usually, they develop 90-100% of the solution, and often their clients don’t have their own developers, so Easyfy’s developers stay on as consultants. Solutions they develop in individual customer platforms can then be added back into the base platform to the benefit of other customers.
Each platform associated with a customer has its own instance of RavenDB, some of which are on version 3.5, while others are on the latest version, 5.4, via RavenDB Cloud.
One of their biggest customers has grown 4000% over the last 2 or 3 years. From ~5m USD in 2015 to ~150M USD in 2021.
What’s Next for Easyfy?
Easyfy is driving towards using application services and working with them to host both their background service APIs and their main web.
They have broken break up their monolith architecture and made a big rewrite. On the older platform version, different tenants had different databases, but the newest platform is supports both multitenancy in the same database and on different databases, depending on the customers specific needs.
We will continue to watch the e-commerce trends and try to be proactive there, and make sure that our platform is top of the line going forward.Marcus Oldin, Easyfy Owner
To see how you can benefit from RavenDB’s NoSQL Database Performance, click here to book a free demo.