Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Знайомство з Salesforce Commerce Cloud

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Всім привіт. Я вже декілька років працюю як SFCC розробник і вирішив поділитися, що з себе представляє Salesforce Commerce Cloud (SFCC). Контент насамперед може бути цікавим тим, хто вперше натрапив на цю платформу: в описі вакансії чи в повідомленні рекрутера, або ж можливо, ви вже успішно пройшли співбесіду на позицію SFCC-розробника початківця (без досвіду роботи з платформою) і вагаєтесь, як діяти далі. Мотивом написання статті стало й те, що про SFCC не нагуглиш багато, адже це — закрита екосистема. Здебільшого ти розумієш, з чим маєш справу, лише через декілька місяців роботи з платформою. Добре, якщо очікування й реальність співпали, і гірше, якщо «подружитись» з SFCC не вдалося.

Свого часу я також вагався, чи варто починати зв’язуватися з SFCC. На той час, як і сьогодні, — інформації було обмаль. Відсутність деталей у відкритому доступі настрожувала найбільше, підштовхуючи до думки, що це якась чергова нікому не потрібна платформа, яку використовують тільки в одній компанії. Тоді вона називалася Demandware і не мала відношення до Salesforce. І оскільки зараз я пишу цю статтю, то очевидно, що я все ж вирішив ризикнути і дати шанс платформі. Не так давно документація до платформи з’явилася у відкритому доступі, що дає можливість поверхнево оцінити функціонал і можливості SFCC. Власне, далі про це і піде мова без жодних порівнянь з іншими ecommerce платформами, як то — Magento чи Hybris.

Вступ про SFCC платформу

Salesforce Commerce Cloud (попередня назва Demandware, поки її не викупила компанія Salesforce) — це хмарна платформа для реалізації e-commerce рішень. Це платформа, на якій відносно просто можна керувати великим бізнесом електронної комерції. Вона надає зручні інструменти як для продавців, так і для користувачів. Завдяки SFCC можна без захмарних зусиль і власних «велосипедів» створювати регіональні інтернет-магазини з простим продажем товарів, зручним управлінням замовленнями та обслуговуванням кінцевих покупців.

1.1. Архітектура Salesforce Commerce Cloud

Як тільки користувач заходить на сайт, створений на базі SFCC, — весь статичний контент (JS, CSS, зображення) доставляється йому з CDN. SFCC використовує eCDN (Embedded Content Delivery Network). Можна також налаштувати зовнішній CDN. Відповідно навантаження на сервери самого Salesforce для статичного контенту взагалі немає. Всі інші дані/інформація обробляються серверами Salesforce. У компанії є потужні дата-центри, розкидані по всьому світу, щоб фізично знаходитись якомога ближче до клієнтів. Структурно в одному такому дата-центрі знаходиться багато POD (Point of Delivery) — група hardware, яка ділиться між певною кількістю клієнтів, динамічно виділяючи більше ресурсів тому, кому з них більше потрібно. POD складається з фаєрволу, світчів, лоад балансирів, обчислювальних потужностей і файлової системи.

1.2. Типові інтеграції на простому SFCC проекті

Всі проекти на основі SFCC орієнтовані на доволі великих клієнтів з продажами порядка 10-50M$ і більше в рік і відповідним навантаженням на сайт — сотні тисяч користувачів, а під час великих розпродажів їх кількість сягає навіть мільйонів. Практично на кожному проекті потрібно інтегруватися з великим списком сервісів і систем:

  • платіжними провайдерами (включно з управлінням шахрайськими ризиками);
  • провайдерами податків;
  • системами управління замовленнями;
  • CRM-системами;
  • системами перевірки адрес;
  • провайдерами рекомендацій;
  • системами аналітики та ін.

Переважна більшість інтеграцій імплементується, базуючись на вже готовому коді (інтеграційних картриджах), який потрібно модифікувати під потреби конкретного клієнта. Та доволі часто масштабність клієнта і складність ecommerce рішень (робота на десятках ринків в різних регіонах світу, обсяги замовлень) вимагають додаткового функціоналу, який виходить за рамки стандартних інтеграцій. У таких випадках потрібно писати багато кастомного функціоналу, продумуючи детально всі інтерфейси.

