¿Cómo implementar un servicio web?

Este artículo analizará los servicios web, sus ventajas, las opciones de implementación de servicios web y cómo se comparan con las API.

Además de eso, aprenderá cómo implementar un servicio web de comercio electrónico en la nube sin escribir ningún código personalizado.

Reflexiones clave

  • Comprender el papel de los servicios web: los servicios web son un componente clave de la infraestructura digital moderna y ofrecen importantes ventajas como interoperabilidad, independencia de plataforma, escalabilidad y seguridad.
  • Exploración de opciones de implementación: la implementación de servicios web se puede abordar de varias maneras, incluido el alojamiento convencional, la plataforma como Servicio (PaaS), los contenedores como Servicio (CaaS) y el backend como Servicio (BaaS).
  • Orientación sobre la implementación de un servicio web en la nube: el artículo proporciona una guía completa sobre la implementación de un servicio web de comercio electrónico utilizando una plataforma BaaS sin código.

¿Qué es un servicio web?

Un servicio web es un software disponible a través de Internet, normalmente a través del Protocolo de Transferencia de Hipertexto (HTTP, del inglés “Hypertext Transfer Protocol”). Los datos proporcionados por un servicio web están en un formato estandarizado como XML, JSON, SOAP o YAML.

Los servicios web se utilizan para la comunicación de máquina a máquina en lugar de ser consumidos directamente por el cliente final.

Por ejemplo, su dispositivo móvil utiliza un servicio web meteorológico para obtener información meteorológica y luego la muestra en un formato agradable.

Existen varios tipos de servicios web, como Representational State Transfer (REST), GraphQL y gRPC.

El ciclo de vida típico de un servicio web se ve así:

  1. Un servicio web escucha en algún servidor en un puerto específico.
  2. Un cliente envía una solicitud al servicio web en ese puerto.
  3. El servicio web realiza la solicitud y devuelve una respuesta. Antes de procesar la respuesta, el servidor también puede autenticar y autorizar la solicitud.
  4. El cliente procesa la respuesta.

Los servicios web son conocidos por su independencia de plataforma y lenguaje, reutilización, escalabilidad, flexibilidad y falta de acoplamiento. Hoy en día, los utilizan casi todas las empresas de informática.

Servicio web vs API

Servicio web y API son términos similares, pero no deben usarse indistintamente.

En términos simples, un servicio web es una API que está disponible estrictamente a través de Internet. Esto significa que todos los servicios web son API, aunque no todas las API son servicios web.

Web Service versus Application Programming Interface (API)

Las API, además de ser servicios web, también pueden realizar otras acciones. Por ejemplo, interacciones del sistema operativo, comunicación de aplicaciones locales e integraciones de aplicaciones.

Dos ejemplos de API que no son de servicios web son la API del sistema de archivos Python y la API DOM de JavaScript.

Ventajas del servicio web

Los servicios web son un aspecto fundamental de la infraestructura digital moderna y ofrecen numerosas ventajas. ¡Hablemos de ellos!

Interoperabilidad

Una de las ventajas clave de los servicios web es su capacidad para facilitar la interoperabilidad entre diferentes sistemas y aplicaciones.

Al adherirse a protocolos estandarizados como HTTP y XML, los servicios web permiten una comunicación perfecta entre diferentes componentes de software, independientemente de la tecnología subyacente.

Independencia de plataforma

Otra gran ventaja de los servicios web es que son totalmente independientes de la plataforma. Pueden implementarse en cualquier lenguaje de programación y ejecutarse en cualquier sistema operativo, incluidos Windows, Linux y MacOS.

Como se mencionó en el apartado anterior, también se pueden consumir en cualquier plataforma.

Sencillo y eficiente

Los servicios web son fáciles de entender e implementar. La mayoría de las veces ni siquiera tienen su propio estado. En cambio, utilizan una base de datos o utilizan otro componente de software.

Ofrecen un enfoque sencillo para acceder a la funcionalidad a través de una red. Esta simplicidad contribuye a la coherencia en las interacciones, lo que facilita la comprensión y el uso de los servicios en diferentes plataformas y tecnologías.

Escalabilidad

Los servicios web son altamente escalables. Pueden acomodar cualquier tráfico mediante escalamiento vertical, es decir, agregando recursos adicionales a un nodo de servidor, o escalamiento horizontal, es decir, generando nodos de servidor adicionales.

