SlideShare a Scribd company logo
1 of 83
Download to read offline
From ruby on rails to event
driven micro-apps
lessons learned from building microservices @ Fiverr
#indoerswetrust
Hi there!
● Alex Litvak
● 2 years ago - TLV --> NYC
● Fresh daddy
● 12 years of software
engineering
● Group manager @ Fiverr
● Past - fintech, IDF
#indoerswetrust
● Largest marketplace for
digital services (gigs) in
the world
● Service As a Product
● 100+ categories
● A new transaction every 5
seconds
● A new service (gig) is
created every 4 minutes
Who are we?
#indoerswetrust
Programming languages
#indoerswetrust
Persistence
#indoerswetrust
Messaging & Data integration
#indoerswetrust
Ops
#indoerswetrust
Autonomous
cross functional task forces
● ~15 Task Forces
● 2 engineering sites
● Loosely coupled, highly aligned
#indoerswetrust
Our Story of Building Microservices
From an architectural point of view
#indoerswetrust
Chapter 1: The Monolith
#indoerswetrust
● 2010
● RoR + MySQL +
memcached
● Fast bootstrapping
● Easy to test and
deploy
The monolith
#indoerswetrust
● Models lose cohesiveness
● Coupled, slowed down teams
● No Ownership
● Fear of deploy
● Long running tests
● No way to scale parts of the system
● More data -> slower queries ->
longer response times
But, the monolith “matures”...
#indoerswetrust
We needed a solution that can scale
#indoerswetrust
#indoerswetrust
Chapter 2: The Chimera
#indoerswetrust
Chimera: a fire-breathing she-monster in Greek mythology
having a lion's head, a goat's body, and a serpent's tail
A Fiverr microservice template consisting of
(1) a REST API endpoint for synchronous reads
(2) a RabbitMQ consumer for asynchronous writes
Residing in the same Repo, sharing the same business
logic code
#indoerswetrust
- Very popular general
purpose message
broker
- point to point,
request/reply and
pub-sub
communication styles
patterns
- smart broker / dumb
consumer model
RabbitMQ
#indoerswetrust
Reading Data
#indoerswetrust
Writing Data
#indoerswetrust
Other out of the box chimera “features”
- Various DB connectors
- Logging & Monitoring
- Write side fail safety
#indoerswetrust
- Read side failure - we can just refresh the
page….
- Write side failure - can have business
implications
Write Side Fail Safety
#indoerswetrust
#indoerswetrust
To requeue events:
Idempotency + one transaction
#indoerswetrust
First Services -
“Service for
every entity”
concept
#indoerswetrust
Services per entity
becomes a
bloated API
for every feature
and lose their
cohesiveness
#indoerswetrust
Services per entity are
services with blurry
boundaries and loose
team ownership
#indoerswetrust
So, How should have we split the monolith?
#indoerswetrust
Let’s talk about bounded contexts
- DDD deals with large
models by dividing
them into different
Bounded Contexts
- Boundaries are usually
defined by
- Context &
meaning
- Business
processes /
activities source: https://martinfowler.com/bliki/BoundedContext.html
#indoerswetrust
Moving to services based on business processes / activities.
Not based on Entities.
#indoerswetrust
Sometimes, easier said
than done...
#indoerswetrust
Well defined service boundaries require access to shared
data.
#indoerswetrust
And sometimes to data from a specific
domain...
#indoerswetrust
How would our services share data?
#indoerswetrust
- Coupling at the lowest level
- Altering same data
- Service not optimizing storage
for unique usage
- Data computation cannot scale
Share a database
#indoerswetrust
- ServiceA API changes due to
serviceB needs
- REST sucks as a query
language - no way to slice and
dice data
- “Do this!” instead of “something
happened”
- Data corruption over time
Pull data,
Push Commands
#indoerswetrust
- Producer and consumer are
decoupled
- Services become reactive
- Data can be sent in the payload of the
event (OrderCreated)
BUT
- If data is persisted in each service -
lacking single point of truth
- No history of data transported - no
way of reconstructing the data
Event Driven
#indoerswetrust
Commands -> Domain Events
StartSellerVacation -> SellerVacationStarted
#indoerswetrust
#indoerswetrust
#indoerswetrust
CQRS - Command Query Responsibility Segregation
#indoerswetrust
Reads > Writes
90% 10%
#indoerswetrust
#indoerswetrust
#indoerswetrust
#indoerswetrust
Solving transporting / sharing of data between services
#indoerswetrust
Building on top of our current event
driven architecture, we started looking
into centralized persisted stream of
events to be able to have
- One source of truth
- The ability to have a history of all
events and replay them if needed
#indoerswetrust
- designed for high volume
publish-subscribe messages
and streams
- provides a durable message
store
- stores streams of records in
categories called topics
- Dumb broker, smart
consumers
- Developed originally by
LinkedIn
Apache Kafka
#indoerswetrust
Not the best idea to consume data from
domain events...
#indoerswetrust
We decided to define a new type of event
A State Change Event
#indoerswetrust
Chapter 3: The Raven
#indoerswetrust
Ravens: Can fly great distances at speed, and are used by
the maesters of Westeros to pass messages between the
castles and cities of the Seven Kingdoms
A Fiverr State Change Event describing a change in the
attributes of an entity followed by a command to a chimera.
#indoerswetrust
● Fine Grained - describe the exact change that occurred, and only that
change.
○ GigUpdated - BAD
○ GigDescriptionUpdated - GOOD
○ UserOnVacationStatusUpdated - GOOD
○ OrderDeliveryTimeUpdated - GOOD
○ OrderUpdated - BAD
● Named in a past participle verb - it’s something that already happened
● Immutable
● Contains just the information about that specific change and nothing more
Ravens - Some Guidelines
#indoerswetrust
But what we currently have is a weakly typed,
decentralized messaging contract
#indoerswetrust
Raven -
A Strongly Typed
State Change
Event
implemented using Protocol Buffers
“Protocol buffers are Google's
language-neutral, platform-neutral,
extensible mechanism for
serializing structured data.
#indoerswetrust
Raven -
A Strongly Typed,
Centralized
State Change
Event
implemented using Protocol Buffers
#indoerswetrust
Aggregate - a cluster of domain objects that can be treated
as a unit. It consists of a root entity and possibly one or more
other associated entities and value objects.
(DDD / Eric Evans)
#indoerswetrust
Mapping our domain into Aggregates & Entities.
#indoerswetrust
message Metadata {
string message_type = 1;
string event_uid = 2;
string process_uid = 3;
int32 version = 4;
string aggregate_root_id = 5;
raven.aggregate.Root aggregate_root = 6;
raven.Entity related_entity_type = 7;
string related_entity_id = 8;
int32 created_at = 9;
raven.Operation operation = 10;
}
Describing Changes in our domain in a generic way using
aggregates & entities
#indoerswetrust
-
From sending domain events
#indoerswetrust
To event sourcing on the consuming chimera
{ id: 5 }
{id: 5, title: “cool gig”}
{id: 5, title: “cool gig”,
description: “bla bla…” }
#indoerswetrust
To event sourcing everywhere - events as source of truth
{ id: 5 }
{id: 5, title: “cool gig”}
{id: 5, title: “cool gig”,
description: “bla bla…” }
{ id: 5 }
{id: 5, title: “cool gig”}
{id: 5, title: “cool gig”,
description: “bla bla…” }
#indoerswetrust
- Storage + Messaging
- Highly scalable - data is immutable,
only append operations - O(1)
- The smarts are isolated inside
each bounded context.
- The Data is shared.
The Operation on the data is
Decentralized - inside the
bounded
context of the service.
- The distributed log becomes
Single point of truth.
Sharing data between Chimeras is solved!
#indoerswetrust
But What about Domain Events?
#indoerswetrust
Domain Events must be send via Kafka to maintain
ordering
#indoerswetrust
Problems solved - Transporting and Sharing Data,
Team autonomy on the service level
Remaining Problems - Rails is a big bowl of Read side mud,
some services are still serving as both read and write side, No
team ownership
#indoerswetrust
We had a new mission - Kill Ruby on Rails.
#indoerswetrust
#indoerswetrust
Chapter 4: The Perseus
#indoerswetrust
Perseus: the greatest Greek hero and slayer of monsters
before the days of Heracles
The Fiverr Slayer of Ruby on Rails - a NodeJS based
micro-frontend structured as a ReactJS SPA for a specific
vertical (gig page, order page, checkout page)
#indoerswetrust
LOSA - Thanks,
Lots Of Small Apps
#indoerswetrust
LOSA = Lots Of Small Apps
- Each microfrontend is a web application
encapsulating a UX vertical.
- Can be implemented and owned
independently.
- Reusable FE components implemented as
NPM packages.
#indoerswetrust
Are we still
constructing
the data for
the
presentation
layer as a
composition of
service calls?
#indoerswetrust
Service data composition -> complex caching
#indoerswetrust
Chapter 4: The Phoenix
#indoerswetrust
Phoenix: a unique bird that lived for five or six centuries in
the Arabian desert, after this time burning itself on a funeral
pyre and rising from the ashes with renewed youth to live
through another cycle.
A Fiverr presentation data aggregator - consuming Ravens
and building a read optimized projection of the data
consumed by Perseus to generate views.
Can renew its data view by replaying the Ravens.
#indoerswetrust
Event Sourcing works great with
CQRS!
#indoerswetrust
Read
Optimized
Views
#indoerswetrust
#indoerswetrust
V4 Backend Architecture Explained
The Full Picture
#indoerswetrust
● Only embark on this journey if you need to really SCALE
● Give teams full autonomy but have a dedicated Architect / committee that has
the full picture in mind
● Break the monolith by bounded contexts, not data
● Prefer async communication between services
● Less technical coupling <-> Less organizational coupling
● Domain events are great to propagate notifications, not data
Lessons Learned - Summary
#indoerswetrust
● Design for failure
● Most of the time, your system will be in the “in between” phase
● Think about your reading and writing patterns - design your system
accordingly
● Prefer strongly typed, well documented messaging contracts
● If you struggle with cache invalidations -> there is another way
● Event sourcing works great with CQRS and microservices integration, but
don’t event source everything.
Lessons Learned - Summary
#indoerswetrust
Stay in touch!
alex.l@fiverr.com
https://www.linkedin.com/in/alexlitvak/
http://engineering.fiverr.com - our engineering blog
We are hiring!
https://www.fiverr.com/jobs/offices/nyc/rnd
Thank You.