1.3. Демо-магазин

Як і в більшості e-commerce платформ, SFCC має свій демо-магазин, з якого власне, і починається розробка проектів. SFCC демо-магазин включає в себе:

  • домашню сторінку;
  • категорії товарів;
  • рекламні банери;
  • сторлокатор;
  • promotions;
  • checkout;
  • сторінка профілю і тд.


Розробка e-commerce рішень починається з кастомізації запропонованого демо-магазину. Традиційно на SFCC-платформі створюють b2c проекти, але бувають і замовлення для b2b-, b2b2c- та навіть d2c-сегментів. Останній мій проект на SFCC — розробка b2b-рішення для світової фармацевтичної компанії з присутністю на ринках і продажах по всьому світу. За майже рік роботи та масштабної кастомізації під потреби клієнта від стандартизованого демо-магазину не залишилося практично нічого. Та це швидше виняток. Звичайно ж за більшого відхилення від заданого шаблону, потрібно більшої віддачі і роботи як від розробників, так і всієї проектної команди (бізнес-аналітики, UX та UI дизайнери та ін.).

Щоб приблизно уявити масштаби клієнтів, які використовують SFCC, наведу приклад безпосередньо з проекту, над яким я працював. Так, після запуску створеного b2b-рішення за менш ніж рік клієнт реалізував продукції на суму $2.8 млрд. Це на 33% більше, якщо порівнювати з оборотом на старому рішенні.

1.4. Бізнес-менеджер

Для адміністрування проекту платформа надає свого роду адмінку — Business Manager, у якій можна керувати різними аспектами веб-сайтів. Тут є також частина, що відноситься безпосередньо до продажу продукції чи сервісів: каталоги з товарами, прайсбуки, інвенторі, контент тощо.

І є частина, яка стосується виключно розробки: джоби, веб-сервіси тощо.

Business Manager дозволяє створювати реплікації, бекапи за розкладом. У той же час адміністратор може створювати інших користувачів, ролі, надавати доступ до тих чи інших частин Business Manager.

Що ж під капотом SFCC платформи?

На стороні сервера використовується B2C Commerce JavaScript (Demandware Script) — це Rhino JavaScript, що включає ECMAScript 5, Mozilla extensions до JavaScript 1.8, і E4X. Серверний код організований за допомогою CommonJS-сумісних B2C Commerce script модулів. До того ж, SFCC надає API для роботи з платформою:

B2C Commerce API включає в себе B2C Commerce Script API та B2C Commerce Pipelets API (легасі). B2C Commerce Script API надає готову структуру класів для роботи з платформою та для реалізації стандартного e-commerce flow. Є класи для роботи з корзиною, ордерами, користувачами і тд. SFCC не дає безпосереднього доступу до БД. Доступ до БД — виключно через SFCC API. Розробнику не потрібно проектувати БД, зв’язки з таблицями і тд. Це все вже платформа зробила за вас. Є можливість розширювати існуючі системні об’єкти і додавати нові кастомні за необхідності.

Нижче приклад розширення системного класу Basket новим кастомним атрибутом:

Для того, щоб отримати поточну корзину через B2C Commerce Script API, достатньо просто написати:

var BasketMgr = require('dw/order/BasketMgr');
var basket = BasketMgr.getCurrentBasket();

Open Commerce API (OCAPI) — це RESTful API, що складається з трьох частин:

  1. Shop API (див. Shop API resources і Shop API documents) — надає доступ до Commerce Cloud Digital сторфронт функціоналу. Тобто API, власне, для здійснення покупок: надає доступ до товарів, корзини, створення замовлення і тд.
  2. Data API (див. Data API resources і Data API documents) — надає доступ до Commerce Cloud Digital конфігурації та інтеграційного функціоналу відповідного проекту.
  3. Meta API, (див. Meta API) — надає доступ до опису ресурсів і документів, доступних в Open Commerce API.

