¿Cuáles son los componentes necesarios para hacer una API web?

Supongo que ha leído bastante sobre el diseño de la API RESTFul. Además, una serie de aspectos en su pregunta se ocupan de la arquitectura de la aplicación, y le insto a que lea la aplicación The Twelve-Factor App. Los conceptos arquitectónicos se aplican de manera casi similar a todos los idiomas, con pequeñas variaciones.

Ahora, déjame usar tus comentarios para responder.

Digamos que si quiero hacer una API web (¿en Java?) Que se integra con un sitio web (o aplicación móvil), ¿cuáles son los componentes necesarios para eso?

Suponiendo que se refiere a un “sistema de solo backend”, codificado en Java, que expone una serie de puntos finales (o funcionalidades RESTful). Los componentes que necesitaría son los siguientes. Comencemos de abajo hacia arriba.

  • Base de datos: esto se explica por sí solo. Necesita una base de datos para almacenar las cosas que planea crear, leer o actualizar.
  • Application Middleware: aquí es donde implementaría la lógica de back-end. Puede usar varios idiomas aquí (por ejemplo, Java o Node). Esta es la capa donde se escribirán sus funcionalidades principales de back-end. Puede elegir exponer servicios como API externas directamente desde esta capa, o incluso crear otra capa en la parte superior para hacer el patrón de diseño de “puerta de enlace API”.
  • Servidor de aplicaciones : toda la lógica de back-end necesitaría un tiempo de ejecución para ejecutarse. En el contexto de las aplicaciones Java, es la máquina virtual Java. Para Node, es el motor Chromium V8, y así sucesivamente. Los servidores como Jetty se utilizan para este propósito (nuevamente, dependiendo del idioma).
  • Servidor web : en las aplicaciones tradicionales, los servidores web se usaban para hacer cosas como enrutamiento, transformación, lista blanca de IP, configuraciones de dominio, etc. En el desarrollo moderno, casi puede fusionar la idea de servidor de aplicaciones + servidor web. Como regla general, use servidores como NGINX para servir recursos estáticos y use servidores de aplicaciones back-end para ejecutar.

Para responder a sus consultas restantes.

  • ELB es una oferta de Amazon Cloud, y si recién está comenzando, recomendaría no preocuparse por el equilibrio de carga. Si tiene experiencia en el desarrollo de aplicaciones nativas en la nube (o alguien de su equipo), entonces ELB sería una excelente opción (dependiendo de la carga que genere su aplicación). Hay varias formas de equilibrar la carga cuando se trata de sistemas API solamente. Personalmente, me gusta el enfoque de puerta de enlace API, donde obtienes un control detallado de cada una de las API (como la aceleración, la fijación de precios, el control de rendimiento, etc.)
  • Vería arquitecturas utilizando tanto el servidor de aplicaciones como el servidor web porque lo más probable es que esas aplicaciones involucren tanto el procesamiento de back-end como algunas páginas web (junto con recursos estáticos como CSS, JS, etc.).
  • No está muy claro qué quiere decir con ” comunicarse con otras API”. Supongo que desea crear algún tipo de documentación para que otros puedan revisar sus API, etc. Eche un vistazo a Swagger para hacerlo. Esta es la forma recomendada de realizar el descubrimiento de API, y generalmente se realiza en el extremo del proveedor de API.

Si tiene alguna pregunta de seguimiento, estaremos encantados de responder. Espero que tengas un buen día.