La Arquitectura que Utiliza NETFLIX y UBER: Event Sourcing

  Рет қаралды 21,128

hdeleon.net

hdeleon.net

Күн бұрын

En este video veremos el patrón Event Sourcing, un patrón utilizado en sistemas enormes o sistemas distribuidos para evitar la problematica de cambio de estado compartido entre procesos.
🍺 Mis Cursos de PROGRAMACIÓN: hdeleon.net/cu...
📚 Mis Libros
📖 Aprender a Programar con C#: hdeleon.net/li...
🤖 Mi Setup
🖥️ Mi Monitor: amzn.to/3dtnDkk
⌨️ Mi Teclado: amzn.to/3BtjKnq
⌨️ Mi Deck elgato: amzn.to/3dvEKC3
🎧 Mis Orejeras: amzn.to/3BwQYm0
🎤 Mi Micrófono: amzn.to/3qPvFHh
Si quieres apoyarme y darme para una cerveza puedes hacerlo por aquí: paypal.me/Hecto...
Puedes apoyarme desde 0.5 USD al mes uniéndote como miembro al canal aquí: / @hdeleonnet
🐦Twitter: / powerhdeleon
🌎Mi Sitio web: hdeleon.net
📻Raw Radio en Spotify: open.spotify.c...
#programación #dev #programming

