¿Cómo debemos desarrollar una API de base de datos que será utilizada por múltiples aplicaciones de cliente web?

Aquí hay algunas cosas que debería tener en cuenta:

  • ¿Qué tipo de patrones de tráfico esperas, especialmente en lo que respecta a lecturas vs escrituras? ¿Puedes separarlos? Es mucho más fácil escalar varias instancias de db que saben que solo necesitan entregar lecturas.
  • ¿Cómo son sus datos? ¿Tiene experiencia con un solo tipo de base de datos relacional o podría usar postgres o mysql sin problemas para cambiar? ¿Hay piezas que deberían usar algo como Redis?
  • Si va a tener un tráfico real que llegue a estas API, es probable que esté almacenando datos en caché. Piense en esa realidad ahora y en lo que eso significará para todos sus consumidores. No optimices prematuramente, pero no esperes hasta que tengas meses y no puedas encontrar la forma de frenar el tren fuera de control.
  • Mantenlo tan simple como puedas, porque se volverá más complicado de lo que esperas.
  • Dentro de lo razonable, es más fácil comenzar las cosas en un estado separado / coordinado y crecer con ese diseño que comenzar con un monolito e intentar extraerlo más tarde.

Básicamente, piense en las cosas por adelantado, pero no planee demasiado.

Asegúrese de conocer las nuevas características de Rails 3 (¿tienen sentido los motores / aplicaciones montables?)

Aproveche las herramientas apropiadas para las necesidades específicas (¿pueden los redis quitarle algo de calor a su base de datos?)

Construye, mide, aprende.

Sin saber nada más sobre su caso de uso, si está utilizando rieles hay muchas convenciones a seguir que probablemente lo guiarán en la dirección correcta.

  • Modelos gordos (mantener la lógica en los modelos lo hace fácilmente comprobable con pruebas unitarias)
  • Controladores delgados (sus controladores son solo puntos finales para llamar a algunos métodos de instancia de modelo con algunos parámetros, manténgalos simples
  • use Decoradores y ActiveModelSerializers, esto le permite presentar sus datos de diferentes maneras según cómo el cliente le pida que los consuma.

Diseñar una API para que lo consuman varios clientes es un desafío. Rails tiene muchas herramientas, bibliotecas y convenciones en su lugar que pueden ayudarlo.

Debería usar algo como Swagger (Swagger.io) para poner en pie una API. El beneficio de usar algo como Swagger es que obtienes mucha funcionalidad fuera de la caja.

Además de Swagger para la API, puede tener sentido usar un marco como SailsJS y / o loopback para construir la aplicación alrededor de la API.

Los clientes móviles y web pueden consumir la API y puede seguir agregando funciones y lógica de negocios a la aplicación.