More Related Content

What's hot

Quién es Quién en la Publicidad y la Comunicación Digital
Quién es Quién en la Publicidad y la Comunicación DigitalQuién es Quién en la Publicidad y la Comunicación Digital
Quién es Quién en la Publicidad y la Comunicación DigitalIAB Spain
 
CleverTap - Behavioral Analytics and User Engagement
CleverTap - Behavioral Analytics and User EngagementCleverTap - Behavioral Analytics and User Engagement
CleverTap - Behavioral Analytics and User EngagementCleverTap
 
Fynd's Pre-Series-A Pitch Deck
Fynd's Pre-Series-A Pitch DeckFynd's Pre-Series-A Pitch Deck
Fynd's Pre-Series-A Pitch DeckPranav Divakar
 
4 Effective Product Roadmap Formats
4 Effective Product Roadmap Formats4 Effective Product Roadmap Formats
4 Effective Product Roadmap FormatsUpUp Labs
 
No code, low code, machine code - Unicom 2021
No code, low code, machine code -  Unicom 2021No code, low code, machine code -  Unicom 2021
No code, low code, machine code - Unicom 2021Seb Rose
 
Redbird SaaS Pitch Deck
Redbird SaaS Pitch DeckRedbird SaaS Pitch Deck
Redbird SaaS Pitch DeckGoRedbird
 
