Envío erróneo o controvertido, por favor lee los comentarios.
En 2002 un alto dirigente de Amazon —el mismísimo Jeff Bezos, según la mayoría de las fuentes; Allan Vermeulen, CTO de Amazon en aquel momento, según otras— lanzó una circular interna dirigida a todos los equipos de desarrollo de Amazon. Esa circular terminaría cambiando para siempre las dinámicas de desarrollo web y de software, dando comienzo al actual paradigma basado en APIs/microservicios. Poco tiempo antes, los expertos de la compañía habían decidido que una estrategia que girase en torno a software monolítico no resultaría lo bastante..
|
etiquetas: jeff bezos , amazon , apps , desarrollo web , api , microservicios
El texto completo de la ya conocida como 'API Mandate' ('Orden API') es el siguiente:
Todos los equipos expondrán a partir de ahora sus datos y funcionalidad a través de interfaces de servicio.
Los equipos deben comunicarse entre sí a través de estas interfaces.
No se permitirá ninguna otra forma de comunicación entre procesos: nada de vinculación directa, ni lecturas directas del depósito de datos de otro equipo, ni modelo de memoria compartida, ni ninguna clase de puertas traseras: la única comunicación permitida será mediante llamadas a la interfaz de servicio a través de la red.
No importa qué tecnología utilicéis: HTTP, Corba, Pubsub, protocolos personalizados? da igual.
Todas las interfaces de servicio, sin excepción, deberán diseñarse desde cero para que sean externalizables. Es decir, el equipo debe planificar y diseñar para poder exponer la interfaz a los desarrolladores en el mundo exterior. Sin excepciones.
Cualquiera que no haga esto será despedido.
El caso contrario es cuando el CEO de Blockbuster rechazó la compra de Netflix.
Pasar de un sálvese quien pueda, que era lo aceptado y aprobado a separar administrativamente o burocráticamente en pequeñas unidades lógicas que tenían que tener una interfaz pública es muy complejo.
Les tuvo que sonar a chino y, por eso, la última frase. Quien no lo acepte será despedido. Los trabajadores que pensaran ignorarlo porque "son cosas del jefe loco" deberían ser legión
Ahora , años después, nos parece lo lógico. Claro. Cuando lo vemos sin vicios
Desde estos ingenieros y sus equipos han elevado el mismo concepto a protocolos de red, puesto que no tenían kernels ejecutando software, sino servers conectados.
Sin conocer los pasos intermedios toda tecnología parece mágica (sin querer parafrasear a nadie)
Creo que andan más o menos por un 33% de todas las aplicaciones cloud desplegadas con ellos.
La resistencia al cambio es enrome, y más si planteas algo tan innovador.
Esta gente no ha inventado nada ni ha revolucionado nada. Ha comprado la tierra, lo que se ha producido con el trabajo de otros y lo que otros han inventado. Pero lo que nunca podrán comprar es la historia.
Los "profesionales" del dinero sólo saben de eso, dinero. No contribuyen al desarrollo de la tecnología, lo lastran con opas hostiles, patentes, secretos, denuncias... Apoderarse de la tecnología no tiene ningún mérito. Cuando venden que han hecho algo bien, ese algo siempre es idea y fruto del trabajo de otro. Ellos simplemente han puesto un muro para que el resto de la humanidad no pueda usarlas sin pasar por caja.
Cuando tuvieron esa reunión Netflix aún era un servicio por correo, así que no se les puede achacar que no fuesen capaces de ver el potencial del streaming. Y si los hubieran comprado igual no hubiesen desarrollado el servicio de vídeo bajo demanda y se habrían ido a la mierda junto a Blockbuster.
Buen rollito ante todo
Que es como decir que qué poca vision no comprar nintendo cuando eran una compañía de cartas.
No vuelve ni de coña.
Ya sabes, PEBKAC
Muy buena
El tema está cuando ese mismo blog pertenece a un cliente con miles de visitas mensuales y que no puede permitirse caídas. Ahí ya te tienes que preocupar de desacoplar la arquitectura en varios trozos, aka microservicios.
Para un WordPress, entiendo algo así:
- Un RDS para la base de datos aurora mysql.
- Un fargate con la imagen de WordPress. Al menos 2 instancias corriendo.
- Un EFS con los ficheros adjuntos del blog.
- Un load balancer correctamente configurado.
- Opcionalmente, un cloudfront enfrente de esto. Ahí ya depende de cuanto ancho de banda gastas y de donde viene el tráfico.
Aunque no hayas escrito nada de código, esto ya es una arquitectura de microservicios. Todos los componentes están debidamente desacoplados entre sí.
Y, no me quiero echar flores, pero empecé a usar esa metodología casi sin leer nada, por pura necesidad, nosotros somos todos programadores pero no sabemos combinar el color de la camisa con los pantalones así que me busqué a un colega de la universidad que trabaja en Londres y era muy bueno en diseño de webs y APP para minimizar la dependencia de él diseñé una serie de APIs que no hacían nada más que llamar a una stored procedure y devolver el resultado. De esa forma el 80% de los cambios y debugs de las APP los podía resolver yo desde SQL.
Ya ha crecido tanto la cosa que tenemos dos programadores de web services, pero el diseño gráfico lo seguimos subcontratando. Que mal gusto tenemos todos
Pasar de monolítico a distribuido es un coste enorme y no sólo en lo económico si no en la manera de enfocar la arquitectura.
Hay gente que no está preparado para el cambio (tristemente...)
El CTO podría decidir que hacer, pero el CEO y el CFO debían entenderlo o no se habrían lanzado a por ello con ese entusiasmo
No importa qué tecnología utilicéis: HTTP, Corba, Pubsub, protocolos personalizados? da igual.
Joder, HTTP vale que tenga otras utilidades, pero CORBA es también del siglo pasado y está pensado precisamente para eso.
Cuando hablaba de microservicios, pensaba que en 2002 ya habría previsto como funcionarian los contenedores de Docker, Kubernetes y demás...
Eso sí que hubiera tenido mérito.
Por cierto no fue tanto el email de Jeff como el manifesto "distributed computing manifesto" [2] que escribio Werner Wogels (Amazon CTO) lo que llevo a Amazon a adoptar la arquitectura a servicios. Pero dejo las batallitas para otro dia.
[1] www.reddit.com/r/programming/comments/l9ehj/steves_google_platform_ran
[2] www.allthingsdistributed.com/2019/08/modern-applications-at-aws.html
gist.github.com/chitchcock/1281611
Este video lo explica muy bien youtu.be/bWZVx6TgVvc
Y si estais en el sector IT y no conoceis el canal de ese tio os lo recomiendo encarecidamente.
Qué mendrugos sois a veces
Disclaimer: Docker usa más cosas y usa tecnologías más modernas, haciéndolo además más seguro y fácil de usar.
Ya me he tenido que pelear con varios en la nueva empresa en la que estoy trabajando porque están convencidos que esa es la mejor opción... Y son todos gente joven y la empresa tiene 3 años...
PS. El CTO brilla por su ausencia... O incompetencia
Si miras en el artículo de la Wikipedia sobre la historia de Microservicios, se empieza a hablar como pronto en 2004, posterior a esto de Bezos.
en.wikipedia.org/wiki/Microservices#History
Bezos en aquél entonces hablaba de algo más simple, SOA como dices, que llevaba años siendo utilizado. No hizo ningún cambio de paradigma.
Yo siempre he pensado que el genio era es compartido entre Bezos y Wogels. Wogels tuvo la vision y Bezos la comprendio y la impulso desde su polemica forma de gestionar.
Personalmente creo que AWS lleva ventaja de años en sus servicios.
Cuantanos mas por favor.
Tienes todas la razon.
Yo he visto caer a gente muy gorda por tratar de imponer un vision asi y los de abajo ir disimulando y pasando hasta que al final el proyecto fracasa. Creo con franqueza que esas cosas hay que imponerlas con firmeza porque al principio son:
- dificiles de entender
- dificiles de afrontar
- te obligan a salir de la comoda rutina.
Grandes tiempos los que vivimos!!!
Pues para evitar que deje de funcionar. Es un tema de escalabilidad.
"Hemos detectado una muy buena oportunidad de BPO. Con una inversion moderada en un proyecto de 6 meses calculamos un ahorro de x% en los proximos 3-5 años".
Que no es lo mismo.