В поточній версії демо-сайту SFRA серверний JavaScript організований дещо по аналогії з Express Node.js фреймворком. До прикладу, ось так виглядає частина контроллера «SomeController.js», в якій ми додаємо обробку GET запиту для ендпоінта «SomeController-SomeEndpointAction»

SomeController.js:

var server = require('server');

server.get('SomeEndpointAction',
    someMiddleware1,
    someMiddleware2,
    someMiddleware3,
    function (req, res, next) {
        var someResult = {};

        res.json(someResult);
        next();
    }
);

На стороні клієнта в поточній версії демо-сайту SFRA JavaScript організований далеко не найкращим чином. Архітектури клієнтського JS як такої взагалі немає. Навіть соромно показувати комусь цей код. Тому зазвичай розробники, які займаються кастомізацією цього демо-сайту, мають свої «велосипеди» (мікрофреймворки) для організації клієнтського JS. На даний момент Salesforce працює над стандартизацією підходу до організації клієнтного JS і для цього, як не дивно, хочуть використати Lightning Component Framework. Цей фреймворк вже широко використовується Salesforce в інших напрямках.

До появи SFRA було ще декілька принципово інших демо-сайтів. Найстаріший з них реалізований на так званих пайплайнах. Розробка на пайплайнах — свого роду візуальне програмування. Ось приклад:

Не знаю жодного веб-розробника, кому б подобалося працювати з пайплайнами. Саме тому SFCC з часом вирішив відійти від ідеї їхнього використання і зробили демо-сайт SFRA архітектурно дещо схожий на Express Node.js. Однозначно можна сказати, що кожна нова версія SFCC демо-сайту стає кращою за попередню.

Зараз Salesforce активно працює над розробкою Headless Commerce, що звучить дуже багатообіцяюче.

В Headless реалізовано повне відділення серверної логіки від частини відображення таким чином, що backend просто надає API, яке хоститься окремо (на іншому домені) і не має дефолтної frontend реалізації. Термін «head» має на увазі frontend, який тісно (монолітно) зв’язаний з backend. Варіантів частини відображення може бути безліч (від мобільного застосунку до повноцінного сайту). Ці фронтенд реалізації хостяться окремо від API. Для того хто розробляє фронтенд, використання цього бекенд API виглядає як робота із 3-rd party інтеграцією. Headless Commerce надає API для роботи з продуктами, каталогами, корзиною, інвенторі, прайсбуками і тд. Різні реалізації частини відображення використовують той самий серверний API. Таким чином, для того, щоб додати ще один варіант фронтенд реалізації не потрібно переписувати бекенд. Більш детально ознайомитися з Headless Commerce можна у статті за посиланням.

Як COVID-19 вплинув на SFCC платформу?

З початком глобального локдауну світ перейшов в онлайн і інтернет став рятувальним кругом для багатьох бізнесів. Так, за даними Salesforce’s Q1 Shopping Index у квітні цього року кількість унікальних онлайн покупців зросла майже у два рази (на 40%), якщо порівнювати з минулим роком. Доходи онлайн-магазинів, які пропонують купити товар на сайті і забрати в магазині (BOPIS — buy online, pick-up in store) зросли на 27% у першому кварталі. Спосіб і формат покупок почав змінюватись. У липні Salesforce опублікував Shopping Index другого кварталу, за результатами якого кількість онлайн-покупців залишається стабільно високою попри відкриття багатьох фізичних (офлайн) магазинів. За прогнозами компанії ecommerce продовжуватиме зростати навіть, коли усі офлайн-магазини відкриють і пандемія піде на спад.

Отже, онлайн-торгівля зростає, вимоги до e-commerce магазинів збільшуються як зі сторони бізнесу, так і від споживачів, і попит на якісні та надійні ecommerce рішення (онлайн-магазини, додатки) теж росте. Враховуючи масштабність Salesforce, великому пакету послуг для бізнесу і постійному розширенню технологічної лінійки сервісів, попереду дуже багато роботи для SFCC розробників. Під час пандемії постраждали різні індустрії (туристичний бізнес, транспортний сектор та ін.), а онлайн-торгівля опинилась на піку розвитку.

