Cómo la Arquitectura y la Infraestructura Pueden Mejorar (o Romper) la Productividad de tu Equipo

Rate this content
Bookmark

Los desarrolladores quieren lanzar y crear valor para nuestros usuarios. Entonces, ¿por qué tantos equipos luchan por llevar las cosas a producción rápidamente? En esta charla, Jason Lengstorf analizará el impacto que nuestra arquitectura y nuestra infraestructura frontend tienen en la capacidad de nuestros equipos para construir, iterar y desplegar software, y cómo afecta la calidad y los riesgos del despliegue.

8 min
09 Jun, 2021

Video Summary and Transcription

La charla de hoy analiza cómo las elecciones de arquitectura e infraestructura impactan la productividad del equipo. Los sistemas complejos pueden generar frustración, fragilidad y lentitud, obstaculizando la eficiencia y creando silos de conocimiento. Los front-ends desacoplados, los front-ends precompilados y las funciones sin servidor pueden mejorar la productividad y permitir un despliegue más rápido. Las arquitecturas de apoyo son cruciales para construir una cultura de lanzamiento y evitar sistemas frustrantes, frágiles y lentos.

Available in English

1. Being Productive by Default

Short description:

Hoy hablaré sobre cómo las elecciones de arquitectura e infraestructura pueden afectar la productividad del equipo. Los sistemas complejos pueden generar frustración, fragilidad y lentitud. Pueden ralentizar a los desarrolladores y crear compartimentos estancos de conocimiento dentro de los equipos. La complejidad también obstaculiza la eficiencia de la empresa y puede generar burocracia.

**JASON LENTON** Muy bien. Hola a todos. Estoy muy emocionado de hablarles hoy sobre cómo ser productivos por defecto. Y lo que quiero decir con eso es que quiero hablar sobre cómo la arquitectura que elijas para tu equipo y la infraestructura en la que lo implementes pueden hacer o deshacer la productividad de tus equipos.

Tengo mucho que cubrir en siete minutos, así que empecemos de inmediato. En primer lugar, nuestro objetivo principal como empresa es entregar valor a los clientes rápidamente. La forma en que tenemos éxito como empresa es producir algo que las personas quieran y entregárselo rápidamente para mantenernos competitivos y para que las personas quieran seguir pagándonos por nuestros servicios. Y los equipos quieren entregar. Por defecto, los equipos quieren sacar las cosas al mercado. Es muy divertido para nosotros ver cómo las cosas se lanzan en vivo.

Entonces, ¿qué impide que un equipo entregue? Hay algunas cosas de las que no vamos a hablar hoy como construir una base de confianza y asegurarse de cuidar a tu gente. Voy a asumir que estás haciendo ese trabajo porque si no lo haces, ninguno de los consejos que te daré hoy tendrá sentido. Pero suponiendo que ya tienes eso en su lugar, hablemos de tu infraestructura. Si tu infraestructura y tus procesos son frustrantes, si son frágiles, si son lentos, si tienes que pasar por un montón de obstáculos y guardianes y controles y diferentes equipos, y solo puedes implementar una vez cada pocos días o incluso cada pocas semanas, eso es muy frustrante, frágil y lento. Es posible que hayas escuchado hablar de esto pero existe una buena probabilidad de que hayan estado usando el acrónimo FFS, frustrante, frágil, y lento. La complejidad es en gran parte lo que lleva a estos sistemas frustrantes, frágiles y lentos. Estamos tratando de hacer cosas muy complejas con nuestro código y nuestras aplicaciones, pero si no tenemos cuidado, esa complejidad comienza a convertirse en desorden y burocracia y esa fragilidad. Hablemos un poco sobre cómo la complejidad puede afectar al equipo. En primer lugar, un sistema complejo va a ralentizar a un desarrollador. Si un desarrollador tiene que pedir permiso para hacer parte de su trabajo, si hay cosas en el front-end que requieren que se mueva al nivel intermedio o al back-end y tiene que pedir permiso a un desarrollador de back-end o esperar a un ingeniero de DevOps o empezar a buscar a otros equipos para que se encarguen de partes del trabajo, eso lo va a ralentizar. Si tienes equipos que trabajan en sistemas complejos, comienzas a desarrollar compartimentos estancos de conocimiento. Tienes este problema en el que un equipo está trabajando en algo y son los únicos que saben cómo funciona. Y peor aún, si ese equipo tiene a alguien que es el único que sabe cómo funciona, eso significa que todo el equipo puede quedarse atascado si esa persona no está. Eso no es divertido. Genera mucha carga de trabajo. Dificulta que las personas se vayan de vacaciones y es difícil crear autonomía.

