What Demandware is?

I started working as a Demandware developer couple years ago. I had no idea what Demandware is, how does it work and how to develop features (and bugs) for it until I started my current developer's job. I had previous experience as PHP/JavaScript full stack developer, but never touched something like pipelines, pipelets, Demandware script and etc. The platform is really huge, but if you have previous experience working as web programmer the learning curve is really short - there is nothing cardinally different than usual e-commerce web site.

History

Initially Demandware was developed by a software company based in Burlington, Massachusetts specialized in a cloud-based e-commerce solutions. The platform was targeted to enterprises offering unified experience across desktop and mobile, AI personalization, order and stock management capabilities, B2C and B2B retailer services backed by scalable cloud infrastructure.

Founded in 2004, Demandware was acquired by Salesforce in 2016 for $2.8B. The company was subsequently renamed Salesforce Commerce Cloud.

Benefits

  • Reusable code - the code is organized in reusable modules called cartridges. Salesforce itself provides ready to use cartridges for different purposes - payment integrations, customer services, skeleton e-commerce app and etc. Also, you can think of cartridges as packages you can share between projects.
  • Scalability - easy to expand and handle more traffic without the hassle of setup and maintain cloud infrastructure.
  • Reporting - generate reports in XML format (industry enterprise standard) or trough OCAPI (REST API)
  • It easy to integrate with 3rd parties synchronously (using jobs - the Demandware version of crontab) or asynchronously - using REST or SOAP services (using well-supported service framework)
  • Easy to bootstrap new e-commerce site

Cons

Salesforce Commerce Cloud (SFCC) is not cheap. You will not find a cost-effective solution with official systems integrators - 3rd party companies providing customization, integration and support services. The percentage "fee" charged on each sale is negotiable and can range from around 2% to almost 3%. To sum up: setup cost, licensing and support and customization pricing make the platform suitable to huge retailers and enterprises only.

Technology Stack

Demandware's core framework is build in Java and uses a very efficient HTTP caching system based on Cloudflare technologies. The core framework is closed to third parties and is exposed via the Demandware script and REST API's as well as Demandware's own pipeline and pipelet system. The last two are now deprecated in favor of JavaScript controllers and common.js modules.

This developers are supposed to use the JavaScript API in order to develop additional functionality without direct access to the underling Java application. Same goes for the database which is only accessible trough JavaScript ORM.

Demandware is designed around the MVC concept (at least in theory). Typically in the MVC world you try to prevent putting business logic in the views, however if you use SiteGenesis as your starting point you'll find that not to be the case on most of the pages. If you switch to using Javascript Controllers instead of Pipelines, then it'll be closer to the Magento style of MVC (but using NodeJS-like syntax).

  • Models are Demandware Forms and Demandware API objects
  • Controllers are Demandware Pipelines (now deprecated in favor of JavaScript Controllers). The pipelines are XML files you edit with special Eclipse plugin. They embrace the concept of visual programming - using reusable block (pipelets) and data flow conditions you visually build "pipe" reflecting the data flow. In opposite, the JavaScript controllers are based on ECMAScript standard 5.0 for JavaScript with some extensions like E4X and optional type hinting.
  • The views are ISML files - basically HTML with extra Demandware specific ISML tags used for data flow control - loops, if conditions and etc. ISML stands for Internet Store Markup Language

Recently, Salesforce made the API documentation public so everyone can check it out here