SlideShare a Scribd company logo
Integration Ignited
Redefining Event-Driven Architecture
at Wix
Natan Silnitsky, Wix Engineering June 2025
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Hi,
I’m Natan
Integration Ignited
natansilnitsky
www.natansil.com
@NSilnitsky
@natan-s.bsky.social
Backend Infra Tech Lead @Wix
Speaker
Blogger
Yoga & Fitness enthusiast
Integration Ignited
AGENDA
Wix Unique Dev Platform
Integration Ignited
DDD - Wix vs. Traditional
AGENDA
Wix Unique Dev Platform
Integration Ignited
DDD - Wix vs. Traditional
Integration Events at Wix
AGENDA
Wix Unique Dev Platform
Challenges
Takeaways
Integration Ignited
Wix Unique
Dev Platform
Integration Ignited
Internal Wix
Developer
External App
Developer
External Wix Site
Developer
Wix Open Platform
Integration Ignited
Bookings
Events
Forms
Loyalty
Stores
Rewards
Tickets Policies
Checkout
Time
Slots
Schemas
Sub
missions
Guests
Coupons
Calendar
Orders
Waitlist
Cart
Catalog
Programs
Wix Open Platform - infinitely extensible
Integration Ignited
Wix service
API
3rd party
Wix Open Platform - infinitely extensible
Integration Ignited
Wix service
3rd party
API SPI
3rd party
Wix Open Platform - infinitely extensible
Integration Ignited
Wix service
3rd party
API SPI
3rd party 3rd party
Nile - Backend Platform - accelerating dev velocity
Integration Ignited
Java Scala
Nile
Wix Dev Platform
Integration Ignited
Java Scala
Nile
Nile - Backend Platform - accelerating dev velocity
Authentication &
Authorization
Secrets
management
Data Access
Layer
Full Testing
Support
Regulation
(GDPR, …)
…
Wix Dev Platform
Integration Ignited
Java Scala
Nile
Nile - Backend Platform - accelerating dev velocity
Sub
missions
Policies
Payment
Rewards
Tickets
Orders
Product Checkout Calendar Waitlist
Programs …
Wix Dev Platform
API First with Protobuf
Integration Ignited
Wix Dev Platform
API First with Protobuf
Integration Ignited
Product Catalog API
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Wix Dev Platform
API First with Protobuf
Integration Ignited
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Product Created
Product Updated
Product Deleted
Product Catalog API
Wix Dev Platform
API First with Protobuf
Integration Ignited
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Product Created
Product Updated
Product Deleted
Product Catalog API
Wix Dev Platform
API First with Protobuf
Integration Ignited
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Product Created
Product Updated
Product Deleted
Product Catalog API
Wix Dev Platform
API First with Protobuf
Integration Ignited
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Product Created
Product Updated
Product Deleted
Product Catalog API
Wix Dev Platform
API First with Protobuf
Integration Ignited
MCP
Server
CreateProduct
ReadProduct
UpdateProduct
DeleteProduct
Product Created
Product Updated
Product Deleted
Product Catalog API
Wix Dev Platform
DDD
Traditional vs. Wix
Integration Ignited
Traditional DDD
Multiple Aggregates per Service
Integration Ignited
Product Catalog Bounded
Context + Service
Product
Aggregate
Inventory
Aggregate
Category
Aggregate
Traditional DDD
Multiple Aggregates per Service
Integration Ignited
Product Catalog Bounded
Context + Service
Product
Aggregate
Category
Aggregate
Inventory
Aggregate
Traditional DDD
Multiple Aggregates per Service
Integration Ignited
Wix approach
Single-Aggregate Services
Product
Service
Inventory
Service
Category
Service
Product Catalog Bounded
Context + Service
Product
Aggregate
Category
Aggregate
Inventory
Aggregate
Integration Ignited
Accelerated Developer Velocity
Product
Service
Inventory
Service
Category
Service
Auto Generate Product
Entity CRUD methods
Automatic assertions for
Inventory entity tests
DDD Traditional/Wix
Integration Ignited
Improved System Resilience
Product
Service
Inventory
Service
Category
Service
Category service
is down
Design: Doesn’t affect
product + inventory
DDD Traditional/Wix
Integration Ignited
Product Service
Product
Aggregate
Inventory
Aggregate
Category
Aggregate
Domain Events
In-process, core domain rules
Integration Events
Async, external systems
Eventual consistent
DDD Traditional/Wix
Integration Ignited
Product Service
Product
Aggregate
Inventory
Aggregate
Category
Aggregate
Domain Events
In-process, core domain rules
Wix Orders
service
Integration Events
Async, external systems
Eventual consistent
DDD Traditional/Wix
Integration Ignited
At Wix Every Event is an Integration Event
Product
Service
Inventory
Service
Category
Service
Orders service
DDD Traditional/Wix
Traditional
(Domain Events)
Integration Ignited
Product
Aggregate
Category
Aggregate
Category Rename
Product Catalog Service
1. Category
Renamed
DDD Traditional/Wix
Traditional
(Domain Events)
Integration Ignited
Product
Aggregate
Category
Aggregate
Product Catalog Service
1. Category
Rename
3. Commit
txn
2. Update
product
Category Rename
DDD Traditional/Wix
Traditional
(Domain Events)
Integration Ignited
Wix way
(Integration Events)
Product
Service
Category
Service
Product
Aggregate
Category
Aggregate
Product Catalog Service
1. Category
Changed
3. Commit
txn
2. Update
product
1. Rename
Category &
Commit
Category Rename
DDD Traditional/Wix
Integration Ignited
Wix way
(Integration Events)
Traditional
(Domain Events)
Product
Service
Category
Service
Product
Aggregate
Category
Aggregate
Product Catalog Service
1. Category
Changed
3. Commit
txn
2. Update
product
1. Rename
Category &
Commit
2. Category
updated
Category Rename
DDD Traditional/Wix
Integration Ignited
Wix way
(Integration Events)
Product
Service
Category
Service
1. Rename
Category &
Commit
2. Category
updated
3. Update
product &
commit
Traditional
(Domain Events)
Product
Aggregate
Category
Aggregate
Product Catalog Service
1. Category
Changed
3. Commit
txn
2. Update
product
Category Rename
DDD Traditional/Wix
Integration Events
Implemented at Wix
Integration Ignited
Persist and Publish Integration Event
Category Service
CreateCategory
UpdateCategory
DeleteCategory
Category
Document
Store
1 2
Category Created
Category Updated
Category Deleted
Integration Ignited
Integr. Events @Wix
Integration Events Protobuf Definitions
Integration Ignited
message ProductCategory {
option (entity) = {fqdn: "...v2.ProductCatgry"};
google.protobuf.StringValue id = 1;
...
google.protobuf.StringValue name = 5;
...
}
● payload based on
proto definition
of the main service entity
Integr. Events @Wix
Integration Events Protobuf Definitions
Integration Ignited
message ProductCategory {
option (entity) = {fqdn: "...v2.ProductCatgry"};
google.protobuf.StringValue id = 1;
...
google.protobuf.StringValue name = 5;
...
}
message IntegrationEvent {
string id = 1;
...
oneof body {
EntityCreatedEvent created_event = 7;
...
}
...
int64 entity_event_sequence = 11;
● payload based on
proto definition
of the main service entity
● inside a standard envelope
also defined in proto
Integr. Events @Wix
Auto Topic Creation for Integration Events
Category Updated
Category Deleted
Category Created product_category_v2_integration_events
Integration Ignited
0 1 2 3 4 5
Integr. Events @Wix
message ProductCategory {
option (entity) = {fqdn: "...v2.ProductCatgry"};
google.protobuf.StringValue id = 1;
...
google.protobuf.StringValue name = 5;
...
}
Auto Topic Creation for Integration Events
Category Updated
Category Deleted
Category Created product_category_v2_integration_events
Auto-generated topic according
to proto (entity) annotations
Integration Ignited
0 1 2 3 4 5
Integr. Events @Wix
Beyond Wix services
Category Updated
Category Deleted
Category Created
product_category_v2_integration_events Data warehouse/Lake
Search Engine
Integration Ignited
Integr. Events @Wix
Beyond Wix services
Category Updated
Category Deleted
Category Created
product_category_v2_integration_events Data warehouse/Lake
Search Engine
External Wix APIs
Integration Ignited
Integr. Events @Wix
What We Gained vs. What We Sacrificed
Single aggregate and integration events only
Integration Ignited
Platform
openness
Developer
velocity
Improved
resilience
The
Gains:
What We Gained vs. What We Sacrificed
Single aggregate and integration events only
Integration Ignited
Platform
openness
Developer
velocity
Improved
resilience
The
Gains:
Immediate
consistency Domain clarity
Operational
simplicity
The
Sacrifices:
Single Aggregate
Performance Challenge
Integration Ignited
Single Aggregate Performance Challenge
View Product
HTTP
Product
Service
Category?
HTTP RPC
Available?
HTTP RPC
On sale?
HTTP RPC
Category
Service
Inventory
Service
Ribbons
Service
Integration Ignited
Discount?
HTTP RPC
Promotions
Service
Discount?
HTTP RPC
Single Aggregate Performance Challenge
View Product
HTTP
Product
Service
Price?
HTTP RPC
Available?
HTTP RPC
On sale?
HTTP RPC
Category
Service
Inventory
Service
Ribbons
Service
Integration Ignited
Promotions
Service
`
Update Embedded Entity
Integration Ignited
Product Service Category
Service
message Product {
option (entity) = {fqdn: "...v3.product"};
google.protobuf.StringValue id = 1;
google.protobuf.Int64Value revision = 2;
...
repeated CategoryView categoryView = 25;
...
}
Product Entity
CategoryUpdated
Update
Category
Perf Challenge
`
Update Embedded Entities
Integration Ignited
Product
Service
Inventory
Service
Category
Service
Product Entity
Update
*
CategoryUpdated
PromotionUpdated
Ribbons
Service
Promotions
Service
RibbonUpdated
InventoryUpdated
Perf Challenge
70% faster page load time
View Product
HTTP
Product
Service
Price+Available+
OnSale+Discount?
Category
Service
Inventory
Service
Ribbons
Service
Integration Ignited
Promotions
Service
Perf Challenge
Entity Projection
Operational Challenges
Integration Ignited
Entity Projection Operational Challenges
Integration Ignited
Event Volume Explosion
Integration Ignited
Consumer Lags
Entity Projection Operational Challenges
Event Volume Explosion
Integration Ignited
Consumer Lags
Out-of-order &
Processing failures
Entity Projection Operational Challenges
Event Volume Explosion
Resolution: Event Volume Explosion
Integration Ignited
0 1 2 3 4 5
Event header based Filtering
Filter: ignore created events
Ops Challenges
Resolution: Event Volume Explosion
Integration Ignited
Event header based Filtering
Consumer Proxy RPC
Ops Challenges
Resolution: Consumer lags
Integration Ignited
Alerts
Ops Challenges
Resolution: Consumer lags
Integration Ignited
Alerts
Auto-scaling, adding partitions
Ops Challenges
Resolution: Consumer lags
Integration Ignited
Alerts
Auto-scaling, adding partitions
Smart Cache
Cache
Currency
Service
Ops Challenges
Resolution: Out-of-order & Processing failures
Integration Ignited
Events Sequence numbers & Versioning
0 1 2 3 4 5
23 22
Ops Challenges
Resolution: Out-of-order & Processing failures
Integration Ignited
Events Sequence numbers & Versioning
Idempotency guards with temp. Key storage
withIdempotency {
<event handler>
}
Idempotency key
TTL
Ops Challenges
Resolution:
Out-of-order
& Processing failures
Integration Ignited
Events Sequence numbers & Versioning
Idempotency guards with temp. Key storage
Auto detection and healing method
Ops Challenges
Conclusions
Integration Ignited
Dev Velocity
Integration Ignited
Why This Path Made Sense for Wix
Extensibility
Consistency
Operational
Simplicity
Resilience
Dev Velocity
Integration Ignited
Why This Path Made Sense for Wix
Extensibility
Consistency
Operational
Simplicity
Resilience
The Wisdom: Lessons for Your Journey
Integration Ignited
The Wisdom: Lessons for Your Journey
Integration Ignited
1
Arch. exist in context
The Wisdom: Lessons for Your Journey
Integration Ignited
1
Be explicit about
your priorities
2
Arch. exist in context
The Wisdom: Lessons for Your Journey
Integration Ignited
1
2
3
Arch. exist in context
Be explicit about
your priorities
Invest in
cost
mitigation
The Wisdom: Lessons for Your Journey
Integration Ignited
1
2
3
Break rules deliberately
4
Arch. exist in context
Be explicit about
your priorities
Invest in
cost
mitigation
Our journey taught us…
Integration Ignited
Wix North Star
Wix North Star
Our journey taught us…
Integration Ignited
Wix North Star
Diverge from convention when
your context demands it.
Break rules deliberately,
not accidentally.
Wix North Star
Thank you
Q & A
www.natansil.com
@NSilnitsky
@natan-s.bsky.social
👉 slideshare.net/NatanSilnitsky

More Related Content

PPTX
Tech Winter Break - GDG OnCampus International Institute of Information Techn...
PDF
Bermon Painter - Rapid Prototyping with Vue.js - Codemotion Rome 2019
PPTX
Fire up your mobile app!
PPTX
Building Digital Workplaces using Office 365 Content Services
PDF
Spring Cloud Function & Project riff #jsug
PPTX
Code first in the cloud: going serverless with Azure
PDF
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
PDF
2022.11, UiPath Release 2022.10 Features and Highlights.pdf
Tech Winter Break - GDG OnCampus International Institute of Information Techn...
Bermon Painter - Rapid Prototyping with Vue.js - Codemotion Rome 2019
Fire up your mobile app!
Building Digital Workplaces using Office 365 Content Services
Spring Cloud Function & Project riff #jsug
Code first in the cloud: going serverless with Azure
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
2022.11, UiPath Release 2022.10 Features and Highlights.pdf

Similar to Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric (20)

PPTX
slides.pptx
PDF
Preparing for Data Residency and Custom Domains
PPTX
SPS Zurich 2018 - Azure Logic Apps: the new workflow engine
PDF
Data Ingestion in Big Data and IoT platforms
PDF
Azure from Rookie to DevStart
PPSX
BI on Cloud - Perspective from SAP
PPTX
An api is not "yet another feature"
PPTX
Office 365 for Developers
PDF
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
PPTX
AppSheet Overview -- DIY Mobile App Platform
PDF
Building event driven serverless apps by Danilo Poccia at Codemotion Dubai
PDF
Why and How SmartNews uses SaaS?
KEY
Integrating Google Analytics in Android apps
PPTX
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
PDF
Final gatsby + wagtail - Inclusive product week
PPTX
Integrating SaaS application using Microsoft’s Azure App Service Platform
PDF
2022 apidays LIVE Helsinki & North_Event API Products – Maximizing the Value ...
PDF
Evolve Your Web Applications with Microsoft Azure
PDF
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
PPT
Web 2.0 Tech Talk
slides.pptx
Preparing for Data Residency and Custom Domains
SPS Zurich 2018 - Azure Logic Apps: the new workflow engine
Data Ingestion in Big Data and IoT platforms
Azure from Rookie to DevStart
BI on Cloud - Perspective from SAP
An api is not "yet another feature"
Office 365 for Developers
WCF Multi Layer Services Development with Entity Framework 4th Edition Editio...
AppSheet Overview -- DIY Mobile App Platform
Building event driven serverless apps by Danilo Poccia at Codemotion Dubai
Why and How SmartNews uses SaaS?
Integrating Google Analytics in Android apps
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
Final gatsby + wagtail - Inclusive product week
Integrating SaaS application using Microsoft’s Azure App Service Platform
2022 apidays LIVE Helsinki & North_Event API Products – Maximizing the Value ...
Evolve Your Web Applications with Microsoft Azure
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Web 2.0 Tech Talk
Ad

More from Natan Silnitsky (20)

PDF
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
PDF
Reinventing Microservices Efficiency and Innovation with Single-Runtime
PDF
Async Excellence Unlocking Scalability with Kafka - Devoxx Greece
PDF
Wix Single-Runtime - Conquering the multi-service challenge
PDF
WeAreDevs - Supercharge Your Developer Journey with Tiny Atomic Habits
PDF
Effective Strategies for Wix's Scaling challenges - GeeCon
PDF
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
PDF
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
PDF
DevSum - Lessons Learned from 2000 microservices
PDF
GeeCon - Lessons Learned from 2000 microservices
PDF
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
PDF
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
PDF
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
PDF
Lessons Learned from 2000 Event Driven Microservices - Reversim
PDF
Devoxx Ukraine - Kafka based Global Data Mesh
PDF
Devoxx UK - Migrating to Multi Cluster Managed Kafka
PDF
Dev Days Europe - Kafka based Global Data Mesh at Wix
PDF
Kafka Summit London - Kafka based Global Data Mesh at Wix
PDF
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
PDF
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
Async-ronizing Success at Wix - Patterns for Seamless Microservices - Devoxx ...
Reinventing Microservices Efficiency and Innovation with Single-Runtime
Async Excellence Unlocking Scalability with Kafka - Devoxx Greece
Wix Single-Runtime - Conquering the multi-service challenge
WeAreDevs - Supercharge Your Developer Journey with Tiny Atomic Habits
Effective Strategies for Wix's Scaling challenges - GeeCon
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
DevSum - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservices
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
Lessons Learned from 2000 Event Driven Microservices - Reversim
Devoxx Ukraine - Kafka based Global Data Mesh
Devoxx UK - Migrating to Multi Cluster Managed Kafka
Dev Days Europe - Kafka based Global Data Mesh at Wix
Kafka Summit London - Kafka based Global Data Mesh at Wix
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
Ad

Recently uploaded (20)

PDF
System and Network Administration Chapter 2
PDF
Digital Strategies for Manufacturing Companies
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
ai tools demonstartion for schools and inter college
PPTX
history of c programming in notes for students .pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Odoo POS Development Services by CandidRoot Solutions
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Understanding Forklifts - TECH EHS Solution
PDF
top salesforce developer skills in 2025.pdf
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
System and Network Administraation Chapter 3
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Odoo Companies in India – Driving Business Transformation.pdf
System and Network Administration Chapter 2
Digital Strategies for Manufacturing Companies
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
ai tools demonstartion for schools and inter college
history of c programming in notes for students .pptx
Softaken Excel to vCard Converter Software.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Odoo POS Development Services by CandidRoot Solutions
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Understanding Forklifts - TECH EHS Solution
top salesforce developer skills in 2025.pdf
How Creative Agencies Leverage Project Management Software.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
CHAPTER 2 - PM Management and IT Context
How to Migrate SBCGlobal Email to Yahoo Easily
System and Network Administraation Chapter 3
Which alternative to Crystal Reports is best for small or large businesses.pdf
ManageIQ - Sprint 268 Review - Slide Deck
Odoo Companies in India – Driving Business Transformation.pdf

Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric

  • 1. Integration Ignited Redefining Event-Driven Architecture at Wix Natan Silnitsky, Wix Engineering June 2025
  • 5. AGENDA Wix Unique Dev Platform Integration Ignited
  • 6. DDD - Wix vs. Traditional AGENDA Wix Unique Dev Platform Integration Ignited
  • 7. DDD - Wix vs. Traditional Integration Events at Wix AGENDA Wix Unique Dev Platform Challenges Takeaways Integration Ignited
  • 9. Internal Wix Developer External App Developer External Wix Site Developer Wix Open Platform Integration Ignited Bookings Events Forms Loyalty Stores Rewards Tickets Policies Checkout Time Slots Schemas Sub missions Guests Coupons Calendar Orders Waitlist Cart Catalog Programs
  • 10. Wix Open Platform - infinitely extensible Integration Ignited Wix service API 3rd party
  • 11. Wix Open Platform - infinitely extensible Integration Ignited Wix service 3rd party API SPI 3rd party
  • 12. Wix Open Platform - infinitely extensible Integration Ignited Wix service 3rd party API SPI 3rd party 3rd party
  • 13. Nile - Backend Platform - accelerating dev velocity Integration Ignited Java Scala Nile Wix Dev Platform
  • 14. Integration Ignited Java Scala Nile Nile - Backend Platform - accelerating dev velocity Authentication & Authorization Secrets management Data Access Layer Full Testing Support Regulation (GDPR, …) … Wix Dev Platform
  • 15. Integration Ignited Java Scala Nile Nile - Backend Platform - accelerating dev velocity Sub missions Policies Payment Rewards Tickets Orders Product Checkout Calendar Waitlist Programs … Wix Dev Platform
  • 16. API First with Protobuf Integration Ignited Wix Dev Platform
  • 17. API First with Protobuf Integration Ignited Product Catalog API CreateProduct ReadProduct UpdateProduct DeleteProduct Wix Dev Platform
  • 18. API First with Protobuf Integration Ignited CreateProduct ReadProduct UpdateProduct DeleteProduct Product Created Product Updated Product Deleted Product Catalog API Wix Dev Platform
  • 19. API First with Protobuf Integration Ignited CreateProduct ReadProduct UpdateProduct DeleteProduct Product Created Product Updated Product Deleted Product Catalog API Wix Dev Platform
  • 20. API First with Protobuf Integration Ignited CreateProduct ReadProduct UpdateProduct DeleteProduct Product Created Product Updated Product Deleted Product Catalog API Wix Dev Platform
  • 21. API First with Protobuf Integration Ignited CreateProduct ReadProduct UpdateProduct DeleteProduct Product Created Product Updated Product Deleted Product Catalog API Wix Dev Platform
  • 22. API First with Protobuf Integration Ignited MCP Server CreateProduct ReadProduct UpdateProduct DeleteProduct Product Created Product Updated Product Deleted Product Catalog API Wix Dev Platform
  • 24. Traditional DDD Multiple Aggregates per Service Integration Ignited Product Catalog Bounded Context + Service Product Aggregate Inventory Aggregate Category Aggregate
  • 25. Traditional DDD Multiple Aggregates per Service Integration Ignited Product Catalog Bounded Context + Service Product Aggregate Category Aggregate Inventory Aggregate
  • 26. Traditional DDD Multiple Aggregates per Service Integration Ignited Wix approach Single-Aggregate Services Product Service Inventory Service Category Service Product Catalog Bounded Context + Service Product Aggregate Category Aggregate Inventory Aggregate
  • 27. Integration Ignited Accelerated Developer Velocity Product Service Inventory Service Category Service Auto Generate Product Entity CRUD methods Automatic assertions for Inventory entity tests DDD Traditional/Wix
  • 28. Integration Ignited Improved System Resilience Product Service Inventory Service Category Service Category service is down Design: Doesn’t affect product + inventory DDD Traditional/Wix
  • 29. Integration Ignited Product Service Product Aggregate Inventory Aggregate Category Aggregate Domain Events In-process, core domain rules Integration Events Async, external systems Eventual consistent DDD Traditional/Wix
  • 30. Integration Ignited Product Service Product Aggregate Inventory Aggregate Category Aggregate Domain Events In-process, core domain rules Wix Orders service Integration Events Async, external systems Eventual consistent DDD Traditional/Wix
  • 31. Integration Ignited At Wix Every Event is an Integration Event Product Service Inventory Service Category Service Orders service DDD Traditional/Wix
  • 32. Traditional (Domain Events) Integration Ignited Product Aggregate Category Aggregate Category Rename Product Catalog Service 1. Category Renamed DDD Traditional/Wix
  • 33. Traditional (Domain Events) Integration Ignited Product Aggregate Category Aggregate Product Catalog Service 1. Category Rename 3. Commit txn 2. Update product Category Rename DDD Traditional/Wix
  • 34. Traditional (Domain Events) Integration Ignited Wix way (Integration Events) Product Service Category Service Product Aggregate Category Aggregate Product Catalog Service 1. Category Changed 3. Commit txn 2. Update product 1. Rename Category & Commit Category Rename DDD Traditional/Wix
  • 35. Integration Ignited Wix way (Integration Events) Traditional (Domain Events) Product Service Category Service Product Aggregate Category Aggregate Product Catalog Service 1. Category Changed 3. Commit txn 2. Update product 1. Rename Category & Commit 2. Category updated Category Rename DDD Traditional/Wix
  • 36. Integration Ignited Wix way (Integration Events) Product Service Category Service 1. Rename Category & Commit 2. Category updated 3. Update product & commit Traditional (Domain Events) Product Aggregate Category Aggregate Product Catalog Service 1. Category Changed 3. Commit txn 2. Update product Category Rename DDD Traditional/Wix
  • 37. Integration Events Implemented at Wix Integration Ignited
  • 38. Persist and Publish Integration Event Category Service CreateCategory UpdateCategory DeleteCategory Category Document Store 1 2 Category Created Category Updated Category Deleted Integration Ignited Integr. Events @Wix
  • 39. Integration Events Protobuf Definitions Integration Ignited message ProductCategory { option (entity) = {fqdn: "...v2.ProductCatgry"}; google.protobuf.StringValue id = 1; ... google.protobuf.StringValue name = 5; ... } ● payload based on proto definition of the main service entity Integr. Events @Wix
  • 40. Integration Events Protobuf Definitions Integration Ignited message ProductCategory { option (entity) = {fqdn: "...v2.ProductCatgry"}; google.protobuf.StringValue id = 1; ... google.protobuf.StringValue name = 5; ... } message IntegrationEvent { string id = 1; ... oneof body { EntityCreatedEvent created_event = 7; ... } ... int64 entity_event_sequence = 11; ● payload based on proto definition of the main service entity ● inside a standard envelope also defined in proto Integr. Events @Wix
  • 41. Auto Topic Creation for Integration Events Category Updated Category Deleted Category Created product_category_v2_integration_events Integration Ignited 0 1 2 3 4 5 Integr. Events @Wix
  • 42. message ProductCategory { option (entity) = {fqdn: "...v2.ProductCatgry"}; google.protobuf.StringValue id = 1; ... google.protobuf.StringValue name = 5; ... } Auto Topic Creation for Integration Events Category Updated Category Deleted Category Created product_category_v2_integration_events Auto-generated topic according to proto (entity) annotations Integration Ignited 0 1 2 3 4 5 Integr. Events @Wix
  • 43. Beyond Wix services Category Updated Category Deleted Category Created product_category_v2_integration_events Data warehouse/Lake Search Engine Integration Ignited Integr. Events @Wix
  • 44. Beyond Wix services Category Updated Category Deleted Category Created product_category_v2_integration_events Data warehouse/Lake Search Engine External Wix APIs Integration Ignited Integr. Events @Wix
  • 45. What We Gained vs. What We Sacrificed Single aggregate and integration events only Integration Ignited Platform openness Developer velocity Improved resilience The Gains:
  • 46. What We Gained vs. What We Sacrificed Single aggregate and integration events only Integration Ignited Platform openness Developer velocity Improved resilience The Gains: Immediate consistency Domain clarity Operational simplicity The Sacrifices:
  • 48. Single Aggregate Performance Challenge View Product HTTP Product Service Category? HTTP RPC Available? HTTP RPC On sale? HTTP RPC Category Service Inventory Service Ribbons Service Integration Ignited Discount? HTTP RPC Promotions Service
  • 49. Discount? HTTP RPC Single Aggregate Performance Challenge View Product HTTP Product Service Price? HTTP RPC Available? HTTP RPC On sale? HTTP RPC Category Service Inventory Service Ribbons Service Integration Ignited Promotions Service
  • 50. ` Update Embedded Entity Integration Ignited Product Service Category Service message Product { option (entity) = {fqdn: "...v3.product"}; google.protobuf.StringValue id = 1; google.protobuf.Int64Value revision = 2; ... repeated CategoryView categoryView = 25; ... } Product Entity CategoryUpdated Update Category Perf Challenge
  • 51. ` Update Embedded Entities Integration Ignited Product Service Inventory Service Category Service Product Entity Update * CategoryUpdated PromotionUpdated Ribbons Service Promotions Service RibbonUpdated InventoryUpdated Perf Challenge
  • 52. 70% faster page load time View Product HTTP Product Service Price+Available+ OnSale+Discount? Category Service Inventory Service Ribbons Service Integration Ignited Promotions Service Perf Challenge
  • 54. Entity Projection Operational Challenges Integration Ignited Event Volume Explosion
  • 55. Integration Ignited Consumer Lags Entity Projection Operational Challenges Event Volume Explosion
  • 56. Integration Ignited Consumer Lags Out-of-order & Processing failures Entity Projection Operational Challenges Event Volume Explosion
  • 57. Resolution: Event Volume Explosion Integration Ignited 0 1 2 3 4 5 Event header based Filtering Filter: ignore created events Ops Challenges
  • 58. Resolution: Event Volume Explosion Integration Ignited Event header based Filtering Consumer Proxy RPC Ops Challenges
  • 59. Resolution: Consumer lags Integration Ignited Alerts Ops Challenges
  • 60. Resolution: Consumer lags Integration Ignited Alerts Auto-scaling, adding partitions Ops Challenges
  • 61. Resolution: Consumer lags Integration Ignited Alerts Auto-scaling, adding partitions Smart Cache Cache Currency Service Ops Challenges
  • 62. Resolution: Out-of-order & Processing failures Integration Ignited Events Sequence numbers & Versioning 0 1 2 3 4 5 23 22 Ops Challenges
  • 63. Resolution: Out-of-order & Processing failures Integration Ignited Events Sequence numbers & Versioning Idempotency guards with temp. Key storage withIdempotency { <event handler> } Idempotency key TTL Ops Challenges
  • 64. Resolution: Out-of-order & Processing failures Integration Ignited Events Sequence numbers & Versioning Idempotency guards with temp. Key storage Auto detection and healing method Ops Challenges
  • 66. Dev Velocity Integration Ignited Why This Path Made Sense for Wix Extensibility Consistency Operational Simplicity Resilience
  • 67. Dev Velocity Integration Ignited Why This Path Made Sense for Wix Extensibility Consistency Operational Simplicity Resilience
  • 68. The Wisdom: Lessons for Your Journey Integration Ignited
  • 69. The Wisdom: Lessons for Your Journey Integration Ignited 1 Arch. exist in context
  • 70. The Wisdom: Lessons for Your Journey Integration Ignited 1 Be explicit about your priorities 2 Arch. exist in context
  • 71. The Wisdom: Lessons for Your Journey Integration Ignited 1 2 3 Arch. exist in context Be explicit about your priorities Invest in cost mitigation
  • 72. The Wisdom: Lessons for Your Journey Integration Ignited 1 2 3 Break rules deliberately 4 Arch. exist in context Be explicit about your priorities Invest in cost mitigation
  • 73. Our journey taught us… Integration Ignited Wix North Star Wix North Star
  • 74. Our journey taught us… Integration Ignited Wix North Star Diverge from convention when your context demands it. Break rules deliberately, not accidentally. Wix North Star
  • 75. Thank you Q & A www.natansil.com @NSilnitsky @natan-s.bsky.social 👉 slideshare.net/NatanSilnitsky