¿Amazon todavía construye todo su software interno en torno a las API internas?

Gracias por el A2A. No puedo comentar sobre el contenido en la publicación de Steve Yegge, sin duda es una lectura entretenida :).

No estaba en Amazon cuando ocurrió el cambio (interno) a las API, por lo que no puedo hablar con autoridad sobre cómo sucedió todo , pero en los ~ 4 años que llevo aquí, he trabajado en docenas de proyectos que tenía dependencias de x-team y no puedo pensar en más de 3 ocasiones en las que no podríamos simplemente usar una API interna. Es posible que esto se haya producido debido a un mandato de arriba hacia abajo, pero ese ya no es el caso: los equipos crean interfaces de servicio de soporte porque permiten el desarrollo desacoplado.

Aquí hay algunas cosas que he observado:

  • Los equipos crean API reforzadas cuando saben que durará: la mayoría de los experimentos y pruebas no necesitan API reforzadas. Por lo general, puede pasar generando conjuntos de datos periódicamente, validando su hipótesis y exponiendo una API solo cuando esté seguro de que está dispuesto a admitirla.
  • Interna versus externa : en el n. ° 5 de la pregunta, no puedo imaginar que la mayoría de los equipos pasen mucho tiempo pensando en cómo externalizar sus API de inmediato. Sin embargo, los equipos tienen que pensar profundamente sobre el escalado, el endurecimiento, la seguridad, etc. al exponer una API.
  • Desarrollo desacoplado : fuera de un aviso amistoso, generalmente no necesita hacer mucho para comenzar a usar una API interna. Esto permite a los equipos avanzar rápidamente a ideas prototipo e incluso lanzar pruebas en vivo a pequeña escala. Hay algún tiempo de espera para escalar una flota en caso de que esté planeando generar una cantidad significativa de tráfico nuevo.
  • Archivos versus API : si su conjunto de datos es relativamente estático y pequeño (en relación con la RAM), es mejor que implemente archivos (por ejemplo, Berkely DB) que incurra en latencias por llamada al extraer datos a través de API.

More Interesting

¿Cuáles son las diversas fases involucradas en la especificación de diseño?

¿Qué empresa ofrece la mejor seguridad de aplicaciones web con un precio mínimo?

¿Cuál será el área de mayor crecimiento para una actualización de los servicios de infraestructura de TI TCS entre los siguientes: Windows 2008/12, Red Hat Linux o redes Cisco?

¿Cuáles son los beneficios de las pruebas unitarias de software altamente crítico?

¿Por qué existe la necesidad de externalizar el desarrollo de software?

¿Cómo era la ingeniería de software antes del control de fuente?

¿Cuál es el camino de crecimiento típico de una empresa de software de inicio?

¿Cuáles son las desventajas del convertidor de lenguaje de programación existente? ¿Es perfecto o tiene algunos errores o no es bueno en algunos puntos?

¿Cuáles son todas las tareas de un probador manual?

¿Alguien puede obligarme a elegir un proyecto para mis proyectos de último año en ingeniería informática?

¿Hay algún sitio web donde pueda obtener entrevistas de software reales con empresas tecnológicas mediante la resolución de problemas de codificación?

¿Hay buenos libros sobre pruebas de software?

¿Por qué se requiere una arquitectura asincrónica para lograr la escalabilidad? ¿Puede por favor proporcionar una aplicación / ejemplo de la vida real?

¿Existe una cámara de tráfico resistente a la intemperie basada en Arduino que sea de código abierto?

¿Qué programas de software debe conocer un ingeniero químico?