Why WeChat slide deck
Why WeChat slide deckWhy WeChat slide deck
Why WeChat slide deckSaul Kropman
 
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisions
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisionsFollow the Leads: B2B Nurturing Strategies That Work with SiriusDecisions
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisionsCision
 
Microservice Architecture 101
Microservice Architecture 101Microservice Architecture 101
Microservice Architecture 101Kochih Wu
 
Series A pitch deck
Series A pitch deckSeries A pitch deck
Series A pitch deckAnthony Ha
 
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...DataDome
 
The Next Wave in Sales & Marketing
The Next Wave in Sales & MarketingThe Next Wave in Sales & Marketing
The Next Wave in Sales & MarketingDrift
 
Superweek 2022 - Solid & Digital Analytics Tracking
Superweek 2022 - Solid & Digital Analytics TrackingSuperweek 2022 - Solid & Digital Analytics Tracking
Superweek 2022 - Solid & Digital Analytics TrackingJente De Ridder
 
Roadmapping the Product Roadmap (ProductCamp Boston 2016)
Roadmapping the Product Roadmap (ProductCamp Boston 2016)Roadmapping the Product Roadmap (ProductCamp Boston 2016)
Roadmapping the Product Roadmap (ProductCamp Boston 2016)ProductCamp Boston
 
Product marketing org structure + interlocks
Product marketing org structure + interlocksProduct marketing org structure + interlocks
Product marketing org structure + interlocksTravis Wilkins
 
