Esto es Clean Architecture en 20 minutos | Todo lo que necesitas saber — Transcript
Full transcript
- 0:00vamos a hacer una cercanía a lo que es
- 0:01los conceptos de Clean architecture y de
- 0:03ahí vamos a pasar también a la parte de
- 0:05la hexagonal architecture pero
- 0:08primero antes de hablar del la hexagonal
- 0:10Tenemos que hablar de la Clean y es por
- 0:12algo es un algo muy interesante y es que
- 0:15son una serie de conceptos realmente son
- 0:17una serie de principios que todos
- 0:20tendríamos que tener bastante asimilados
- 0:22y estar familiarizados estos conceptos
- 0:25como bien lo dice uncle Bob que es el
- 0:27creador de los mismos dice bueno
- 0:30escuchame una cosa la verdad hay muchas
- 0:32ideas ahora mismo esas ideas vienen de
- 0:35la parte de la hexagonal de la parte de
- 0:37la onion de la parte de las gam
- 0:39architecture de la parte de etcétera hay
- 0:41muchas ideas muchas filosofías pero
- 0:42todos hacen lo mismo que es separar
- 0:45concern s separation of concerns que
- 0:47cada cosita está atomizada tenga su
- 0:49propia lógica y Tratamos de diferenciar
- 0:52y separar las cosas de una manera que
- 0:54podamos trabajar de una manera cómoda
- 0:56que podos escalar podemos mantener bien
- 1:00Entonces es
- 1:02[Música]
- 1:08así vamos a empezar con lo siguiente
- 1:10nosotros tenemos que identificar que la
- 1:12Clean architecture per una forma muy
- 1:14fácil de pensarlo es que tenemos un
- 1:16dominio esto Vamos a ponerle d luego
- 1:19vamos a tener la parte de use cases le
- 1:22vamos a poner una u luego vamos a tener
- 1:24también la parte de adapters le vamos a
- 1:27poner una a Y por último de todo vamos a
- 1:29tener la parte externa que le vamos a
- 1:31poner una e bien entonces cómo hay que
- 1:35pensar esto de representa dominio domain
- 1:41cuando hablamos de domain estamos
- 1:43hablando de
- 1:45lógica de negocios y nos quedamos acá no
- 1:49también a esto le vamos a sumar lo que
- 1:52son entidades bien más entidades ahí lo
- 1:56tenemos Y por qué hacemos esto qué es
- 1:58esto lógica de negocios qué es esto
- 1:59entidades Bueno es muy
- 2:02fácil yo le voy a mostrar una forma que
- 2:06es imposible equivocarse esto así no más
- 2:08se los digo eh que es la forma que yo lo
- 2:09vengo explicando hace muchísimo tiempo y
- 2:11me encanta explicarlo que es esta
- 2:13cualquier cosa que sea un requerimiento
- 2:18el cual no depende de la
- 2:21tecnología estamos hablando que es
- 2:23lógica de negocios bien Qué quiere decir
- 2:27esto si yo les digo que siempre Este
- 2:30ejemplo Ya sé que es muy repetitivo pero
- 2:31es muy fácil si yo digo que tengo una
- 2:35aplicación y la persona que se puede
- 2:37loguear y utilizar la aplicación o
- 2:39registrarse tiene que ser mayor de 18
- 2:41años hay en algún lugar una parte
- 2:45técnica que me diga tiene que ser así
- 2:47porque si no la aplicación no funciona
- 2:49no no se ve limitado por la tecnología
- 2:52el requerimiento por lo cual es lógica
- 2:55de negocios es así de fácil eh es así de
- 2:57fácil y cuando esa lógica de negocios se
- 2:59aplica en más de un proyecto de una
- 3:02empresa estamos diciendo ahora que la
- 3:03lógica de negocios pasa a ser una lógica
- 3:05de organización una lógica
- 3:09organizacional bien entonces Qué es una
- 3:12entidad son las diferentes justamente
- 3:15entidades que van a estar funcionando en
- 3:18nuestra aplicación una entidad sería
- 3:20usuario si es una aplicación bancaria
- 3:23banco un banco cualquier cosa que tenga
- 3:26que ver o que un decir en la lógica de
- 3:29negocio
- 3:31que se ve referenciado ahí luego vamos a
- 3:33tener la siguiente que es la u que
- 3:35hablábamos que era los Us cases y los
- 3:40use cases no son más que los
- 3:43requerimientos que vienen por la lógica
- 3:45de aplicación Entonces vamos a agarrar
- 3:47vamos a borrar Us ya sabemos lo que es
- 3:49lo identificamos por la u Y esto es
- 3:54lógica de
- 3:57aplicación y Cómo sabemos que es una
- 3:59cada aplicación porque ahora sí vamos a
- 4:03estar limitados por la
- 4:04tecnología ustedes sabían por ejemplo a
- 4:07ver voy a hacer una consulta están
- 4:09atentos Están así atentos a todo lo que
- 4:12le voy a decir porque se viene una
- 4:14pregunta A ver qué me dicen un mensaje
- 4:17de error en un formulario es lógica de
- 4:20negocios o lógica de
- 4:23aplicación Qué es gente a ver lógica de
- 4:27negocios escriban uno lógica aplicación
- 4:30escriban dos un mensaje de error es
- 4:32lógica de aplicación o es lógica de
- 4:36negocios
- 4:38Mmm se la están jugando mucho eh bueno
- 4:42todos aquellos que respondieron lógica
- 4:45de
- 4:46aplicación mal no es lógica de
- 4:49aplicación qué restricción técnica nos
- 4:53dice a nosotros escuchen bien qué
- 4:55restricción técnica tenemos nosotros
- 4:57para decir brom password
- 5:01ninguna o no el copy del mensaje de
- 5:06error no nos importa es lógica de
- 5:10negocios bien Ahí está el problema ahora
- 5:14el mensaje es lógica de negocios si
- 5:16nosotros ahora nos vamos a cómo
- 5:18mostramos ese mensaje ahí ya estamos
- 5:21hablando de lógica de aplicación se
- 5:23entiende y Cómo sabemos esto porque que
- 5:26lo mostremos en mensaje en rojo que lo
- 5:28mostremos con un papá que lo mostremos
- 5:30con alerta que lo mostremos con un
- 5:32tooltip que lo mostremos que la caja
- 5:34alrededor del input donde nosotros
- 5:36estamos escribiendo se ponga en rojo eso
- 5:37es lógica de aplicación porque es un use
- 5:40Case bien cómo lo voy a mostrar si se va
- 5:44a ver restricto por la
- 5:46tecnología por ejemplo ux un reex sería
- 5:50lógica de negocios exactamente por
- 5:52ejemplo que un campo Sí o sí tenga quec
- 5:55un mail por
- 5:58qué yo no podría poner por ejemplo input
- 6:01de tipo String y decir mete el mail ahí
- 6:04adentro si no hay una restricción
- 6:06técnica que me dice esto tiene que ser
- 6:08mail bien es una restricción de negocios
- 6:11Entonces eso es lo que tenemos que
- 6:12tratar se entiende de hacer estas
- 6:14diferenciaciones cómo vamos a saber de
- 6:16vuelta que es una lógica de aplicación
- 6:18porque la tecnología influye y no
- 6:20solamente porque la tecnología influye
- 6:22sino también porque si cambia
- 6:25algo va a verse impactado si yo les digo
- 6:29por
- 6:30ejemplo tienen que hacer un register
- 6:33donde la persona que tenga mayor de 18
- 6:35años sea la única que se puede loguear
- 6:37pero es register tiene que tener un
- 6:38formulario Mostrar los mensajes de error
- 6:40en formato de alertas Perdón en mensaje
- 6:42rojo abajo del input y además de eso
- 6:44cuando aplicamos submit tiene que tirar
- 6:46un mensaje diciendo success bien de todo
- 6:49eso qué es lo único que es regla de
- 6:52negocio qu van a decir los mensajes y
- 6:55que tiene que ser mayor de 18 años el
- 6:57usuario ya está bien si tiene mail Bueno
- 7:00también que sea un mail fantástico pero
- 7:02todo lo otro tiene un impacto todo lo
- 7:06otro si alguien va y cambia un use Case
- 7:08en vez de una alerta digo de un mensaje
- 7:10en rojo ahora Quiero un popup Me
- 7:12rompiste todo prácticamente no estamos
- 7:15teniendo un impacto sobre la lógica de
- 7:18aplicación bien la lógica de aplicación
- 7:20sí se va a ver impactada cuando cambia
- 7:22el use Case la lógica de negocios ya
- 7:24viene la parte más importante pero
- 7:26terriblemente importante que se llama la
- 7:29la regla de las dependencias si es o la
- 7:32regla del dominio Mejor dicho Perdón es
- 7:34que El dominio es Intocable nada tiene
- 7:37que afectar del El dominio nada sino que
- 7:41los use cases y lo demás todo tiene que
- 7:43dar soporte a que se pueda cumplir la
- 7:47lógica de negocios bien y ahí está la
- 7:50segunda funcionalidad tan bonita de la
- 7:53lógica de aplicación la lógica de
- 7:55aplicación no solamente va a dar
- 7:57justamente los use cases sino que
- 7:59también ojo con esto la lógica de
- 8:01aplicación va a acercar las entidades a
- 8:04la lógica de negocios un
- 8:08usuario tiene que ser mayor de 18 se
- 8:13entiende acercamos la entidad usuario
- 8:16con el caso de uso mayor de 18
- 8:19años sí ojo con lo de servicio con todo
- 8:23eso no se metan tanto todavía ustedes
- 8:25olvídense traten de que lo que yo les
- 8:27estoy diciendo ahora no tiene todavía
- 8:29implement real son ideas son conceptos
- 8:32son
- 8:33justamente ideales sí se podría decir
- 8:36son una serie de principios Ahí está sí
- 8:39olvídense servicios eso olvídense
- 8:41estamos hablando de ideales acá ahora va
- 8:45a pasar algo van a ver que me voy a
- 8:47saltear un concepto ahora que es que
- 8:49nosotros vamos a necesitar Igualmente
- 8:52cosas externas
- 8:54no Qué es una cosa externa cualquier
- 8:57cosa que pueda cambiarse sí totalmente
- 9:00un requerimiento un Perdón un recurso a
- 9:03mí me gusta decirle recursos es e un
- 9:06recurso el cual nosotros Ah es un
- 9:11recurso el cual nosotros estamos
- 9:12utilizando dentro de nuestra aplicación
- 9:14bien pero que el día de mañana puede
- 9:16cambiar por ejemplo una apicol ojo con
- 9:19esto m eh Por ejemplo una apicol por
- 9:23ejemplo ahora por qué se los digo además
- 9:26de eso bien un recurso como yo les decía
- 9:30tiene que ser totalmente intercambiable
- 9:31tiene que ser algo que se pueda sacar
- 9:33poner sin ningún tipo de problemas Okay
- 9:39entonces este recurso también como bien
- 9:41lo dijimos es externo no es
- 9:44nuestro bien no es nuestro puede ser por
- 9:47ejemplo un servicio externo no es
- 9:50nuestro entonces acá viene el problema
- 9:54cómo hacemos nosotros para que nuestro
- 9:55código sea mantenible y a la vez pua
- 9:59comunicarse con el mundo exterior y que
- 10:01si el mundo exterior cambia por alguna
- 10:03razón Mi aplicación no se ve
- 10:06impactada ahí viene el jueguito s Ahí
- 10:11viene el jueguito y la cosa linda de
- 10:13todo esto y es una gente se viene viene
- 10:18una de las capas que más les cuesta a
- 10:21todo el mundo que es la a la adapter
- 10:26bien la famosa adapter
- 10:29Y por qué les estoy diciendo esto porque
- 10:33Generalmente nosotros lo que vamos a
- 10:35hacer sí es esto tiene como una lógica
- 10:38tiene como un sentido nosotros hacemos
- 10:41todo para que El dominio sea lo que no
- 10:44se pueda tocar y todo depende del
- 10:46dominio si nosotros vemos las cosas
- 10:49veríamos una flechita que sería algo y
- 10:52vamos a hacerlo con el color blanco si
- 10:54les parece que sería algo así Y por qué
- 10:56es esta flechita porque El dominio no
- 10:59sabe lo que pasa en el en los casos de
- 11:01uso bien el adapter no sabe perdón eh de
- 11:06vuelta El dominio no sabe lo de adapter
- 11:08El dominio no sabe de las partte externa
- 11:10les da igual le da totalmente igual
- 11:12entonces hay una flecha y esa flecha es
- 11:15porque hacia arriba va a ir la
- 11:17información sí y qué quiere decir de
- 11:20vuelta que la flecha vaya hacia afuera
- 11:21que de afuera hacia dentro no tiene ni
- 11:23idea sí no tiene ni idea pero y ahí
- 11:28viene el problemita que todo el mundo no
- 11:29entiende es que el
- 11:31adapter sí tiene doble flecha porque es
- 11:36justamente que se comunica con la parte
- 11:37de afuera y con la parte de adentro bien
- 11:42se entiende se puede pensar si les
- 11:45gustaría Porque mucha gente lo piensa
- 11:47así y no lo veo tan mal un
- 11:50middleware bien un famoso middleware es
- 11:54algo intermedio que va a adaptar las
- 11:56cosas de los dos lados alen conven neces
- 11:59experiencia aprender sí totalmente y
- 12:02porque esto se aplica en muchas cosas yo
- 12:05lo aplico en parte de react lo aplico en
- 12:07angular Lo aplico eh en backend como ya
- 12:10lo van a ver un montón entonces ahí me
- 12:12está diciendo es un mapper no es
- 12:13solamente un mapper es un adaptador
- 12:16puedes hacer lo que quieras all adentro
- 12:17hay mucha gente que hasta tiene lógica
- 12:19dentro de los adaptadores Eso depende de
- 12:21uno cómo lo queramos hacer Entonces
- 12:24vamos a dar un ejemplo un ejemplo sería
- 12:26ustedes me dijeron una Api Bueno yo
- 12:29tengo acá una Api No acá acá eh ahí
- 12:34tengo una Api esa Api me va otorgar una
- 12:37cierta información que puede ser eh No
- 12:40sé user bien Me da datos de un usuario
- 12:44una base de datos puede ser
- 12:45tranquilamente una base de datos es algo
- 12:47externo de mi aplicación el día de
- 12:49mañana yo podría cambiar y lo
- 12:51podría cambiar por lo que se me cantes
- 12:53por sql o por lo que quiera bien
- 12:55entonces me da igual cómo está guardado
- 12:59de la información es información y listo
- 13:01eso es lo que a mí me importa de mi
- 13:03aplicación mi aplicación quiere los
- 13:05datos del usuario cómo esté guardada
- 13:06almacenado de esos usuarios me da igual
- 13:09Entonces yo lo que voy a hacer es
- 13:11justamente decir si yo en mi repositorio
- 13:14tengo que un usuario se llama
- 13:18usuario nombre
- 13:20Eh apellido pero en mi aplicación en mi
- 13:24aplicación entera esta parte de acá
- 13:26dentro Sí mi aplicación entera yo esto
- 13:29digo que es user name y password estamos
- 13:33diciendo que tenemos cosas diferentes no
- 13:36Por más que uno esté en español y otro
- 13:38esté en inglés y los dos sean lo mismo
- 13:40se escriben diferente ya con que se
- 13:41escriban diferentes son cosas diferentes
- 13:43entonces ahí viene el concepto del
- 13:46adapter el adapter lo que va a hacer es
- 13:49Si recibe una petición des desde la
- 13:51aplicación hacia fuera c Api bueno va a
- 13:55venir le pega a ese adapter ese adapter
- 13:59va a modificar la información de la
- 14:01aplicación para que la entidad externa
- 14:04lo pueda entender y así utilizar
- 14:07entonces yo te puedo decir yo quiero por
- 14:09digamos que tenemos una que es get user
- 14:10y ese get user utiliza en la propiedad
- 14:13user y tú le tienes que pasar Cuál es el
- 14:16user pero tu aplicación bien dice
- 14:19usuario por ejemplo vamos a hacer la
- 14:21contra dice usuario entonces tú tienes
- 14:23que mapear usuario a user le pegas a Api
- 14:26con esa información la Api te va
- 14:30password Y eso lo vas a mapear y lo vas
- 14:33a transformar a usuario nombre apellido
- 14:37y todo funciona espectacular bien y
- 14:40ahora les voy a hacer una pregunta el
- 14:43fren Dónde está dentro de todo
- 14:46esto Qué es dominio Us Case adapter
- 14:51parte
- 14:52externa Qué es el
- 14:55FR se di externo quién más
- 15:02acá no dice
- 15:05presentador solamente quiero saber la
- 15:06capa la
- 15:10layer ojo que todavía no estamos en
- 15:13hexágonos no Hemos llegado eso estamos
- 15:15en otra parte esto
- 15:17arit bien Ok entonces alguien me dice
- 15:21adapter Perfecto es externo y que todo
- 15:26el mundo encanta el ena encanta react
- 15:29les encanta next les encanta todo esto
- 15:33pero gente somos algo que que somos una
- 15:38basurita bien somos imprescindibles la
- 15:41verdad m somos totalmente prescindibles
- 15:43Mejor dicho nos pueden cambiar en
- 15:45cualquier momento si hoy el día de hoy
- 15:48usamos react o usamos angular o usamos
- 15:50SP usamos lo que
- 15:53queramos nadie depende de nosotros
- 15:55Nosotros dependemos de todos bien por
- 15:58esoo siempre digo no importa el
- 15:59framework que tú utilices o librería
- 16:02puedes llegar al mismo objetivo
- 16:03totalmente que es cumplir los objetivos
- 16:05de la lógica de negocios mientras
- 16:07cumplamos con los objetivos de la lógica
- 16:09de negocios estamos bien entonces por
- 16:11eso también les digo no sean frame
- 16:13workers sean ingenieros sean
- 16:16desarrolladores bien no sean frame
- 16:18workers piensen en las cosas no se
- 16:20queden en un solo framework hay muchos
- 16:22frameworks en muchas librerías que
- 16:24pueden hacer exactamente lo mismo y lo
- 16:26hacen solamente que algunas según los
- 16:28requerimientos y recursos que nosotros
- 16:30dispongamos son mejores para eso que
- 16:33necesitamos y por ahí el día de hoy es
- 16:35fantástico usar Astro porque tenemos un
- 16:39una aplicación que tiene unos requisitos
- 16:42de contenido muy estático y funciona
- 16:44espectacular obviamente podos meter
- 16:45rectángulo Lo que ustedes quieran no
- 16:47genial pero por ahí el día de mañana
- 16:49tenemos una aplicación Ultra robusta con
- 16:52buenos requisitos sí que ya están muy
- 16:54bien establecidos tenemos diseños
- 16:56tenemos todo tiene contenido muy
- 16:58Dinámico angular fantástico angular
- 17:01ahora al revés tenemos una aplicación
- 17:03que tiene los requisitos muy dinámicos
- 17:05estamos todavía buscando nuestro Nicho
- 17:07es una startup no sabemos lo que
- 17:09queremos estamos probando probando mucho
- 17:11prototipado por angular no es lo mejor
- 17:13porque peca En ese sentido angular no es
- 17:17tan estructurado que nos puede tirar
- 17:19para atrás Entonces vamos a react nos
- 17:21vamos a SP nos vamos a otro tipo de
- 17:23tecnologías se entiende que nos dé esa
- 17:25mayor flexibilidad a consta de robustez
- 17:28[Música]
- 17:30Entonces nosotros somos externos somos
- 17:33algo totalmente prescindible que nos
- 17:34podemos nos pueden intercambiar en
- 17:36cualquier momento Sí después de eso
- 17:40también otra cosa muy muy muy mu muy
- 17:42importante
- 17:44es Dónde está un browser ojo lo que les
- 17:48acabo de decir eh Dónde está la web
- 17:50Dónde está el browser en estas capas qué
- 17:52layer gente a ver qué me dicen Esto va a
- 17:55est
- 17:57increíble dónde está el
- 17:59browser ahí me dice se
- 18:06adapter externo externo adáptate Okay
- 18:10adapter externo externo externo externo
- 18:12externo lógica de aplicación adapter
- 18:14adapter Bueno hay una buena pelea entre
- 18:17adapter y externo y les voy a decir que
- 18:19los que dijeron externo Esta vez sí bien
- 18:22hecho es externo el browser es
- 18:24totalmente externo y cuál es el adapter
- 18:27quién me lo puede decir cómo nos
- 18:28comunicamos con los
- 18:31browsers con qué algo que utilizan todos
- 18:35los días Eso es lo peor de
- 18:36todo muy bien el dom exactamente es el
- 18:41dom ustedes bien el browser entiende
- 18:45javascript ustedes utilizan el dom para
- 18:47manejar los templates de lo que se
- 18:50renderiza en el browser Y también
- 18:52gracias a esto pueden hacer document.get
- 18:55Element by ID que esto que lo otro se
- 18:56están comunicando a través de una Api
- 18:59porque sí gente el dom es una una Api
- 19:02para poder comunicarnos en este caso con
- 19:05el browser y nosotros de esta misma
- 19:08manera Sí si el día de mañana Ahí viene
- 19:11la gracia del adapter si el día de
- 19:14mañana la gente hermosísima bien que
- 19:17codifica todos estos browsers dice Mira
- 19:19para hacer un document getm byid vamos a
- 19:21cambiar toda la lógica la miércoles
- 19:23vamos a tirar todo lo que está hecho y
- 19:24lo vamos a hacer de vuelta porque vimos
- 19:25que es totalmente es poco performante no
- 19:29me sirve no me funciona no me gusta eh
- 19:32vamos a hacerlo otra manera genial les
- 19:35impacta a
- 19:36ustedes no no les impacta para nada
- 19:40porque ustedes van a seguir utilizando
- 19:41el adapter que es
- 19:43getl se entiende Ahí va la gracia Ahí va
- 19:48la gracia la parte escalable la parte
- 19:50mantenible les da igual la otra parte
- 19:53ustedes Solamente les importa lo que
- 19:55llega a su aplicación y si hay algo que
- 19:58es lo que ustedes esperaban lo adaptan
- 20:01Ahí viene la gracia bien se entendió o
- 20:03no se entendió
About this transcript
This page contains the full transcript of Esto es Clean Architecture en 20 minutos | Todo lo que necesitas saber by Gentleman Programming, generated from the public captions YouTube serves with the video. The transcript has 3,068 words across 457 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.