З чого почати свій шлях в роботі з SFCC?

Для того, щоб відносно легко почати працювати з платформою SFCC достатньо:

— знати Javascript;

— мати певний досвід з бекендом на будь-якій мові програмування;

— бути знайомим з розробкою інтернет-магазинів (мати досвід в інтеграції платіжних систем і тд.).

І навіть, якщо з вищепереліченим на даний момент не склалося, то можна відслідковувати програми розвитку чи спеціальні курси, де навчають основам JS. До прикладу, у нашій компанії час від часу проводять JS Boot Camp. При успішному проходженні такої програми можна стати Trainee SFCC розробником. На даний момент доволі небагато хороших SFCC розробників і з подальшим розвитком ecommerce глобально таких спеціалістів завжди не вистачає. Тому компанії готові інвестувати чимало зусиль для того, щоб навчити з нуля для себе SFCC спеціаліста. Здебільшого компанії дають SFCC новачку чимало часу (до декількох місяців) на онбординг і знайомство з платформою, і тільки після цього відправляють на «бойові» завдання.

Короткі висновки

Отже, Salesforce Commerce Cloud — це хмарна платформа, яка в основному призначена для розробки b2c ecommerce проектів. За рахунок того, що ця платформа хмарна, — розробникам не потрібно витрачати ресурси на те, щоб сапортити апаратну частину, переживати за масштабування і думати, чи не впаде сайт на Black Friday. Цю платформу зазвичай використовують клієнти з доволі великим оборотом. Це зумовлено тим, що SFCC заробляє за рахунок певного відсотку з продажів через ecommerce сайт і компанії просто не вигідно мати справу з маленькими клієнтами.

SFCC як і більшість ecommerce платформ має свій демо магазин, з якого власне і починається розробка нових проектів. Суть розробки в основному полягає в кастомізації даного демо магазину, добавленні інтеграцій з платіжними системами, такс провайдерами і тд. Організація серверного коду цього демо сайту нагадує добре відомий Express Node.js фреймворк. Клієнтний JS поки залишає бажати кращого. Але невдовзі, можливо, SFCC переробить клієнтний JS на базі Lightning Component Framework.

SFCC розвивається доволі швидко, відбувається чимало позитивних змін. Невдовзі можна буде розробляти проекти використовуючи Salesforce Headless Commerce.

👍ПодобаєтьсяСподобалось11
До обраногоВ обраному11
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дуже цікаво, дякую за статтю

Несколько полезных уроков по SFCC для новичков:
11 Days of Salesforce Storefront Reference Architecture (SFRA)

Дякую! Цікаво. Шкода, що не можна поставити просто лайк.
Хоча є питання. А як в них з пробним проектом? Можна попробувати за безкоштовно? Чи зразу вмикається лічильник?

Шкода, що не можна поставити просто лайк.

Можна поставити зірочку, як на GitHub.

Дякую за коментар, Serhiy Brytskyy.
На жаль, SFCC не надає безкоштовно доступ до сендбокса.
Найпростіший варіант погратися з платформою і зрозуміти чи вона тобі підходить це влаштуватися в компанію, яка наймає JS розробників з метою виростити з них SFCC девів.
Часу на онбординг такі компанії дають більш ніж достатньо, щоб зрозуміти чи це твоє)
Перед тим як влаштовуватися в ту чи іншу компанію можна ознайомитися детальніше з платформою за посиланнями:
1. Демо сайт (SFRA)
2. Документація
3. Відео для поверхневого ознайомлення з платфорою

Цікава стаття.
Бо наштовхує на філософськи роздуми — скільки років e-commerce — а все одно всередені — жахіття. Починаючи з WooCommerce/OpenCart і закінчуючи SalesForce що на Java що ось на JavaScript. Чи то домен не формалізуюється, і computer science бессилий, хоча на словах — все типове і одне й теж саме,
чи то проектуються не інеженерами а менеджерами...

