Skip to main content

Introduction

declo is a drop-in solution for your e-commerce setup with the goal of simplifying how "modern" e-commerce is composed without compromise.

Background

Over the past 10+ years we have developed e-commerce solutions for clients ranging from large-scale enterprises to smaller businesses. During this time we have developed a deep understanding of the complexities and challenges that come with modern e-commerce systems.

The problem

A recurring observation is how fragile and unnecessarily complex areas around the shopping cart and checkout flows become. This is often the epicenter where multiple services converge, making bottlenecks more prevalent. Such bottlenecks can directly impact customer experience, development, and the business as a whole.

The consequences of this can be severe, and include:

  • Loss of revenue
  • Increased development time and costs
  • Increased infrastructure costs
  • Reduced customer satisfaction

Cause and effect

Common symptoms:

  1. Significant reduction in performance

  2. Data inconsistency and lack of integrity and transparancy (no single source of truth)

  3. Reduced fault tolerance

  4. Duplication of vital business logic

Why declo?

declo is like no other e-commerce SaaS provider. To solve the raising problems in the domain of e-commerce, multiple concepts have been combined to achieve a predictable, single-source-of-truth enabled and performant system.

Declarative

declo is fully declarative: from how the system is defined, to how the data is managed and sourced, and all the way out to the clients consuming declo. Declerative systems are by nature known for its predictability and high data integrity, but it has a price: performance.

To overcome the performance concerns of the declarative approach, we are utilizing multiple techniques. The primary ideas behind our optimizations are optimistic data handling and data diffing.

As a result we have created a declarative system, that out-performs existing system by magnitudes. The avarage response time of an add to basket operation in declo is only 40ms. This is good - but the best is that this time does not increase when extending logic or relying on slow data sources. This means you can hook up slow external stock checks while maintaining high performance seen from a user perspective.

WS-first

declo is websocket-first. Why? Because a transactional use case with a clear sense of a "session" (a shopping session), is a great candidate for a websocket-like architecture. Having an open connection yields multiple advantages:

  1. declo can give multiple "responses" to one operation. We heavily utilize this by emitting back optimistic data. Practically we predict the result of the operation, relying on the data we last knew. Then meanwhile in the background, configured stock checks, data sourcing etc happens, and if anything has impacted the result, a new data set is simply emitted from the websocket.
  2. declo is realtime by default. If a data source is changed, all baskets relying on it are updated. If a basket is changed from another browser, tab or device, all clients subscribing to the basket will receive the updated basket instantly. Utilize this to build great collaborative experiences like shared shopping or "follow my driver" like applications.
  3. pre-flight checks, authentication etc happens only once (on ws connection establishment), and all following operations (like add to basket, payment initializaiton etc) are therefore much ligther (no headers etc) and hence faster.

Problems with websockets? They are extremely hard to scale. But don't worry, it's all taken care of.

External data sourcing

While declo includes ingest mechanism like any other api-first e-commerce SaaS, declo has a truly unique ability. When setting up your objects you can point to any network available data source. This could be your single-source-of-truth PIM system, your search index (that your frontend is already consuming) or maybe your cms. It could also be your own backend exposing data. It's a game changer and can heavily reduce the complexity of your overall arhitecture, not needing message queues and other data synchronization units.

We fundementally believe that in most scenarios your e-commerce system should be considered an equal consumer of your data (like your frontend), and not be owning any data (apart from orders created through the system).

Edge runtime

When deploying declo through our CLI, your declarative e-commerce system is deployed to more than 300 edge nodes around the world in a couple of seconds. This ensures that no matter where your customers are located, they are garuanteed to access a node close to them, reducing network latency. This together with other optmizations ensures the high performance of declo.

And the best? We scale your system indefinitely and have done load testing with hundreds of thousand simultaneously connected users.

Atomic

As part of running in the edge all declo configurations are atomic deployed. This yields a couple of advantages:

  1. Multiple configs can run in parallel without interfering.
  2. Configs can quickly be rolled back.
  3. A/B testing is easy to setup and your core business rules, such as discounts and other pricing mechanism, can finally be split tested.
  4. Enviroments and deploy-previews can be shared across team for review, testing and similar purposes.