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

More from Natan Silnitsky (20)

Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Natan Silnitsky
 
DevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservicesDevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservices
Natan Silnitsky
 
GeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservicesGeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservices
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Migrating to Multi Cluster Managed Kafka - ApacheKafkaILMigrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Natan Silnitsky
 
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven MicroservicesWix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Natan Silnitsky
 
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesBuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
Natan Silnitsky
 
Lessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - ReversimLessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - Reversim
Natan Silnitsky
 
Devoxx Ukraine - Kafka based Global Data Mesh
Devoxx Ukraine - Kafka based Global Data MeshDevoxx Ukraine - Kafka based Global Data Mesh
Devoxx Ukraine - Kafka based Global Data Mesh
Natan Silnitsky
 
Devoxx UK - Migrating to Multi Cluster Managed Kafka
Devoxx UK - Migrating to Multi Cluster Managed KafkaDevoxx UK - Migrating to Multi Cluster Managed Kafka
Devoxx UK - Migrating to Multi Cluster Managed Kafka
Natan Silnitsky
 
Dev Days Europe - Kafka based Global Data Mesh at Wix
Dev Days Europe - Kafka based Global Data Mesh at WixDev Days Europe - Kafka based Global Data Mesh at Wix
Dev Days Europe - Kafka based Global Data Mesh at Wix
Natan Silnitsky
 
Kafka Summit London - Kafka based Global Data Mesh at Wix
Kafka Summit London - Kafka based Global Data Mesh at WixKafka Summit London - Kafka based Global Data Mesh at Wix
Kafka Summit London - Kafka based Global Data Mesh at Wix
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Natan Silnitsky
 
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
5 Takeaways from Migrating a Library to Scala 3 - Scala Love5 Takeaways from Migrating a Library to Scala 3 - Scala Love
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Migrating to Multi Cluster Managed Kafka - DevopStars 2022Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Natan Silnitsky
 
Open sourcing a successful internal project - Reversim 2021
Open sourcing a successful internal project - Reversim 2021Open sourcing a successful internal project - Reversim 2021
Open sourcing a successful internal project - Reversim 2021
Natan Silnitsky
 
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
Natan Silnitsky
 
Advanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code MotionAdvanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code Motion
Natan Silnitsky
 
Advanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Advanced Caching Patterns used by 2000 microservices - Devoxx UkraineAdvanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Advanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Natan Silnitsky
 
Advanced Microservices Caching Patterns - Devoxx UK
Advanced Microservices Caching Patterns - Devoxx UKAdvanced Microservices Caching Patterns - Devoxx UK
Advanced Microservices Caching Patterns - Devoxx UK
Natan Silnitsky
 