Product Marketing Inside Out
Product Marketing Inside OutProduct Marketing Inside Out
Product Marketing Inside OutHana Abaza
 
Data Science @ Instacart
Data Science @ InstacartData Science @ Instacart
Data Science @ InstacartSharath Rao
 
Digital transformation for marketing
Digital transformation for marketingDigital transformation for marketing
Digital transformation for marketingSoft Click
 
The mma indonesia_martech_report_2021
The mma indonesia_martech_report_2021The mma indonesia_martech_report_2021
The mma indonesia_martech_report_2021Social Samosa
 

What's hot (20)

Quién es Quién en la Publicidad y la Comunicación Digital
Quién es Quién en la Publicidad y la Comunicación DigitalQuién es Quién en la Publicidad y la Comunicación Digital
Quién es Quién en la Publicidad y la Comunicación Digital
 
CleverTap - Behavioral Analytics and User Engagement
CleverTap - Behavioral Analytics and User EngagementCleverTap - Behavioral Analytics and User Engagement
CleverTap - Behavioral Analytics and User Engagement
 
Fynd's Pre-Series-A Pitch Deck
Fynd's Pre-Series-A Pitch DeckFynd's Pre-Series-A Pitch Deck
Fynd's Pre-Series-A Pitch Deck
 
DCEB-DigitalStrategySession-Jan24th
DCEB-DigitalStrategySession-Jan24thDCEB-DigitalStrategySession-Jan24th
DCEB-DigitalStrategySession-Jan24th
 
4 Effective Product Roadmap Formats
4 Effective Product Roadmap Formats4 Effective Product Roadmap Formats
4 Effective Product Roadmap Formats
 
No code, low code, machine code - Unicom 2021
No code, low code, machine code -  Unicom 2021No code, low code, machine code -  Unicom 2021
No code, low code, machine code - Unicom 2021
 
Redbird SaaS Pitch Deck
Redbird SaaS Pitch DeckRedbird SaaS Pitch Deck
Redbird SaaS Pitch Deck
 
Why WeChat slide deck
Why WeChat slide deckWhy WeChat slide deck
Why WeChat slide deck
 
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisions
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisionsFollow the Leads: B2B Nurturing Strategies That Work with SiriusDecisions
Follow the Leads: B2B Nurturing Strategies That Work with SiriusDecisions
 
Microservice Architecture 101
Microservice Architecture 101Microservice Architecture 101
Microservice Architecture 101
 
Series A pitch deck
Series A pitch deckSeries A pitch deck
Series A pitch deck
 
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...
DataDome's winning deck for 2019 FIC (Cybersecurity International Forum) "Pri...
 
The Next Wave in Sales & Marketing
The Next Wave in Sales & MarketingThe Next Wave in Sales & Marketing
The Next Wave in Sales & Marketing
 
Superweek 2022 - Solid & Digital Analytics Tracking
Superweek 2022 - Solid & Digital Analytics TrackingSuperweek 2022 - Solid & Digital Analytics Tracking
Superweek 2022 - Solid & Digital Analytics Tracking
 
Roadmapping the Product Roadmap (ProductCamp Boston 2016)
Roadmapping the Product Roadmap (ProductCamp Boston 2016)Roadmapping the Product Roadmap (ProductCamp Boston 2016)
Roadmapping the Product Roadmap (ProductCamp Boston 2016)
 
Product marketing org structure + interlocks
Product marketing org structure + interlocksProduct marketing org structure + interlocks
Product marketing org structure + interlocks
 
Product Marketing Inside Out
Product Marketing Inside OutProduct Marketing Inside Out
Product Marketing Inside Out
 
Data Science @ Instacart
Data Science @ InstacartData Science @ Instacart
Data Science @ Instacart
 
Digital transformation for marketing
Digital transformation for marketingDigital transformation for marketing
Digital transformation for marketing
 
The mma indonesia_martech_report_2021
The mma indonesia_martech_report_2021The mma indonesia_martech_report_2021
The mma indonesia_martech_report_2021
 

Similar to Fiverr architecture

Scaling Production Data across Microservices
Scaling Production Data across MicroservicesScaling Production Data across Microservices
Scaling Production Data across MicroservicesErik Ashepa
 
Devopsdays State of the Union Amsterdam 2014
Devopsdays State of the Union Amsterdam 2014 Devopsdays State of the Union Amsterdam 2014
Devopsdays State of the Union Amsterdam 2014 John Willis
 