Esto puede ayudarle a reducir considerablemente los costos al garantizar que no se desperdicien recursos informáticos.

Reutilizabilidad

Lo mejor de los servicios web es que son altamente reutilizables. En lugar de integrar el mismo código en múltiples aplicaciones, todas pueden utilizar una única instancia de un servicio web.

La reutilización da como resultado una base de código más pequeña y más fácil de mantener, una mejor centralización y le permite ahorrar recursos.

Seguridad

Los servicios web pueden aprovechar la autenticación, autorización, cifrado y otras medidas de seguridad. La mayoría de los servicios web están protegidos mediante cifrado SSL/TSL.

Todo esto garantiza la confidencialidad (garantizando que sólo el remitente y el receptor pueden leer el mensaje) y la integridad (el mensaje no se modifica durante el tránsito).

Opciones de implementación de servicios web

Los servicios web pueden ser auto alojados o implementarse en la nube. Las opciones de nube más populares para implementar servicios web son:

  • Plataforma como Servicio (PaaS)
  • Contenedores como Servicio (CaaS)
  • Backend como Servicio (BaaS)

Cada modelo de nube tiene ventajas y desventajas que deben considerarse al implementar su proyecto.

Los factores más importantes a tener en cuenta son la facilidad de uso, el presupuesto, el rendimiento y las funciones.

Web Service Hosting Pyramid

Alojamiento convencional

El alojamiento convencional es un enfoque tradicional para alojar sitios web y aplicaciones. Los servidores pueden ser auto alojados o proporcionados por empresas de alojamiento.

Con el alojamiento tradicional, normalmente alquila espacio en el servidor mensual o anualmente.

Las características clave del alojamiento convencional incluyen:

  • Espacio en el servidor: varios planes de espacio en el servidor según las necesidades de su aplicación
  • Herramientas de administración de sitios web: herramientas fáciles de usar para administrar sitios web, por ejemplo, cPanel
  • Alojamiento de correo electrónico: servicios de alojamiento de correo electrónico que le permiten asociarles un dominio.
  • Acceso FTP: se puede acceder a los archivos del servidor a través de FTP o FTP seguro (SFTP)

Una de las principales ventajas del alojamiento convencional es su asequibilidad, especialmente para sitios web y empresas pequeñas.

Sin embargo, carece de escalabilidad y flexibilidad en comparación con las soluciones basadas en la nube. El alojamiento convencional también es más difícil de configurar.

Plataforma como Servicio (PaaS)

La plataforma como Servicio (PaaS) permite a los clientes crear, administrar y distribuir aplicaciones en un entorno de nube.

Además, las empresas PaaS proporcionan una variedad de herramientas prediseñadas para la creación, personalización y prueba de aplicaciones.

En comparación con IaaS, PaaS es más sencillo de usar y requiere menos experiencia en la administración de sistemas.

Además, puede beneficiarse de balanceadores de carga, bases de datos administradas y copias de seguridad automáticas.

En comparación con IaaS, PaaS tiene menos libertad y control y tiene un mayor riesgo de dependencia del proveedor.

Contenedores como Servicio (CaaS)

Los contenedores como Servicio (CaaS) son otro modelo popular de computación en la nube. CaaS simplifica el desarrollo, ejecución, implementación y mantenimiento de software en contenedores. Con frecuencia se combina con Docker y Docker Compose.

La mayoría de las plataformas CaaS proporcionan:

  • Motor acoplable
  • Registro de contenedores
  • Capacidades de escalabilidad

La principal ventaja del software en contenedores es que se puede implementar en cualquier lugar. No hay dependencia de un proveedor, lo que significa que puede cambiar libremente de un proveedor de nube a otro. Esto es específicamente útil para servicios web.

Backend como Servicio (BaaS)

Backend como Servicio (BaaS) es un modelo de computación en la nube que se ocupa de su infraestructura y automatiza la parte backend del desarrollo.

Además, ofrece capacidades como base de datos en tiempo real, almacenamiento de archivos, integraciones de redes sociales, correo electrónico y notificaciones push, y más.

Como resultado, los desarrolladores pueden concentrarse en crear el frontend sin preocuparse por la infraestructura y el backend.

La interfaz a menudo se construye utilizando las API y SDK patentados del proveedor de BaaS. Al utilizar BaaS, puede simplificar el código base y hacerlo más fácil de mantener.