2. Improving Productivity with Infrastructure Choices

Short description:

Los sistemas frágiles conducen a una velocidad de implementación más lenta y a una mayor fragilidad. Los front-ends desacoplados reducen la complejidad y permiten una implementación más rápida con bajo riesgo. Los front-ends precompilados reducen la fragilidad y permiten deshacer cambios rápidamente. Las funciones sin servidor reducen la redundancia y permiten a los equipos de front-end realizar llamadas privilegiadas a las API. Al elegir una infraestructura centrada en el front-end, los equipos pueden ser más productivos e implementar varias veces al día.

Los sistemas complejos también ralentizan a las empresas. Una causa clave de burocracia es la complejidad. Si tus sistemas son frágiles, comienzas a implementar procesos para controlar eso. Y si implementas esos procesos, puede hacer que toda tu empresa se vuelva mucho más lenta. A medida que las cosas se vuelven más lentas, las personas comenzarán a disminuir su velocidad de implementación porque no quieren pasar por ese proceso. Pondrán más y más cambios en cada implementación. Eso significa que cada implementación se vuelve más grande y, por lo tanto, más frágil, lo que significa que más cosas se rompen. Los front-ends desacoplados reducen la complejidad. Ahora tus desarrolladores de front-end pueden ser solo desarrolladores de front-end. Si estás desacoplado e implementando en la nube, de repente no tienes una gran cantidad de pasos de DevOps y administración de servidores de nodos y descubrir cómo funcionan Docker y Kubernetes para la implementación de front-end. Puedes construir un front-end, implementarlo en Git y CI/CD lo lleva en vivo porque se puede implementar con bajo riesgo en un CDN. Los front-ends precompilados reducirán la fragilidad. Hay menos partes móviles. Se utilizan menos servidores en producción. Hay menos cosas que se pueden romper, lo que significa que puedes controlar ese riesgo. También te permite hacer cosas como crear implementaciones inmutables, donde cada versión compilada del front-end es su propia carpeta. Así que puedes deshacer rápidamente si algo sale mal con un solo clic. Eso es un gran beneficio. Los equipos pueden ir en vivo una vez que obtienen una revisión de PR en lugar de tener que esperar días o semanas para que otros equipos pasen por el proceso. Y las funciones sin servidor reducen la redundancia. Si necesitas hacer algo, como hacer una llamada privilegiada a una API, muchas veces esto caería en esta capa intermedia, donde es difícil asignarlo al equipo de back-end, porque es una API que solo se utiliza para el front-end y accede a datos de múltiples equipos de back-end. Entonces no está claro quién es el responsable de eso, y muchas veces recae en el equipo de front-end. Si usas funciones sin servidor, ahora tu equipo de front-end no tiene que lidiar con Node y configurar proxies y configurar Docker y Kubernetes. Solo pueden escribir un poco de JavaScript e implementarlo y obtener esa llamada privilegiada a la API que necesitan hacer de manera rápida. El gran beneficio de todo esto es que no tienes que pensar en servidores, no tienes que pensar en DevOps, no tienes que pensar en deshacer cambios, no tienes que pensar en escalar, no tienes que pensar en almacenamiento en caché, nada de eso. Todo lo que tus equipos de front-end necesitan pensar es en implementar. Y eso es por qué este modelo, al elegir una infraestructura que les brinde a tus equipos la capacidad de centrarse en solo el front-end, les permite enfocarse solo en la parte en la que son expertos de verdad, y les permite eliminar todas esas dependencias adicionales y esa complejidad adicional que se cuela cuando los front-ends se vuelven demasiado complejos. Eso es lo que hace que los equipos sean realmente, realmente productivos. Y lo que eso significa para nosotros en Nellify, por ejemplo, es que puedes implementar en producción no solo diariamente, sino varias veces al día. Y esto es el 7 de mayo, que fue un viernes.

3. La Importancia de una Arquitectura de Apoyo

Short description:

Nuestro equipo de front-end puede implementar cuatro veces en un lapso de cinco a seis horas después de fusionar una PR. Adoptar Jamstack puede llevar al mismo éxito. Para construir una cultura de implementación, es crucial tener una arquitectura de apoyo. Las arquitecturas frustrantes, frágiles y lentas obstaculizan a los desarrolladores y ralentizan la implementación.