Microservices: Splitting the Monolith the DDD Way
Microservices: Splitting the Monolith the DDD WayMicroservices: Splitting the Monolith the DDD Way
Microservices: Splitting the Monolith the DDD WayErik Ashepa
 
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"ITEM
 
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloITCamp
 
Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...Chris Richardson
 
The Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixThe Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixCodemotion Tel Aviv
 
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...Docker, Inc.
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Tomoaki Sato
 
Event sourcing and CQRS: Lessons from the trenches
Event sourcing and CQRS: Lessons from the trenchesEvent sourcing and CQRS: Lessons from the trenches
Event sourcing and CQRS: Lessons from the trenchesDavid Jiménez Martínez
 
Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)Chris Richardson
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...VMware Tanzu
 
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...Casey Bisson
 
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)bridgetkromhout
 
Nosql Now 2012: MongoDB Use Cases
Nosql Now 2012: MongoDB Use CasesNosql Now 2012: MongoDB Use Cases
Nosql Now 2012: MongoDB Use CasesMongoDB
 
Why we need internet of things on Node.js
Why we need internet of things on Node.jsWhy we need internet of things on Node.js
Why we need internet of things on Node.jsIndeema Software Inc.
 
Building Microservices with Scala, functional domain models and Spring Boot -...
Building Microservices with Scala, functional domain models and Spring Boot -...Building Microservices with Scala, functional domain models and Spring Boot -...
Building Microservices with Scala, functional domain models and Spring Boot -...JAXLondon2014
 
#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...Chris Richardson
 
The art of decomposing monoliths
The art of decomposing monolithsThe art of decomposing monoliths
The art of decomposing monolithsKfir Bloch
 
Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootChris Richardson
 

Similar to Fiverr architecture (20)

Scaling Production Data across Microservices
Scaling Production Data across MicroservicesScaling Production Data across Microservices
Scaling Production Data across Microservices
 
Devopsdays State of the Union Amsterdam 2014
Devopsdays State of the Union Amsterdam 2014 Devopsdays State of the Union Amsterdam 2014
Devopsdays State of the Union Amsterdam 2014
 
Microservices: Splitting the Monolith the DDD Way
Microservices: Splitting the Monolith the DDD WayMicroservices: Splitting the Monolith the DDD Way
Microservices: Splitting the Monolith the DDD Way
 
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"
ITEM2016: Kfir bloch "The Art of Decomposing Monoliths"
 
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea SaltarelloAzure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
Azure tales: a real world CQRS and ES Deep Dive - Andrea Saltarello
 
Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...
 
The Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, WixThe Art of Decomposing Monoliths - Kfir Bloch, Wix
The Art of Decomposing Monoliths - Kfir Bloch, Wix
 
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
 
Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)Ethereum Devcon1 Report (summary writing)
Ethereum Devcon1 Report (summary writing)
 
Event sourcing and CQRS: Lessons from the trenches
Event sourcing and CQRS: Lessons from the trenchesEvent sourcing and CQRS: Lessons from the trenches
Event sourcing and CQRS: Lessons from the trenches
 
Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)
 
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
Communication Amongst Microservices: Kubernetes, Istio, and Spring Cloud - An...
 
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...
The 7 characteristics of container native infrastructure, LinuxCon/ContainerC...
 
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
Join Our Party: The Cloud Native Adventure Brigade (Kubernetes Belgium 2019)
 
Nosql Now 2012: MongoDB Use Cases
Nosql Now 2012: MongoDB Use CasesNosql Now 2012: MongoDB Use Cases
Nosql Now 2012: MongoDB Use Cases
 
Why we need internet of things on Node.js
Why we need internet of things on Node.jsWhy we need internet of things on Node.js
Why we need internet of things on Node.js
 
Building Microservices with Scala, functional domain models and Spring Boot -...
Building Microservices with Scala, functional domain models and Spring Boot -...Building Microservices with Scala, functional domain models and Spring Boot -...
Building Microservices with Scala, functional domain models and Spring Boot -...
 
#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...#JaxLondon: Building microservices with Scala, functional domain models and S...
#JaxLondon: Building microservices with Scala, functional domain models and S...
 
The art of decomposing monoliths
The art of decomposing monolithsThe art of decomposing monoliths
The art of decomposing monoliths
 
Building microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring BootBuilding microservices with Scala, functional domain models and Spring Boot
Building microservices with Scala, functional domain models and Spring Boot
 

Recently uploaded

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 

Recently uploaded (20)

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 

Fiverr architecture