BaaS proporciona todas las ventajas de IaaS y PaaS al mismo tiempo que proporciona una capa de abstracción de backend.

Al utilizar BaaS, los equipos reducen el tiempo de comercialización y ahorran dinero en ingeniería y mano de obra.

¿Cómo implementar un servicio web?

Esta sección de artículo proporcionará una guía paso a paso sobre cómo implementar un servicio web en la plataforma Back4app. Usaremos la solución BaaS sin código de Back4app.

Si está interesado en soluciones de código personalizado, consulte los siguientes artículos:

  1. Implementar un servicio web Flask en Back4app Containers 
  2. Implementar un servicio web Node.js en Back4app Containers 
  3. Implementar un servicio web PHP en Back4app Containers 
  4. Implementar un servicio web FastAPI en Back4app Containers 

¿Qué es Back4app?

Back4app es una de las soluciones Backend como Servicio (BaaS) más populares.

Al usarlo, podrá acelerar significativamente su proceso de desarrollo y concentrarse en los aspectos elementales de su aplicación, como la lógica de negocios y la interfaz, mientras que Back4app se encargará del resto.

Back4app proporciona implementación sin código y con código personalizado. Es sencillo de usar y prácticamente no tiene curva de aprendizaje. Es apropiado tanto para principiantes como para desarrolladores más experimentados.

Lo mejor de Back4app es que genera automáticamente API RESTful y GraphQL basadas en las clases de su base de datos.

Además de eso, proporciona SDK para casi todos los lenguajes o marcos de programación populares, como React, Android, iOS y más.

Funciones principales de Back4app

  • Bases de datos tipo hoja de cálculo
  • Gestión y autenticación de usuarios
  • Generación automática de API
  • Funciones y programación de Cloud Code
  • Datos en tiempo real

Para seguir el artículo, necesitará una cuenta gratuita de Back4app. Si no la tiene puede crear una.

Introducción al proyecto

A lo largo del artículo, crearemos una API web de comercio electrónico sencilla.

La API proporcionará funcionalidades de gestión de compras, categorías de productos y productos. Nos permitirá realizar operaciones de creación, lectura, actualización y eliminación (CRUD, del inglés “create, read, update, and delete”) en cada clase de base de datos.

Además de eso, usaremos Cloud Code para implementar funciones personalizadas para calcular estadísticas de comercio electrónico, como las ventas totales y los productos más populares.

Por último, probaremos la API utilizando la consola REST y GraphQL integrada de Back4app.

Crear aplicación

Para trabajar con Back4app, primero tendrá que crear una aplicación. Para hacerlo, autentíquese usando su cuenta Back4app y haga clic en “Crear nueva aplicación” en el panel de la aplicación.

Back4app Create App

La plataforma Back4app le permite implementar dos tipos de aplicaciones:

  1. Backend como Servicio (BaaS)
  2. Contenedores como Servicio (CaaS)

Ambos modelos de computación en la nube le permiten implementar servicios web.

La principal diferencia es que BaaS es un backend completo, mientras que CaaS le permite implementar servicios web en contenedores.

En otras palabras, BaaS es una solución mayoritariamente sin código, mientras que CaaS es una solución de código personalizado.

Optaremos por Backend como Servicio (BaaS).

Back4app Backend as a Service (BaaS)

Al crear una aplicación Back4app, puede elegir entre una base de datos NoSQL o SQL. Para nuestro caso de uso, esto no importa, por lo que nos quedaremos con NoSQL.

Dele un buen nombre a su aplicación y haga clic en “Crear”.

Back4app App Configuration

Espere a que Back4app se encargue de todo, incluida la base de datos, la capa de aplicación, el escalado, la configuración de la administración de usuarios, etc. Tardará aproximadamente 2 minutos.

Una vez hecho esto, será redirigido a la vista de su base de datos.

Back4app Database View

Diseño de la base de datos

Continuando, cuidemos la base de datos.

De forma predeterminada, una aplicación Back4app viene con una clase de base de datos _Role y _User. Estas dos clases se utilizan para la gestión y autenticación de usuarios.

Estos temas están fuera del alcance de este tutorial, pero puede consultar nuestros otros artículos para obtener más información sobre ellos.

Para crear nuestra API web de comercio electrónico, crearemos la siguiente estructura de base de datos:

E-Commerce Database ER Diagram

Comenzaremos creando la clase ProductCategory.