Є і хороші приклади типу nopCommerce, Magento 2. Те ж API до Shopify має набагато прозорішу архітектуру.

Основной минус сэйлсфорса — в site genesis.

И программистам, и клиентам, и сэйлзам кажется, что основной шаблон — он уже древний, устоявшийся, безбажный, а значит, можно на нем быстро поднять сотню сайтов на одном сэндбоксике и быстро протестировать «основной функционал» и не заморачиваться...

А потом приходится заморачиваться. Каждым сайтом по-отдельности. Начиная с «основного функционала» и вглубь реализации каждого инстанса в отдельности.

Алексей, дякую за коментар.

Не можу не погодитися, що старий Site Genesis — це головна біль для всіх (починаючи від SFCC розробника і закінчуючи FE розробниками). Змішування бізнес логіки і частини відображення, клієнтний JS, відсутність імплементації дизайн паттернів, стиль коду і тд. Це все викликає чимало негативу для всіх хто мав справу із Site Genesis. Поява SFRA пофіксила проблему змішування бізнес логіки і вью леєра, покращила організацію серверного коду, проте клієнтний JS залишився таким же убогим. Проте і Site Genesis і SFRA — це все лише демо сайти і ніхто не забороняє використовувати свій велосипед для організації клієнтного JS чи створити свій нормальний демо сайт, пофіксивши проблеми SFRA (в нас в компанії так і зробили).

Головне те, що є тенденція на покращення платформи, а все інше залежить від тих хто власне розробляє кінцевий продукт

Чудова стаття! Спасибі автору 👍

Платформа дійсно є закритою, але, якщо комусь буде цікаво дізнатися більше перед початком роботи із SFCC, то є багато публічно-доступної інформації.

1. Документація (виглядає не надто симпатично, але є доволі інформативною) — documentation.b2c.commercecloud.salesforce.com/DOC1/index.jsp
2. Salesforce Trailhead (потрібно вибрати «Commerce Cloud» розділ) — trailhead.salesforce.com/trails
3. Developer center — developer.commercecloud.com/s
4. Github (декілька репо доступні публічно) — github.com/SalesforceCommerceCloud
5. Salesforce AppExchange — appexchange.salesforce.com
6. Канал на Youtube — www.youtube.com/c/commercecloud/videos
7. І ось ще непогане відео для ознайомлення із платформою в цілому — youtu.be/U_aoTXkwgmA

Max Hryshchuk, дякую за хороший коментар і за корисні посилання!

Респект автору, все розклав по полицям для тих, хто не працював з платформою.
Make SFCC great again, Ostap!

откуда информация про eCDN ?
Я видел, что используют CloudFlare для статики.

Да, можно использовать исключительно embedded content delivery network (eCDN). А можно настроить внешний CDN, тот же Cloudflare или Cloudinary или другой какой-то. Вот подробнее в документации: documentation.b2c.commercecloud.salesforce.com/...​ring_an_external_cdn.html

Забыл пожалуй еще добавить про возможность написания своих картриджей для размещения на маркетплейсе

Yuriy Zhulinskiy, Дякую за слушний коментар.
Обов’язково добавлю декілька речень про створення власних картриджів і розміщення на маркетплейсі.

ну його нафіг, той демандвер.. 5 років болю і страждань))

Женя, з тих часів багато води утекло!)

та я в курсі)) не знаю навіщо, але регулярно підтверджую свою сертифікацію)))

Вподобайка за хорошу україномовну статтю.

Якщо комусь буде цікаво переглянути на доступні ресурси, щоб отримати допомогу в SFCC, запрошую переглянути статтю на медіум:
— medium.com/...​-in-sfcc-b2c-bbb0b7347627

Oleg Sapishchuk, Дякую за коментар і за посилання на гарну статтю

телефон блондиночки с картиночки можно?

Номер телефона вряд ли, но зато можешь полюбоваться самим фото и заодно на функционал типичного сайта на SFCC посмотреть на демо SFRA instance: production.sitegenesis.dw.demandware.net/...​s/RefArch/home?lang=en_US

Підписатись на коментарі