https://slides.com/darking360/deck-3-4

 

¿Quién eres? 😅

Miguel Bolivar 🇻🇪

Ingeniero en Informática

... casi 😢

Trabajo para 🔨

Colaboro con:

@darking360

Agenda 📚

Caso de estudio 🤓

Empezando en un nuevo trabajo 💪

  Frontend 💅

  Backend ⚙️

  Moralejas 🤔

Nuevo trabajo 💻

Lo logramos 🎉

Proyecto nuevo 😱

Proyecto iniciado 😱

Funcionando por 3 años 😱

Mantiene a unos 10.000 usuarios 🙃

¿Cierto? 😅

La historia 🧐

Decisiones

Preguntas

Contexto

⚠️ No es un silver bullet ⚠️

Iniciando la historia 🔥

GIF foto realista de G ☝️

Legacy 💀

Legacy ☠️

Un sistema heredado (o sistema legacy) es un sistema informático (equipos informáticos o aplicaciones) que ha quedado anticuado pero que sigue siendo utilizado por el usuario (generalmente, una organización o empresa) y no se quiere o no se puede reemplazar o actualizar de forma sencilla.

Continuando la historia 🔥

💕

💕

💕

💕

💕

GIF foto realista de G ☝️

Empieza la mudanza 🚚

Componentes

Programación reactiva

El error 💥

GIF foto realista de cuando vi la busqueda ☝️

Continuando la mudanza 🚚

React Router

Redux

Styled components

Backend ⚙️

GIF foto realista de K ☝️

💕

Pruebas 💡

Probar caminos normales

Probar caminos anomalos 🌪️

Las pruebas buenas, son las que fallan 🤔

Blindando la aplicación🛡️

Pruebas unitarias

Pruebas end-to-end

Mocks! 🧙

Sobreescribimos funciones

Cuándo fue llamada

Con qué parametros

Cuántas veces

¿Pero por qué?

A donde vamos 🚋

Correos

Firmas

Almacenamiento externo

Búsquedas 

Separando ⛈️

Qué usamos 🤔

💕

INSTALLED_APPS  = [
    integraciones1,
    integraciones
    # ... integraciones
]

Exito! 🌠

Pero todo va creciendo 🏗️

Más clientes

Más demanda

Más trafico

Más problemas

¿Cómo escalar? 🧗

Delegar 💅

Workers

Estado de las tareas

¿Qué pasa si van mal?

Reintentar tareas

Escogiendo 🧐

Servicios de terceros 💀

Celery 

Rápido, probado, seguro, confiado por miles 💕

Escogimos MRQ 😅 

Más facil que Celery

Tablero con estados

Mecanismos de reintento

Colas personalizadas 🤯

Colas 🐿️

💕

¿Pero era la suficientemente bueno 🤔 ?

💡 Eureka 💡

Handshake 250 milisegundos a 10 segundos 😱

Por cada solicitud 💀

Encolemos en el API y desencolemos en las integraciones 🔥

Explorando 🗺️

Rápido entre ambas aplicaciones

Todos los beneficios de MRQ

Mecanismos de reintento

Crecer y crecer 👵

Yo llegando a la empresa ☝️

Deuda técnica 💸

Es un concepto en el desarrollo de software que refleja el costo implícito de hacer trabajo adicional causado por elegir una solución fácil (limitada) ahora en lugar de utilizar un mejor enfoque que tomaría más tiempo.

Variables globales 🌐

var search = { 
  query: "boyaca", 
  page: 10, 
  limit: 20 
}

function alterSearch(newParams) {
    search.query = newParams.query
    search.page = newParams.page
    search.limit = newParams.limit
}

// Mas funciones que mutan
// a "search"

Refactor 😱

Moralejas 🍎

Moralejas del Frontend 💅

Componentes

Programación reactiva

Composición sobre herencia 🤯

Herencia 👵 

Define a las cosas o clases, por lo que son 🤔 

Composicion 🏗️ 

Define a las cosas o clases, por lo que hacen  🛠️

Ejemplo 🎮

class Player {
  health = 100;

  damage() {/* ... */}
  attack() {/* ... */}
}
class Pet {
  owner = playerReference;
  health = 100;

  damage() {/* ... */}
  animalAttack() {/* ... */}
}
class Zombie {
  zone = zoneReference;
  health = 100;

  damage() {/* ... */}
  zombieAttack() {/* ... */}
}
class CharacterTemplate {
  health = 100;
  damage() {/* ... */}
}


class Player extends CharacterTemplate {/* ... */}
class Pet extends CharacterTemplate {/* ... */}
class Zombie extends CharacterTemplate {/* ... */}

Composición 🚀 

class Player extends CharacterTemplate {
  animalAttack() { /* Meow */ }
  zombieAttack() { /* Braaaaains */ }
  /*
   * Hasta el infinito (pls no)
   * */
}
function Dialog(props) {
  return (
    <FancyBorder color="blue">
      <h1 className="Dialog-title">
        {props.title}
      </h1>
      <p className="Dialog-message">
        {props.message}
      </p>
    </FancyBorder>
  );
}

function WelcomeDialog() {
  return (
    <Dialog
      title="Welcome"
      message="Thank you for visiting our spacecraft!" />

  );
}

Mutabilidad 💀

0
 Advanced issues found

Redux

En parte 😅

Funciones puras 🔍

const add = (x, y) => x + y;
let x = 2;

const add = (y) => {
  x += y;
};

add(4);

Moralejas del Backend ⚙️

¿Por qué separar? 🧐

Aplicaciones monolíticas

Separación de preocupaciones

Una no afecta a la otra

El encolado 🤯

MRQ

🤔

Mongo y Redis 🤝

Comunicación mediante colas 🌠

Yo cuando la comunicación entre aplicaciones funcionó ☝️

Ahora sí la moraleja 😅 

¿En busca de trabajo o empezando? 🙋 

Pregunten M U C H O! 

Conozcan el proyecto

Frameworks van y vienen 🍂

Finalmente...

Se requiere algo de ingeniería para servir a 41679 usuarios 🚀

🎉

🎉

🎉

🎉

🎉

🎉

¡Muchísimas gracias! 🙏

Miguel Bolivar 🇻🇪

💕

@darking360

Boyaconf 2019 - Se requiere algo de ingeniería para servir a 41679 usuarios - Version en negro

By Miguel Alejandro Bolivar Portilla

Boyaconf 2019 - Se requiere algo de ingeniería para servir a 41679 usuarios - Version en negro

Boyaconf <3

  • 694