Battle-tested event-driven patterns for your microservices architecture - Sca...
Battle-tested event-driven patterns for your microservices architecture - Sca...Battle-tested event-driven patterns for your microservices architecture - Sca...
Battle-tested event-driven patterns for your microservices architecture - Sca...
Natan Silnitsky
 
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Workflow Engines & Event Streaming Brokers - Can they work together? [Current...
Natan Silnitsky
 
DevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservicesDevSum - Lessons Learned from 2000 microservices
DevSum - Lessons Learned from 2000 microservices
Natan Silnitsky
 
GeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservicesGeeCon - Lessons Learned from 2000 microservices
GeeCon - Lessons Learned from 2000 microservices
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Migrating to Multi Cluster Managed Kafka - ApacheKafkaILMigrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Migrating to Multi Cluster Managed Kafka - ApacheKafkaIL
Natan Silnitsky
 
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven MicroservicesWix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Wix+Confluent Meetup - Lessons Learned from 2000 Event Driven Microservices
Natan Silnitsky
 
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven MicroservicesBuildStuff - Lessons Learned from 2000 Event Driven Microservices
BuildStuff - Lessons Learned from 2000 Event Driven Microservices
Natan Silnitsky
 
Lessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - ReversimLessons Learned from 2000 Event Driven Microservices - Reversim
Lessons Learned from 2000 Event Driven Microservices - Reversim
Natan Silnitsky
 
Devoxx Ukraine - Kafka based Global Data Mesh
Devoxx Ukraine - Kafka based Global Data MeshDevoxx Ukraine - Kafka based Global Data Mesh
Devoxx Ukraine - Kafka based Global Data Mesh
Natan Silnitsky
 
Devoxx UK - Migrating to Multi Cluster Managed Kafka
Devoxx UK - Migrating to Multi Cluster Managed KafkaDevoxx UK - Migrating to Multi Cluster Managed Kafka
Devoxx UK - Migrating to Multi Cluster Managed Kafka
Natan Silnitsky
 
Dev Days Europe - Kafka based Global Data Mesh at Wix
Dev Days Europe - Kafka based Global Data Mesh at WixDev Days Europe - Kafka based Global Data Mesh at Wix
Dev Days Europe - Kafka based Global Data Mesh at Wix
Natan Silnitsky
 
Kafka Summit London - Kafka based Global Data Mesh at Wix
Kafka Summit London - Kafka based Global Data Mesh at WixKafka Summit London - Kafka based Global Data Mesh at Wix
Kafka Summit London - Kafka based Global Data Mesh at Wix
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Migrating to Multi Cluster Managed Kafka - Conf42 - CloudNative
Natan Silnitsky
 
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
5 Takeaways from Migrating a Library to Scala 3 - Scala Love5 Takeaways from Migrating a Library to Scala 3 - Scala Love
5 Takeaways from Migrating a Library to Scala 3 - Scala Love
Natan Silnitsky
 
Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Migrating to Multi Cluster Managed Kafka - DevopStars 2022Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Migrating to Multi Cluster Managed Kafka - DevopStars 2022
Natan Silnitsky
 
Open sourcing a successful internal project - Reversim 2021
Open sourcing a successful internal project - Reversim 2021Open sourcing a successful internal project - Reversim 2021
Open sourcing a successful internal project - Reversim 2021
Natan Silnitsky
 
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
How to successfully manage a ZIO fiber’s lifecycle - Functional Scala 2021
Natan Silnitsky
 
Advanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code MotionAdvanced Caching Patterns used by 2000 microservices - Code Motion
Advanced Caching Patterns used by 2000 microservices - Code Motion
Natan Silnitsky
 
Advanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Advanced Caching Patterns used by 2000 microservices - Devoxx UkraineAdvanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Advanced Caching Patterns used by 2000 microservices - Devoxx Ukraine
Natan Silnitsky
 
Advanced Microservices Caching Patterns - Devoxx UK
Advanced Microservices Caching Patterns - Devoxx UKAdvanced Microservices Caching Patterns - Devoxx UK
Advanced Microservices Caching Patterns - Devoxx UK
Natan Silnitsky
 
Battle-tested event-driven patterns for your microservices architecture - Sca...
Battle-tested event-driven patterns for your microservices architecture - Sca...Battle-tested event-driven patterns for your microservices architecture - Sca...
Battle-tested event-driven patterns for your microservices architecture - Sca...
Natan Silnitsky
 

Recently uploaded (20)

dp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdfdp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdf
pravkumarbiz
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Porting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 WebinarPorting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
Key AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence CompaniesKey AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence Companies
Mypcot Infotech
 
Migrating to Azure Cosmos DB the Right Way
Migrating to Azure Cosmos DB the Right WayMigrating to Azure Cosmos DB the Right Way
Migrating to Azure Cosmos DB the Right Way
Alexander (Alex) Komyagin
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
How the US Navy Approaches DevSecOps with Raise 2.0
How the US Navy Approaches DevSecOps with Raise 2.0How the US Navy Approaches DevSecOps with Raise 2.0
How the US Navy Approaches DevSecOps with Raise 2.0
Anchore
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework
Angelo Theodorou
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Integrating Survey123 and R&H Data Using FME
Integrating Survey123 and R&H Data Using FMEIntegrating Survey123 and R&H Data Using FME
Integrating Survey123 and R&H Data Using FME
Safe Software
 
Automating Map Production With FME and Python
Automating Map Production With FME and PythonAutomating Map Production With FME and Python
Automating Map Production With FME and Python
Safe Software
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
How Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines OperationsHow Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines Operations
Insurance Tech Services
 
Who will create the languages of the future?
Who will create the languages of the future?Who will create the languages of the future?
Who will create the languages of the future?
Jordi Cabot
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
dp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdfdp-700 exam questions sample docume .pdf
dp-700 exam questions sample docume .pdf
pravkumarbiz
 
Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4Software Engineering Process, Notation & Tools Introduction - Part 4
Software Engineering Process, Notation & Tools Introduction - Part 4
Gaurav Sharma
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Porting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 WebinarPorting Qt 5 QML Modules to Qt 6 Webinar
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
Key AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence CompaniesKey AI Technologies Used by Indian Artificial Intelligence Companies
Key AI Technologies Used by Indian Artificial Intelligence Companies
Mypcot Infotech
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
How the US Navy Approaches DevSecOps with Raise 2.0
How the US Navy Approaches DevSecOps with Raise 2.0How the US Navy Approaches DevSecOps with Raise 2.0
How the US Navy Approaches DevSecOps with Raise 2.0
Anchore
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework14 Years of Developing nCine - An Open Source 2D Game Framework
14 Years of Developing nCine - An Open Source 2D Game Framework
Angelo Theodorou
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Integrating Survey123 and R&H Data Using FME
Integrating Survey123 and R&H Data Using FMEIntegrating Survey123 and R&H Data Using FME
Integrating Survey123 and R&H Data Using FME
Safe Software
 
Automating Map Production With FME and Python
Automating Map Production With FME and PythonAutomating Map Production With FME and Python
Automating Map Production With FME and Python
Safe Software
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
How Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines OperationsHow Insurance Policy Management Software Streamlines Operations
How Insurance Policy Management Software Streamlines Operations
Insurance Tech Services
 
Who will create the languages of the future?
Who will create the languages of the future?Who will create the languages of the future?
Who will create the languages of the future?
Jordi Cabot
 
Providing Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better DataProviding Better Biodiversity Through Better Data
Providing Better Biodiversity Through Better Data
Safe Software
 
Ad

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