Haga clic en “Agregar clase” en la barra lateral para crear una nueva clase de base de datos. Nómbrela “ProductCategory”, habilite “Lectura y escritura pública” y haga clic en “Crear clase y agregar columnas”.

Back4app Create Class

Agregue las siguientes columnas:

+-----------------------------+-------------+---------------+----------+
| Type                        | Name        | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String                      | name        | <leave blank> | yes      |
+-----------------------------+-------------+---------------+----------+
| String                      | description | <leave blank> | no       |
+-----------------------------+-------------+---------------+----------+

A continuación, realice los mismos pasos para crear una clase Producto:

+-----------------------------+-------------+---------------+----------+
| Type                        | Name        | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| String                      | name        | <leave blank> | yes      |
+-----------------------------+-------------+---------------+----------+
| String                      | description | <leave blank> | no       |
+-----------------------------+-------------+---------------+----------+
| Relation -> ProductCategory | categories  | true          | yes      |
+-----------------------------+-------------+---------------+----------+
| Number                      | price       | 0.0           | yes      |
+-----------------------------+-------------+---------------+----------+
| Boolean                     | inStock     | true          | yes      |
+-----------------------------+-------------+---------------+----------+

Por último, encárguese de la clase Compra:

+-----------------------------+-------------+---------------+----------+
| Type                        | Name        | Default value | Required |
+-----------------------------+-------------+---------------+----------+
| Pointer -> Product          | product     | <leave blank> | yes      |
+-----------------------------+-------------+---------------+----------+
| Number                      | quantity    | 1             | yes      |
+-----------------------------+-------------+---------------+----------+

Excelente, ha creado con éxito la estructura de la base de datos.

Como puede ver, el tipo de datos Puntero maneja las relaciones 1:n (uno a muchos) y el tipo de datos Relación maneja las relaciones n:m (muchos a muchos).

Lo último que debe hacer es completar la base de datos con algunas categorías de productos, productos y compras. Esto nos permitirá probar el servicio web más adelante para asegurarnos de que todo funcione como se esperaba.

Para completar la base de datos, puede:

  1. Crear algunas categorías de productos, productos y compras usted mismo
  2. Importar estas exportaciones de bases de datos desde GitHub (“Más > Importar > Datos de clase”)

Uso del servicio web

Para conectarse al servicio web, Back4app permite múltiples enfoques:

  1. API RESTful generada automáticamente
  2. API GraphQL generada automáticamente
  3. SDK de Parse

¡Echemos un vistazo a cada uno de ellos!

REST API

La transferencia de estado representacional (REST) es un protocolo basado en HTTP que aprovecha métodos HTTP, como OPTIONS, GET, POST, DELETE, etc.

La mayoría de las API con las que interactúa hoy en día están basadas en REST. Admite múltiples formatos de datos, pero JSON es el más utilizado.

REST es un protocolo eficaz, altamente escalable e independiente de la plataforma. Se puede utilizar con cualquier lenguaje o framework de programación.

Sus principales desventajas son la obtención excesiva o insuficiente de datos, la falta de suscripciones en tiempo real y la falta de un sistema de control de versiones API.

Para probar la API REST, seleccione “API > Consola > REST” y realice la siguiente consulta:

Back4app REST Console

Esta consulta debería producir la siguiente respuesta:

{
    "results": [
        {
            "objectId": "UKeOHJkJ7l",
            "name": "Winter Jacket",
            "description": "Warm and cozy for the chilly weather",
            "price": 129.99,
            "inStock": true,
            "createdAt": "2024-05-26T23:02:48.503Z",
            "updatedAt": "2024-05-26T23:02:48.503Z",
            "categories": {
                "__type": "Relation",
                "className": "ProductCategory"
            }
        },
        // ...
}

Para obtener más información, consulte ¿Cómo crear una API REST?

GraphQL API

GraphQL es un lenguaje de consulta y tiempo de ejecución del lado del servidor que se utiliza para crear interfaces de programación de aplicaciones (API, del inglés “application programming interfaces”).

GraphQL permite a los clientes solicitar datos específicos de la API en lugar de depender del backend para proporcionar un conjunto de datos predeterminado.

Sus ventajas incluyen flexibilidad, mantenibilidad y extensiones GraphQL. Por otro lado, las desventajas son la complejidad, una curva de aprendizaje más pronunciada y la falta de estandarización.

Para probar la API GraphQL, seleccione “API > Consola > GraphQL” y realice la siguiente consulta:

Back4app GraphQL Console

Para obtener más información, consulte ¿Cómo crear una API GraphQL?

Parse SDK

El SDK de Parse es el enfoque recomendado si su interfaz está construida en un lenguaje o marco de programación que el SDK de Parse admita de forma nativa.

Estos incluyen React Native, Flutter, Android, iOS, JavaScript, IONIC y Xamarin.

Back4app API Connect

El kit de desarrollo de software (SDK, del inglés “software development kit”) de Parse proporciona clases y funciones para recuperación de datos, manipulación, autenticación de usuarios, datos en tiempo real, funciones de Cloud Code y más.

El código de recuperación de datos de ejemplo en JavaScript se ve así:

Documentación de API

Otra gran ventaja de Back4app es que genera automáticamente documentación para todas sus clases de bases de datos.

La documentación incluye descripciones de modelos, ejemplos prácticos, instrucciones sobre cómo manejar errores y más.

Seleccione “API > Referencia de API” en la barra lateral para ver los documentos.

Back4app Automatic Documentation

Cloud Code

Las API generadas automáticamente son excelentes, pero no puede hacer todo con ellas. Por ejemplo, si desea realizar consultas complejas, agregar datos o ejecutar código personalizado, debe utilizar las funciones de Cloud Code.

Las funciones de Cloud Code son la oferta de Funciones como Servicio (FaaS) de Back4app. Le permiten definir funciones JavaScript personalizadas, que puede activar a través de la API o programarlas en un horario fijo.

Crear funciones de Cloud Code

Creemos dos funciones de Cloud Code para calcular estadísticas de comercio electrónico:

  1. totalRevenue() calculará los ingresos totales agregando las compras
  2. topTenPopularProducts() devolverá los productos más populares según las compras

Primero, navegue hasta “Cloud Code > Funciones y alojamiento web” en la barra lateral.

Notará que la pantalla está dividida en dos paneles. La estructura del directorio está a la izquierda; puede ingresar su código a la derecha.

Los directorios predeterminados son:

  1. cloud utilizado para funciones de Cloud Code y otros códigos
  2. public servido automáticamente por Back4app (activos estáticos, CSS, HTML)

Navegue hasta main.js.

Back4app Cloud Code

Luego, coloque el siguiente código dentro:

Por último, haga clic en “Implementar” para implementar las funciones en la nube.

El código anterior se generó utilizando Back4app Agent, un AutoGPT para desarrolladores. El agente está estrechamente integrado con Back4app y Back4app Containers. Le permite crear aplicaciones, modificar la configuración de las aplicaciones, generar código personalizado y más.

Prueba de funciones de Cloud Code

En esta última sección, probaremos las funciones de Cloud Code recién implementadas.

Primero, seleccione “API > Consola > JavaScript” en la barra lateral y luego pegue el siguiente código:

Para ejecutarlo, haga clic en “Ejecutar” en la parte superior derecha de la pantalla.

Debería obtener las siguientes respuestas:

// `totalRevenue` output

{
  "result": 9385.389999999994
}

To run the other function replace totalRevenue with topTenPopularProducts.

// `topTenPopularProducts` output

{
  "result": [
    {"objectId": "SA5mUfq9Ll", "name": "Science Fiction Novel", "count": 3},
    {"objectId": "fV0DFPFlnz", "name": "Yoga Mat", "count": 3},
    {"objectId": "gA4zn19Udo", "name": "Smartphone", "count": 2},
    {"objectId": "UKeOHJkJ7l", "name": "Winter Jacket", "count": 2},
    {"objectId": "8PodlEps2R", "name": "Espresso Machine", "count": 2},
    {"objectId": "S15WrDgrpk", "name": "Hair Dryer", "count": 2},
    {"objectId": "8O2D1egX51", "name": "4K Television", "count": 1},
    {"objectId": "RriSWMDg48", "name": "Face Cream", "count": 1},
    {"objectId": "Cq3Hqww69Q", "name": "Blender", "count": 1}
  ]
}

Conclusión

En conclusión, ha aprendido sobre los servicios web, sus ventajas, las opciones de implementación y cómo se comparan con las API.

Ahora también debería poder implementar su propio servicio web en Back4app BaaS.

Para obtener recursos de artículos adicionales, consulte el repositorio back4app-web-service.


Leave a reply

Your email address will not be published.