Esta es la aplicación de Nellify, app.nellify.com. No es un sitio de marketing. No es una propiedad única. Esto es el núcleo absoluto de nuestro negocio. Y nuestro equipo de front-end puede implementar tan pronto como se fusiona una PR, cuatro implementaciones en un lapso de aproximadamente cinco horas, seis horas. Esa es una velocidad increíble para un equipo de producción. Y esto no es irregular. Vemos que esto sucede a los equipos que adoptan el Jamstack todo el tiempo. Y creo que es algo que será igual de exitoso si lo incorporas a tu equipo. Si quieres construir una cultura de implementación, necesitas crear la arquitectura que la respalde. Y eso es realmente, realmente importante. Porque si implementas una arquitectura que es frustrante, frágil y lenta, tus desarrolladores se frustrarán. Verán que las cosas se rompen y se ralentizarán. No podrán implementar tan rápido como desean. Si les das la arquitectura que hace de esto lo predeterminado para que puedan implementar rápidamente, sacar las cosas por la puerta, lo harán.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Scaling Up with Remix and Micro Frontends
Top Content
Do you have a large product built by many teams? Are you struggling to release often? Did your frontend turn into a massive unmaintainable monolith? If, like me, you’ve answered yes to any of those questions, this talk is for you! I’ll show you exactly how you can build a micro frontend architecture with Remix to solve those challenges.
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Full Stack Components
Top Content
Remix is a web framework that gives you the simple mental model of a Multi-Page App (MPA) but the power and capabilities of a Single-Page App (SPA). One of the big challenges of SPAs is network management resulting in a great deal of indirection and buggy code. This is especially noticeable in application state which Remix completely eliminates, but it's also an issue in individual components that communicate with a single-purpose backend endpoint (like a combobox search for example).
In this talk, Kent will demonstrate how Remix enables you to build complex UI components that are connected to a backend in the simplest and most powerful way you've ever seen. Leaving you time to chill with your family or whatever else you do for fun.
React Advanced Conference 2022React Advanced Conference 2022
29 min
Understanding React’s Fiber Architecture
Top Content
We've heard a lot about React's Fiber Architecture, but it feels like few of us understand it in depth (or have the time to). In this talk, Tejas will go over his best attempt at understanding Fiber (reviewed by other experts), and present it in an 'explain-like-I'm-five years old' way.
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt.In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.

React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
After spending over a decade at Google, and now as the CTO of Vercel, Malte Ubl is no stranger to being responsible for a team’s software infrastructure. However, being in charge of defining how people write software, and in turn, building the infrastructure that they’re using to write said software, presents significant challenges. This presentation by Malte Ubl will uncover the guiding principles to leading a large software infrastructure.
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Let’s face it: technical debt is inevitable and rewriting your code every 6 months is not an option. Refactoring is a complex topic that doesn't have a one-size-fits-all solution. Frontend applications are particularly sensitive because of frequent requirements and user flows changes. New abstractions, updated patterns and cleaning up those old functions - it all sounds great on paper, but it often fails in practice: todos accumulate, tickets end up rotting in the backlog and legacy code crops up in every corner of your codebase. So a process of continuous refactoring is the only weapon you have against tech debt. In the past three years, I’ve been exploring different strategies and processes for refactoring code. In this talk I will describe the key components of a framework for tackling refactoring and I will share some of the learnings accumulated along the way. Hopefully, this will help you in your quest of improving the code quality of your codebases.

Workshops on related topic

DevOps.js Conf 2024DevOps.js Conf 2024
163 min
AI on Demand: Serverless AI
Top Content
Featured WorkshopFree
In this workshop, we discuss the merits of serverless architecture and how it can be applied to the AI space. We'll explore options around building serverless RAG applications for a more lambda-esque approach to AI. Next, we'll get hands on and build a sample CRUD app that allows you to store information and query it using an LLM with Workers AI, Vectorize, D1, and Cloudflare Workers.
React Summit 2022React Summit 2022
50 min
High-performance Next.js
Workshop
Next.js is a compelling framework that makes many tasks effortless by providing many out-of-the-box solutions. But as soon as our app needs to scale, it is essential to maintain high performance without compromising maintenance and server costs. In this workshop, we will see how to analyze Next.js performances, resources usage, how to scale it, and how to make the right decisions while writing the application architecture.