SlideShare una empresa de Scribd logo
1 de 66
Decomposing
distributed monolith with
Node.jsVilius, Software Engineer
linkedin/viliusl github.com/viliusl@viliuslviliusl@wix.com
Decomposing
distributed monolith with
Node.jsVilius, Sofware Engineer
linkedin/viliusl github.com/viliusl@viliuslviliusl@wix.com
Stack of your
choice
Hi.
I am Vilius
Lithuania
Ukraine
Vilnius
Kyiv
Dnipro
Wix Engineering Locations
Israel
Tel-Aviv
Be’er Sheva
Hi.
I am Vilius
Lithuania
Vilnius
Wix Engineering Locations
AGENDA
Microservices and Distributed Monolith
(DM)
Why am I talking about DM in first place?
Short history and joys of adding 2nd stack
Decomposing Distributed Monolith
“Microservice architectural style is an
approach to developing a single
application as a suite of small services,
each running in its own process and
communicating with lightweight
mechanisms, often an HTTP resource
API”
Martin Fowler
What is a
distributed
monolith
01
A form of a binary coupling, when in
order to interact and coexist in a
given system you are required to
use a set of “official” libraries.
Client library becomes “Only” official
way to access the service
What’s wrong with it?
Nearly impossible to adopt new
architectures, languages, etc.
But hey, DRY, code reuse - it’s good
right?
“The evils of too much coupling
between services are far worse than
the problems caused by code
duplication”
Sam Newman, Building
Microservices
You potentially lose
 polyglot;
 organizational/technical decoupling;
 temporal decoupling;
Ok, so what is an alternative?
Contracts and protocols!
Yeah, but central logging, distributed
tracing, context passing….
You don’t need binary coupling
 Standardization via protocols and contracts and independent libraries
 Compliancy/contract tests
Why am I talking about
Distributed Monolith in the first
place?
02
Let’s answer to 2 following questions
honestly
Does it take months to upgrade a
library across company?
Does it take months to upgrade a
library across company?
Does it take ~ a year to introduce a
new stack?
Introducing a Node.js stack @
Wix
03
“Target or this project is to enable
coding front-end servers in Wix using
Node.js. We are aiming at the
pattern of front-end servers and
service-servers – a pattern that is
used in different companies”
Yoav Abrahami
Does not look too hard right?
But wait, there is more…
Oh, and ops contracts…
But not all is gloom and doom
Build/Deploy pipeline* already had
support/extensions for non-official
stack
*lifecycle, fryingpan, teamcity
Contract for deploying application
was defined, sane, simple*
*https://kb.wixpress.com/display/system/Docker+image+deployment+requirement
Contract for configuration was clear
and defined*
* https://kb.wixpress.com/display/chef/Wix+Artifact+Config+Templates
Underlying protocols were
standardized, business services as
proper microservices
Decomposing Distributed
Monolith
04
There were never a goal to
decompose, fix, re-architect existing
stack
The goal was to introduce new one
to be leaner, be faster, make us go
faster
Decomposition is just a side-effect if
you want to actually be leaner, go
faster
Step #1 – just do it!
// todo - talk to Vilius about that
var url = req => req.protocol + '://' + req.get('host') + req.originalUrl;
// todo - add petri enricher
return new WixRpcClientSupport(
reqContext.get(wixRequestContext),
rpcSigner.get(options.rpcSigningKey),
wixSessionEnricher.get(wixSession),
biEnricher.get(wixBi)
);
module.exports.addTo = app => {
app.get('/health/is_alive', (req, res) => res.send('Alive'));
};
Some TODOs
Proxy APIs for fat clients
Cover bare-minimum to run in
production
Step #2 – we got noticed!
const {expect} = require('chai'),
testkit = require('./support/testkit'),
http = require('wnp-http-test-client'),
jvmTestkit = require('wix-jvm-bootstrap-testkit');
describe('petri client', function () {
const app = testkit.server('petri').beforeAndAfter();
const jvmTestkit = jvmTestkit.server({
artifact: {
groupId: 'com.wixpress.node',
artifactId: 'wix-spjs-test-server'
}
}).beforeAndAfter();
it('should conduct AB test', () =>
givenABTest('scope', 'anExperiment')
.then(() => conductExperiment('anExperiment'))
.then(res => expect(res).to.equal('true'))
);
//...
});
Test-kits based off
of a core platform
 RPC
 Petri
 Session