Пікірлер: 120
@hdeleonnet
@hdeleonnet 3 ай бұрын
Mis Cursos de Programación: hdeleon.net/cursos-premium/ Mi Nuevo Libro: hdeleon.net/libro-aprender-a-programar-con-c-hector-de-leon/
@ahioros
@ahioros 3 ай бұрын
Mostraré tu video cuando me pregunten como se hace el cierre diario de un banco xD...
@JulioCampoSwork
@JulioCampoSwork 3 ай бұрын
El mejor dibujante de KZbin
@hdeleonnet
@hdeleonnet 3 ай бұрын
Eso 🤘
@germannunez490
@germannunez490 3 ай бұрын
para el próximo intro
@robertodelacruz5043
@robertodelacruz5043 3 ай бұрын
Gracias Héctor justo ando haciendo una caja de ahorro en mi trabajo, me iluminaste
@soycmramos
@soycmramos 3 ай бұрын
Trabajo en un banco y es así. No estoy en esa área y lo que hago no tiene que ver en nada con SQL, pero sé que incluso por controles SOX hay muchas veces en las que cuando tienen que crear tablas nuevas no eliminan las antiguas sino que las deshabilitan. Lo que menciona Héctor de "sin estado" es muy certero, ya que en los bancos se maneja la arquitectura SOA, la cual tiene como pilares (entre otros más) la Ausencia de Estado y el Bajo Acoplamiento.
@angrir3471
@angrir3471 3 ай бұрын
Un buen maestro que explica con cervezas que mas puedo pedir
@fredysanabria4417
@fredysanabria4417 20 күн бұрын
Genial explicación, que buena arquitectura para futuros proyectos
@lumieluluu
@lumieluluu 3 ай бұрын
Como sabes tanto x dios, realmente admiro mucho tu conocimiento y espero poder algun dia saber todo lo q tu sabes
@electronikointeam5863
@electronikointeam5863 3 ай бұрын
Soy programador web y que vídeo más útil, justo para un proyecto personal que estoy haciendo, respondió todas el vídeo a medida que las iba haciendo en mi mente jajaja ❤
@00yoyo00jose
@00yoyo00jose 3 ай бұрын
Execelente el contenido Hector. Realmente muy completo su conocimiento. Aprecio mucho ese tipo de contenido ya que complementa.
3 ай бұрын
Gracias por al porte, de inmediato pensé que ese modo también se puede usar para los sistemas POS
@josue10hd
@josue10hd 3 ай бұрын
En el ultimo proyecto que trabaje me toco ver costo promedio de productos y aplique esto (sin saberlo 😮) Gracias por compartir y por la fabulosa explicación
@antoniomontalvo2315
@antoniomontalvo2315 3 ай бұрын
Muchas gracias Hector excelente explicación, igual se puede transpolar para el tema de control de inventario, poder saber las existencias a cierta fecha. Con esto tengo para robustecer un sistema previamente desarrollado.
@danielsuniaga7841
@danielsuniaga7841 3 ай бұрын
Bastante bueno Hector, muchas gracias.
@santiagoruiz7094
@santiagoruiz7094 3 ай бұрын
Uno de los mejores o incluso el MEJOR haciendo contenido de programación. Todo una bestia. Muy aparte de este vídeo quisiera hacerte una consulta, porque yo al enviar una lista de productos que viene de una base de datos, y las imágenes por medio de la ruta la convierto a base 64 y todo se muestra bien, pero al enviar más de 3 productos ya no se muestra tira error 500. Me doy cuenta que tirar error cuando envía a la vista el base64. Estoy recuperando esos datos enviados desde AJAX y jquery
@franciscojesusheredia9198
@franciscojesusheredia9198 3 ай бұрын
Tendrás que aumentar los mb posibles por solicitud, ya que enviar imagenes en base64 tienen un cierto peso por eso cuando coges un par de imagenes ya no te tira la solicitud
@JUANDAVIDCONTRERASRUIZ1210
@JUANDAVIDCONTRERASRUIZ1210 3 ай бұрын
Muchas gracias cabezón
@mariogaleano3796
@mariogaleano3796 3 ай бұрын
Cada buenos temas que toca en sus videos Hector, no como otros que se pasan hablando de "farandula tech"
@enriquermorilloa8363
@enriquermorilloa8363 3 ай бұрын
Gracias por el vídeo. Cómo se haría en el manejo de inventarios en dónde las personas no meten los registros de forma ordenada. Intenté hacerlo una vez pero fue una pesadilla te tantos registros que habia
@MiguelonCoder
@MiguelonCoder 3 ай бұрын
Excelente recurso, trataré de proyectarlo hacia la edición de informacion geográfica a ver como me va.
@ilvxor
@ilvxor Ай бұрын
Interesante solución
@emmanuelguitarfire
@emmanuelguitarfire 3 ай бұрын
No maaa está chido esto de los eventos ❤
@alexisnarvaez
@alexisnarvaez 3 ай бұрын
CQRS y Event Sourcing puede ser muy adictivo
@jjosee
@jjosee 3 ай бұрын
Woow no conocia esta arquitectura
@brauliomariano
@brauliomariano 3 ай бұрын
Mucho que aprender, gracias Héctor.
@savehunters4873
@savehunters4873 3 ай бұрын
Me guardaré este video para el futuro
@juani6597
@juani6597 3 ай бұрын
Gracias, nunca te vayas
@robertvaldez6695
@robertvaldez6695 3 ай бұрын
Ese store procedure se puede Guardar automáticamente con un Trigger quizás?, me refiero al pre guardado en la tabla Balance. Muchas gracias Héctor, excelente contenido como siempre 😎
@jorgericaldi6438
@jorgericaldi6438 3 ай бұрын
es increible como uno hace estas cosas sin saber que alguien se invento un nombre para ello(igual me paso con los dichosos patrones). y uno pensando que los de nintendo se mandan con cada "patente" de mrd. Igual gracias hermano, ya me ha pasado en una entrevista que me preguntan con un "nombre" de algo en particular y yo ni idea, luego me explican y yo "por la ptm, no sabia que tenia un nombre eso jajajaja"
@juancarlosrodriguez4969
@juancarlosrodriguez4969 3 ай бұрын
Verdaderamente interesante y útil, agradecido hector.
@rhyal2100
@rhyal2100 3 ай бұрын
Me enrede un poco pero es cuestión de verlo un par de veces haha, Gracias man.
@luislaol2031
@luislaol2031 3 ай бұрын
Que crack Hector, muchisimas gracias...
@oliversanchez9153
@oliversanchez9153 3 ай бұрын
Gracias aprendí bastante, no sabia de esos eventos
@rfefrop5262
@rfefrop5262 3 ай бұрын
Pues si Héctor porque uno siempre piensa que todo es camisa de fuerza pero cada día descubro que siempre hay una forma mejor de hacer las cosas
@pabloroves5109
@pabloroves5109 3 ай бұрын
Recuerdo las primeras veces que vi este patrón aplicado, fue hace más de 10 años, si bien con este video me entero que es un patrón llamado event sourcing jaja. En fin, el tema es que en aquel entonces pense "que ganas de complicarse la existencia, porque no ponen un campo saldo y listo", 1 mes despues no podia no usarlo XD. Quiza en sistemas chicos es un overkill, pero hoy en día los sistemas siempre tienden a crecer un poco y no esta de más tener una solución más robusta y mucho más escalable.
@devgaspar
@devgaspar 3 ай бұрын
Que excelente video!
@erickyoelgonzalezurbina6270
@erickyoelgonzalezurbina6270 3 ай бұрын
Excelente video, gracias.
@christy00008
@christy00008 3 ай бұрын
recopilacion de eventos ... gracias
@juliotejeira5715
@juliotejeira5715 3 ай бұрын
Excelente información, muchas gracias!
@carlfercho
@carlfercho 3 ай бұрын
Ese patron lo implementan en los software de almacen, con el famoso kardex.
@alexandrohdez3982
@alexandrohdez3982 3 ай бұрын
si aprendi, gracias brother
@jflavio11
@jflavio11 3 ай бұрын
Interesante, muy buen vídeo!
@fernandoaguirre1924
@fernandoaguirre1924 3 ай бұрын
Gracias mi apa
@gleonh
@gleonh 3 ай бұрын
Sí aprendí algo.
@00yoyo00jose
@00yoyo00jose 3 ай бұрын
Por cierto su curso de sql recomendado al 100%
@mariogomezarr
@mariogomezarr 3 ай бұрын
Gracias máster, ¿para cuándo uno de CQRS?
@mr.fabian8471
@mr.fabian8471 3 ай бұрын
Que interesantísimo !! Aprobado por Chayanne
@rodolfotovartorres
@rodolfotovartorres 3 ай бұрын
Una interesante solución gracias como siempre ❤ y este tipo de solución es agnostica al tipo de tecnología de bases de datos que utilices o se recomienda aplicarlo a bases de ratos sql
@hdeleonnet
@hdeleonnet 3 ай бұрын
NoSql para los eventos va bien
@nickolmo1
@nickolmo1 3 ай бұрын
aprendi que en un sistema inmutable aun asi puedes meterle mano XD
@oskitar8094
@oskitar8094 3 ай бұрын
Me hubiera gustado saber cómo resuelve el problema inicial cuando varias personas acceden al mismo recurso que después cambia y que usualmente se protege con transacciones. No planteó como con esta técnica se reemplazan las transacciones y se mantiene la consistencia.
@neokeit
@neokeit 3 ай бұрын
Buen video, gracias
@SvenKnutson
@SvenKnutson 3 ай бұрын
Héctor querido, excelente ejemplo, lo que si, me quedo una duda, cuando hiciste el subselect, ¿dijiste de usar CTO para un mejor rendimiento? Si es así, que sería un CTO o lo que hayas dicho
@hdeleonnet
@hdeleonnet 3 ай бұрын
Era un CTE common table expressions kzbin.info/www/bejne/aImcqHuDbph_jassi=du9zwStcobzDG4dY
@vitorcampos7077
@vitorcampos7077 3 ай бұрын
Maravilloso
@miguelangel199910
@miguelangel199910 3 ай бұрын
Esta bueno el chistorete del principio 🤣🤣🤣
@TulikoKKo702
@TulikoKKo702 3 ай бұрын
No conocía esta arquitectura, el único pero que le encuentro es la cantidad de filas que se estarían generando constantemente en las tablas pero bueno...considerando que se usa para apps gigantes deberían poder costear el almacenamiento. Saludos Hector, un grande!
@hdeleonnet
@hdeleonnet 3 ай бұрын
Así es, si se tiene espacio infinito, no zs tendría problema con concurrencia, por eso solo se dan el lujo empresas grandes
3 ай бұрын
Gracias cabezón
@diegohiroshiysusvideos2909
@diegohiroshiysusvideos2909 3 ай бұрын
Esta copada esa pizarra de Microsoft, hasta ahora en los talleres de Educ. Pública sobre Unity los estaba dando con puro Paint 🤣 jaja pero veo que esa pizarra de microsoft esta chida. La voy a descargar para las clases de lo niños. 😀
@FCBalles
@FCBalles 8 күн бұрын
Qué desastre! Llevo años trabajando en una empresa que maneja un programa cuya mayor carga la realiza el SQL mediante procedimientos. Me paso el día programanado en SQL.... y no sabía lo del CRT + SHIFT + R
@VivoXelCerroMTB
@VivoXelCerroMTB 3 ай бұрын
Esta misma técnica se podria usar para cerrar la caja de una tienda al final del dia?
@italocalisaya3195
@italocalisaya3195 3 ай бұрын
wow
@nicolasbes6874
@nicolasbes6874 3 ай бұрын
Que es CTO que mencionas en el momento d reutilizar la sub consulta ?
@alexismorison6636
@alexismorison6636 3 ай бұрын
Seguro quiso decir CTE
@filipayaviri1787
@filipayaviri1787 3 ай бұрын
Nadie a todos los que pregunte sabian como decirme como manejar sistemas distribuidos con grandes volumenes de datos Muchas gracias!!!
@VanguardSoftwareGroup
@VanguardSoftwareGroup 3 ай бұрын
Genial
@jhonjairomoralesgarcia5960
@jhonjairomoralesgarcia5960 3 ай бұрын
Que es cto. Dijo que se podía sustituir la sub consulta por un cto pero no encontré de eso en internet
@hdeleonnet
@hdeleonnet 3 ай бұрын
kzbin.info/www/bejne/aImcqHuDbph_jas
@jhonjairomoralesgarcia5960
@jhonjairomoralesgarcia5960 3 ай бұрын
Waos, que rápido gracias.
@rumpelstiltskin08
@rumpelstiltskin08 3 ай бұрын
Bien, solo una cosita, esto no reemplaza el crud, pero si es util cuando necesites tener un historial o reconstruir una linea de eventos.
@hdeleonnet
@hdeleonnet 3 ай бұрын
Nadie dijo que remplaza algo
@mariogaleano3796
@mariogaleano3796 3 ай бұрын
Esto es mejor que usar trigger sobre mis tablas?
@saulsmith21
@saulsmith21 3 ай бұрын
excelente, asi podemos ahorrar mucho tiempo y recursos, mandando a la mrd lo que no es necesario
@R12mmm
@R12mmm 3 ай бұрын
Duda: actualmente yo tengo una bitácora para guardar el estado de un objeto, lo almaceno en tipo json, veo que es algo parecido a esto, entonces está 'bien' que sea guardado así? he visto muchos comentarios que no recomiendan almacenar json en MySQL 😅🤣
@alejandrojorba
@alejandrojorba 3 ай бұрын
si son muchos datos veo bien un json, no tiene sentido crear 20 columnas para guardar los datos, si es un json para guardar unicamente 2 campos me parece que está de más, no está ni bien ni mal pero no lo veo acorde (todo esto hablando de una bitácora en la que unicamente se utiliza para guardar un historial de logs)
@ricardourzuarojas691
@ricardourzuarojas691 3 ай бұрын
buena
3 ай бұрын
Para mí sistema de contable
@mcomarch
@mcomarch 3 ай бұрын
Sé que, este tipo de info "debería ser" inmutable ... Peeeeeero .. tengo unos casos donde, mis clientes hacen corte y me dicen después (2 o mas dias, o hasta el sguiente mes) ups, me faltó éste Ticket que no lo metí a cargos a clientes 🥴 .. Compa, pero ya cerró el dia, el mes, etc... NO importa, agregalo... U otros mas locos: Estos 10 ticket, pasamelos al sigiente mes, por que si los reflejo el pasado no me pagan nada, solo pasando conceptos de una fecha a otra 😵‍💫... Que se hace en esos casos?? Actualizar TOOODOS los Balance desde esa fecha, en adelante? ... jejejejeje por mi fuera, cerrado te freigas, pero ... los dueños de la info, de los procesos y de todo, es el clinete ... o lo hago yo, o van con otro que se lo haga asi ... ☹
@hdeleonnet
@hdeleonnet 3 ай бұрын
Yolo que hago es crear un tipo llamado Ajuste, y ya con eso se mete una observación de que es algo que se olvido de meter, con eso las cuentas siguen saliendo bien.
@mcomarch
@mcomarch 3 ай бұрын
@@hdeleonnet Ajuste paralelo al Balance? ... por lo que, Amount = Balance + SUM(Ajuste) ... mmmmmmmh WOW .. Gracias ka ... buenísima esa!!
@padulincolorao
@padulincolorao 3 ай бұрын
Videos espesos
@decimodanlive
@decimodanlive 3 ай бұрын
Recordemos que en este entorno, el CRUD es un anti-patrón 😅
@landacorreaedgaralonzo7491
@landacorreaedgaralonzo7491 3 ай бұрын
¿Qué le pasó al monitor curvo?
@hdeleonnet
@hdeleonnet 3 ай бұрын
Exploto
@landacorreaedgaralonzo7491
@landacorreaedgaralonzo7491 3 ай бұрын
@@hdeleonnet ¿Literalmente?
@TheQuiyax
@TheQuiyax 3 ай бұрын
No entendí como al final Netflix resolvía los pedidos simultáneos con esto de event sourcing
@genesis3d
@genesis3d 3 ай бұрын
Es interesante en cuanto a rendimiento; pero en transacciones la actualizacion debe darse por cada sesion iniciada, de lo contrario la actualización no permitiria saber que monto le queda para hacer varios retiros en un dia,....creo que funciona para cierto tipo de negocios, o entendi algo mal?, tambien para cupos de servicios.....
@jimmyataujehidalgo8058
@jimmyataujehidalgo8058 3 ай бұрын
Entiendo que ya no es necesario usar transacciones porque ya no estamos usando actualizaciones. Pero mejor que el cabezón lo aclare.
@naylord5
@naylord5 3 ай бұрын
Para esos casos sería mucho mejor tener un campo en la tabla que diga "Eventos restantes" por ejemplo, y cada que se haga un insert nuevo, va y se le resta a ese campo de eventos -1. De esa manera te evitas tener que estar recorriendo toda la tabla para sumarizar movimientos, simplemente vas y consultas ese campo, y si es mayor a 0 le permites hacerlo.
@alejandrojorba
@alejandrojorba 3 ай бұрын
tengo una duda pq esto es aplicable para este caso concreto pero dudo que por ejemplo quieras ingresar cada cambio que hace el usuario en sus datos personales, ahi veo más viable un crud, pregunto pq generalmente las veces que vi esto se aplica puramente y me parece que podría hacerse a conveniencia, no?
@alexisnarvaez
@alexisnarvaez 3 ай бұрын
Se recomienda hacer a conveniencia, o por "bounded context" en términos DDD, o por microservicios, donde algunos de ellos convenga que sea event sourcing. Lo he probado hacer todo event sourced y no pasa nada tampoco.
@alejandrojorba
@alejandrojorba 3 ай бұрын
@@alexisnarvaez mí sensación es la cantidad de datos inútiles que te quedan en la DB
@alexisnarvaez
@alexisnarvaez 3 ай бұрын
@@alejandrojorba En realidad tienes la posibilidad de minar esos datos para conocer el comportamiento de tus usuarios y reaccionar a ellos a fin de conservarlos ya adaptarte a sus patrones de comportamiento. No podrías hacer eso si sólo tienes el estado último de los datos
@jose6433
@jose6433 3 ай бұрын
hace años que vengo haciendo "event sourcing" sin saber que hacía "event sourcing"
@madk347
@madk347 3 ай бұрын
naa Hector! hermano ademas de programador eres diseñador. HdeLeon el Programador mas versátil de youtube ?
@germannunez490
@germannunez490 3 ай бұрын
Cuando te das cuenta que trabajaste con una arquitectura pero sin conocerla XD He realizado cosas con esta arquitectura y no sabía que tenía un nombre XD
@LuisMedina-oi2xq
@LuisMedina-oi2xq 3 ай бұрын
pero me sale que tienes 96k twits :V
@hdeleonnet
@hdeleonnet 3 ай бұрын
15 años de usar X y compartiendo videos
@Juan-pu2rv
@Juan-pu2rv 3 ай бұрын
Brother eres backend! Por qué usas pantallas blancas?🤮
@hdeleonnet
@hdeleonnet 3 ай бұрын
Porque me vale verga
@Juan-pu2rv
@Juan-pu2rv 3 ай бұрын
😂😂😂😂😂​@@hdeleonnet
@alejandrovega119
@alejandrovega119 3 ай бұрын
50 pesos? 50 DLS, 50varos 😎
@jeizonbastidas
@jeizonbastidas 3 ай бұрын
Mmmm esa explicación estuvo rara
@ensteinmartinez4937
@ensteinmartinez4937 3 ай бұрын
Primeor, te tengo al tiro papa
@Miguel_Castaneda
@Miguel_Castaneda 3 ай бұрын
buen video guapo
@lowenrochenoire9771
@lowenrochenoire9771 3 ай бұрын
Aprendí que lo inmutable, si puede ser mutable
@germannunez490
@germannunez490 3 ай бұрын
@jorgeandres4234
@jorgeandres4234 3 ай бұрын
Excelente video, gracias
@horasalva1194
@horasalva1194 3 ай бұрын
nl explicaste como lo usa netflix al patron
@Monsterkosh
@Monsterkosh 3 ай бұрын
No generaria un problema tener tantas entradas en una base de datos ? O este problema es menor al que esta resolviendo ?
@hdeleonnet
@hdeleonnet 3 ай бұрын
Tener 1000 procesos por segundo queriendo modificar el mismo recurso es un problema más complejo. Las grandes empresas pueden darse el lujo del espacio
@germannunez490
@germannunez490 3 ай бұрын
@@hdeleonnet that's rigth
@alfonsoadalberto8472
@alfonsoadalberto8472 3 ай бұрын
Es correcto. En temas transaccionales donde hay millones de registros por día se usan inserts y la reporteria hace cortes diarios. Si el cliente quiere revisar sus movimientos, ese reporte sales d una tabla que ya tiene los cálculos al día 🤓 Muy útil cuando tu bd principal ya pasa los 100gb de tamaño 😬😱🤓
Lo más Importante en mis 20 AÑOS Programando
17:51
hdeleon.net
Рет қаралды 18 М.
¡ESTOY CANSADO DE ESTO...!
11:19
hdeleon.net
Рет қаралды 13 М.
Incredible: Teacher builds airplane to teach kids behavior! #shorts
00:32
Fabiosa Stories
Рет қаралды 9 МЛН
Новый уровень твоей сосиски
00:33
Кушать Хочу
Рет қаралды 4,8 МЛН
The joker favorite#joker  #shorts
00:15
Untitled Joker
Рет қаралды 30 МЛН
¿Por qué Debes Aprender ARQUITECTURA de SOFTWARE?
20:34
hdeleon.net
Рет қаралды 30 М.
Ruby on Rails es absurdamente LENTO
7:19
midulive
Рет қаралды 33 М.
¿Qué es el PROBLEMA N+1 y como SOLUCIONARLO?
8:27
Pull Request
Рет қаралды 5 М.
Una Alternativa para los Try Catch | Result Pattern
11:05
hdeleon.net
Рет қаралды 34 М.
El Lenguaje de Programación del FUTURO: F#
13:41
hdeleon.net
Рет қаралды 19 М.
Los 3 tipos de Caché que todo Developer debería conocer: HTTP vs Reverse Proxy vs App
15:50
CodelyTV - Redescubre la programación
Рет қаралды 37 М.
Lo que Debes Saber como Programador Backend en 2024
12:00
hdeleon.net
Рет қаралды 55 М.
¿No MEJORAS como Programador? ¡Aprende Abstracción!
14:25
hdeleon.net
Рет қаралды 21 М.
¿Por qué Aprender Arquitectura de Software parece DIFÍCIL?
10:16
¡A la MI3RD... Está Empresa!
12:17
hdeleon.net
Рет қаралды 11 М.
Incredible: Teacher builds airplane to teach kids behavior! #shorts
00:32
Fabiosa Stories
Рет қаралды 9 МЛН