Step #3 – time to get serious –
compliancy tests are born.
Platform agnostic
"health monitoring - protocol" >> {
"/health/is_alive responds with failure" >> {
healthTestDependency.becomeUnavailable()
eventually {
queryIsAliveAPI must beUnavailable
}
}
"/health/is_alive responds with success" >> {
healthTestDependency.becomeAvailable()
eventually {
queryIsAliveAPI must beSuccessfulWith("Alive")
}
}
"health tests executed with three retries" >> {
stabilizeInHealthyState()
healthTestDependency.becomeFlaky(consecutiveFailures = 1)
holds(samples = 100, sleep = 50.milliseconds) {
queryIsAliveAPI must beSuccessful
}
}
Generic tests
 Using testkits;
 Platform-agnostic.
class NodeComplianceE2E extends BaseComplianceE2E
with HealthAll
with SecurityAll
with I18nAll
with PetriAll
with BiAll
with WebAll
with NodeMetricKeys
with NodeBiKeys
with RpcAll {
LogbackTestHelper.initLogger()
override protected def systemUnderTest: MainService =
new LocalNodeService
}
Easy to add another
stack
 App with exposed
APIs
 Adapters
 Runner
What is a contract and what is not?
Isn’t it like… monolithic?
We are at the junction
Proxy
API’s and compliance
So that we could pass a Litmus test
“can I actually take a team of
engineers who are interested in X
becoming a legit thing in my service
and actually build something without
convincing the rest of the company?”
Ben Christensen,
Facebook
Thank You
linkedin/viliusl github.com/viliusl@viliuslviliusl@wix.com
Q&A
linkedin/viliusl github.com/viliusl@viliuslviliusl@wix.com

Más contenido relacionado

La actualidad más candente

La actualidad más candente (10)

Vert.x
Vert.xVert.x
Vert.x
 
Building microservices with vert.x 3.0
Building microservices with vert.x 3.0Building microservices with vert.x 3.0
Building microservices with vert.x 3.0
 
If Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocsIf Hemingway Wrote JavaDocs
If Hemingway Wrote JavaDocs
 
容器革命的「利」與「必」
容器革命的「利」與「必」 容器革命的「利」與「必」
容器革命的「利」與「必」
 
Vert.x for Microservices Architecture
Vert.x for Microservices ArchitectureVert.x for Microservices Architecture
Vert.x for Microservices Architecture
 
Devoxx UK 2016 - Building microservices with Vert.x
Devoxx UK 2016 - Building microservices with Vert.xDevoxx UK 2016 - Building microservices with Vert.x
Devoxx UK 2016 - Building microservices with Vert.x
 
Gaia job fair introduction
Gaia job fair introductionGaia job fair introduction
Gaia job fair introduction
 
Build automated Machine Images using Packer
Build automated Machine Images using PackerBuild automated Machine Images using Packer
Build automated Machine Images using Packer
 
Real World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.xReal World Enterprise Reactive Programming using Vert.x
Real World Enterprise Reactive Programming using Vert.x
 
Citrix TechEdge 2014 - Understanding and Troubleshooting Authentication Flow ...
Citrix TechEdge 2014 - Understanding and Troubleshooting Authentication Flow ...Citrix TechEdge 2014 - Understanding and Troubleshooting Authentication Flow ...
Citrix TechEdge 2014 - Understanding and Troubleshooting Authentication Flow ...
 

Similar a Vilius Lukošius - Decomposing distributed monolith with Node.js (WIX.com)

Java Microservices HJUG
Java Microservices HJUGJava Microservices HJUG
Java Microservices HJUG
Lana Kalashnyk
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MS
Lana Kalashnyk
 

Similar a Vilius Lukošius - Decomposing distributed monolith with Node.js (WIX.com) (20)

Architecture: When, how, and if to Adopt Microservices
Architecture: When, how, and if to Adopt MicroservicesArchitecture: When, how, and if to Adopt Microservices
Architecture: When, how, and if to Adopt Microservices
 
Intro to spring cloud &microservices by Eugene Hanikblum
Intro to spring cloud &microservices by Eugene HanikblumIntro to spring cloud &microservices by Eugene Hanikblum
Intro to spring cloud &microservices by Eugene Hanikblum
 
Java Microservices HJUG
Java Microservices HJUGJava Microservices HJUG
Java Microservices HJUG
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
 
Node.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel AvivNode.js meetup at Palo Alto Networks Tel Aviv
Node.js meetup at Palo Alto Networks Tel Aviv
 
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
Stephane Lapointe, Frank Boucher & Alexandre Brisebois: Les micro-services et...
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaS
 
Application Centric Microservices Architecture
Application Centric Microservices ArchitectureApplication Centric Microservices Architecture
Application Centric Microservices Architecture
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
 
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-nativeKubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
Kubo (Cloud Foundry Container Platform): Your Gateway Drug to Cloud-native
 
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAconCloud-native .NET-Microservices mit Kubernetes @BASTAcon
Cloud-native .NET-Microservices mit Kubernetes @BASTAcon
 
Azure Service Fabric - Hamida Rebai - CCDays
Azure Service Fabric - Hamida Rebai - CCDaysAzure Service Fabric - Hamida Rebai - CCDays
Azure Service Fabric - Hamida Rebai - CCDays
 
Connect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket PipelinesConnect + Docker + AWS = Bitbucket Pipelines
Connect + Docker + AWS = Bitbucket Pipelines
 
Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?Microservices: How loose is loosely coupled?
Microservices: How loose is loosely coupled?
 
VMworld 2013: Introducing NSX Service Composer: The New Consumption Model for...
VMworld 2013: Introducing NSX Service Composer: The New Consumption Model for...VMworld 2013: Introducing NSX Service Composer: The New Consumption Model for...
VMworld 2013: Introducing NSX Service Composer: The New Consumption Model for...
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
Weave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 RecapWeave User Group Talk - DockerCon 2017 Recap
Weave User Group Talk - DockerCon 2017 Recap
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MS
 

Más de Agile Lietuva

Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
Agile Lietuva
 
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
Agile Lietuva
 

Más de Agile Lietuva (20)

Agile Pusryčiai 2023 - „Skaitmeninė transformacija viešajame sektoriuje: nuo ...
Agile Pusryčiai 2023 - „Skaitmeninė transformacija viešajame sektoriuje: nuo ...Agile Pusryčiai 2023 - „Skaitmeninė transformacija viešajame sektoriuje: nuo ...
Agile Pusryčiai 2023 - „Skaitmeninė transformacija viešajame sektoriuje: nuo ...
 
Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
Agile Pusryčiai 2023 - „Kaip užsitikrinti projekto sėkmę dar iki projekto pra...
 
Agile pusryčiai 2023 - „Pirštas ant projekto pulso: CPO LT Agile patirtis ir ...
Agile pusryčiai 2023 - „Pirštas ant projekto pulso: CPO LT Agile patirtis ir ...Agile pusryčiai 2023 - „Pirštas ant projekto pulso: CPO LT Agile patirtis ir ...
Agile pusryčiai 2023 - „Pirštas ant projekto pulso: CPO LT Agile patirtis ir ...
 
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
Agile Pusryčiai 2023 - „Viešasis sektorius – neatskleistas inovacijų paklauso...
 
M. Kaminskas ir A. K. Remeikienė. LEAN projektas: sėkmės istorijos, iššūkiai ...
M. Kaminskas ir A. K. Remeikienė. LEAN projektas: sėkmės istorijos, iššūkiai ...M. Kaminskas ir A. K. Remeikienė. LEAN projektas: sėkmės istorijos, iššūkiai ...
M. Kaminskas ir A. K. Remeikienė. LEAN projektas: sėkmės istorijos, iššūkiai ...
 
B. den Haak. How to make OKRs Lean Again
B. den Haak. How to make OKRs Lean AgainB. den Haak. How to make OKRs Lean Again
B. den Haak. How to make OKRs Lean Again
 
D. Aitcheson. How to make forecasts that are actually accurate.
D. Aitcheson. How to make forecasts that are actually accurate.D. Aitcheson. How to make forecasts that are actually accurate.
D. Aitcheson. How to make forecasts that are actually accurate.
 
Aleksandra Černiauskienė. Misija Bloomberg: Agile pagal amerikiečius
Aleksandra Černiauskienė. Misija Bloomberg: Agile pagal amerikiečiusAleksandra Černiauskienė. Misija Bloomberg: Agile pagal amerikiečius
Aleksandra Černiauskienė. Misija Bloomberg: Agile pagal amerikiečius
 
Maija Aniskovič. Agile įtaka komandos motyvacijai.
Maija Aniskovič. Agile  įtaka komandos motyvacijai.Maija Aniskovič. Agile  įtaka komandos motyvacijai.
Maija Aniskovič. Agile įtaka komandos motyvacijai.
 
dr. E. Janiūnienė. Asociacijos Agile Lietuva atlikto Agile tyrimo pristatymas
dr. E. Janiūnienė. Asociacijos Agile Lietuva atlikto Agile tyrimo pristatymasdr. E. Janiūnienė. Asociacijos Agile Lietuva atlikto Agile tyrimo pristatymas
dr. E. Janiūnienė. Asociacijos Agile Lietuva atlikto Agile tyrimo pristatymas
 
M. Aniskovič. Laužome stereotipus: Agile gali drąsiai taikyti visi
M. Aniskovič. Laužome stereotipus: Agile gali drąsiai taikyti visiM. Aniskovič. Laužome stereotipus: Agile gali drąsiai taikyti visi
M. Aniskovič. Laužome stereotipus: Agile gali drąsiai taikyti visi
 
R. Krukonis. Reikalingas greitas rezultatas – pakeiskime projekto darbų organ...
R. Krukonis. Reikalingas greitas rezultatas – pakeiskime projekto darbų organ...R. Krukonis. Reikalingas greitas rezultatas – pakeiskime projekto darbų organ...
R. Krukonis. Reikalingas greitas rezultatas – pakeiskime projekto darbų organ...
 
M. Jovaišas. Viešojo sektoriaus lankstumas įgyvendinant transformacijas
M. Jovaišas. Viešojo sektoriaus lankstumas įgyvendinant transformacijasM. Jovaišas. Viešojo sektoriaus lankstumas įgyvendinant transformacijas
M. Jovaišas. Viešojo sektoriaus lankstumas įgyvendinant transformacijas
 
A. Kovaliov. Kas nėra Agile jaunystėje, tas neturi širdies. Kas nėra Watefall...
A. Kovaliov. Kas nėra Agile jaunystėje, tas neturi širdies. Kas nėra Watefall...A. Kovaliov. Kas nėra Agile jaunystėje, tas neturi širdies. Kas nėra Watefall...
A. Kovaliov. Kas nėra Agile jaunystėje, tas neturi širdies. Kas nėra Watefall...
 
V. Vasiliauskas. Nestandartinis atvejis: nuo Kanban prie Scrum
V. Vasiliauskas. Nestandartinis atvejis: nuo Kanban prie ScrumV. Vasiliauskas. Nestandartinis atvejis: nuo Kanban prie Scrum
V. Vasiliauskas. Nestandartinis atvejis: nuo Kanban prie Scrum
 
Leonard Vorobej. Agile projektų valdymas pradedantiesiems
Leonard Vorobej. Agile projektų valdymas pradedantiesiemsLeonard Vorobej. Agile projektų valdymas pradedantiesiems
Leonard Vorobej. Agile projektų valdymas pradedantiesiems
 
Giedrė Žemulaitytė. Agile personalo skyriaus valdyme
Giedrė Žemulaitytė. Agile personalo skyriaus valdyme Giedrė Žemulaitytė. Agile personalo skyriaus valdyme
Giedrė Žemulaitytė. Agile personalo skyriaus valdyme
 
Gabija Fatėnaitė. Agile ir Scrum turinio kūrimo ir marketingo komandose
Gabija Fatėnaitė. Agile ir Scrum turinio kūrimo ir marketingo komandoseGabija Fatėnaitė. Agile ir Scrum turinio kūrimo ir marketingo komandose
Gabija Fatėnaitė. Agile ir Scrum turinio kūrimo ir marketingo komandose
 
Gediminas Milieška. Agile kelionės: nuo transformacijos iki planavimo dideliu...
Gediminas Milieška. Agile kelionės: nuo transformacijos iki planavimo dideliu...Gediminas Milieška. Agile kelionės: nuo transformacijos iki planavimo dideliu...
Gediminas Milieška. Agile kelionės: nuo transformacijos iki planavimo dideliu...
 
Denis Vanpoucke. Agile kelionės:nuo transformacijos iki planavimo dideliu mastu
Denis Vanpoucke. Agile kelionės:nuo transformacijos iki planavimo dideliu mastuDenis Vanpoucke. Agile kelionės:nuo transformacijos iki planavimo dideliu mastu
Denis Vanpoucke. Agile kelionės:nuo transformacijos iki planavimo dideliu mastu
 

Último

1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Último (20)

Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 

Vilius Lukošius - Decomposing distributed monolith with Node.js (WIX.com)

Notas del editor

  1. Node.js is just a coincidence, there is nothing Node.js specific really – but first things first.
  2. Vilius from Vilnius; Backend engineer, 3 years with wix, currently working on Node.js @ wix. If you haven’t been to Vilnius – find a reason and come over – adding extra office space, nice town
  3. Vilius from Vilnius; Backend engineer, 3 years with wix, currently working on Node.js @ wix, feel like fullstack or nostack If you haven’t been to Vilnius – find a reason and come over – adding extra office space, nice town
  4. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. We do microservice architecture in wix – at least we have many traits of it
  5. Important part is required
  6. - Service logic drifts to client (performance considerations, optimizations, etc.); - Service api becomes opaque – no other way to consume a service but via official library;
  7. - You have to decide what to do with those 10s of clients that are sitting in your codebase; - transitive dependencies, coupling to frameworks…. - example – different threading model for a different SLA - maybe more concrete example (petri, cassandra); - technical decisions of service provider leaks into my service; Nearly impossible - hard, not feasible?
  8. And this is not smth you should prioritze in microservices architecture
  9. represents lost benefits of microservice architecture - we are paying the costs of distributed system without getting the benefits: polyglot - core technologies where a broad of engineers are familiar with; different languages/platforms serve different goals/problems; organizational/technical decoupling - teams can evolve technically without coupled collbaroation between them; temporal decoupling - can an individual team upgrade their networking - EXAMPLE? can we upgrade to newer version of 'guava'?
  10. It’s how internet is built! - Consume with any language and technology; - Iterate and change over time; - No dependency on service implementation;
  11. You don’t need official libraries for that
  12. Standartization… - you can choose to use or reimplement; Compliancy/contract… - automated tools to verify you compliance/gatekeeper to production.
  13. jackson
  14. - disregarding that engineers doing that are not really bright - And this is what I'm gonna concentrate on
  15. - It started 2 years ago; - still ongoing;
  16. given a pre-node-js state, where all stack was composed of single platform
  17. the change would be to swap public-facing part with Node.js
  18. turned out to be different
  19. and this is not too hard
  20. Fat client libraries, context dependent, interwined, obscure APIs
  21. Fat client libraries, context dependent, interwined, obscure APIs
  22. It’s how internet is built! - Consume with any language and technology; - Iterate and change over time; - No dependency on service implementation;
  23. don't think we would do it in multiple platforms now
  24. You don’t need official libraries for that
  25. - HTTP API’s, JSON-RPC2 - obeying to json datatypes, little jvm leakage.
  26. For next stack could be introduced in less than a year - maybe our platform, business requirements will change in a way, where go will be the right tool for the job in many new endevours.
  27. you have nothing - lot's of ground to cover
  28. 1k commits back
  29. Brave souls, cowboys and renegades – OneApp, Core3, blog, insights, hotels.
  30. Platform is proven, no more underdog
  31. wrote in scala: - lot's of build-up for testing; - testkits available; - can excercise any platform; - engineers can contribute;
  32. - not sure testkits will work for long; - test apps with set of contracts;
  33. Common behavior exposed by both platforms via public api - for client, other services, humans/system - consumed by systems;
  34. well this is how you start
  35. - cross-cutting concerns (platform concerns); - fat client/mandatory services; - categorized by layer?
  36. we either do it somehow - or do it properly and open-up for next stacks
  37. given current state we can just build fatter and fatter client for node
  38. and move from frameworks to ecosystems