Fundamentos de Arquitectura de Software: APIs, Bases de Datos y Protocolos

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,76 KB

1. Definición de APIs y Servicios Web

A continuación, se presenta un ejemplo de especificación de API utilizando OpenAPI:

paths:
  /api/users/{id}:
    get:
      summary: Obtiene un usuario por su ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Usuario encontrado con éxito
        '404':
          description: No encontrado
    post:
      summary: Crea un usuario
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                nombre:
                  type: string
      responses:
        '201':
          description: Creado

2. Formatos de Intercambio de Datos

XML

Ejemplo de estructura XML:

<grupo>
  <usuario id="u101">
    <nombre>Juan</nombre>
    <edad>20</edad>
  </usuario>
</grupo>

JSON Schema

Validación de datos mediante JSON Schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "nombre": { "type": "string" },
    "edad": { "type": "integer", "minimum": 0 },
    "rol": { "type": "string", "enum": ["admin", "user"] }
  },
  "required": ["nombre", "edad"],
  "additionalProperties": false
}

3. Consultas en Bases de Datos NoSQL (MongoDB)

  • Búsqueda con condiciones:
    db.users.find({ edad: { $gte: 18, $lte: 30 }, ciudad: "Madrid" })
  • Lógica OR y ordenamiento:
    db.users.find({ $or: [{ rol: "admin" }, { activo: true }] }).sort({ edad: -1 })
  • Modificaciones:
    db.users.updateOne({ email: "[email protected]" }, { $set: { activo: false } })
    db.users.updateOne({ nickname: "player1" }, { $push: { logros: "Primer Login" } })

4. Comparativa de Tecnologías de Comunicación

Existen diversos paradigmas para la comunicación entre sistemas:

  • REST: Basado en texto/HTTP 1.1.
  • GraphQL: Un solo endpoint flexible.
  • gRPC: Binario de alto rendimiento, basado en RPC sobre HTTP/2 y Protocol Buffers.

Servicios Web: SOAP vs REST

  • SOAP: Protocolo rígido, mensajes exclusivamente en XML (Envelope, Header, Body). Requiere contrato WSDL.
  • REST: Estilo arquitectónico agnóstico al formato (JSON, XML). Utiliza OpenAPI/Swagger como contrato.

Modelo de Madurez de Richardson (REST)

  1. Nivel 0: Una sola URI y un método (POST).
  2. Nivel 1: Identificación de recursos mediante URIs.
  3. Nivel 2: Uso de verbos HTTP semánticos y códigos de estado.
  4. Nivel 3: HATEOAS (Hipermedios).

5. Gestión de Tráfico y Escalabilidad

  • Rate-Limiting: Protección contra DoS mediante algoritmos como Token Bucket o Fixed/Sliding window.
  • Escalabilidad: Scale Up (Vertical) vs Scale Out (Horizontal).
  • Teorema CAP: Elección entre Consistencia (C), Disponibilidad (A) y Tolerancia a particiones (P).

6. Procesamiento XML

  • DOM: Carga todo el árbol en RAM (bidireccional).
  • SAX: Basado en eventos, secuencial, bajo consumo de memoria.
  • Transformación: XSLT permite convertir XML a otros formatos.

Entradas relacionadas: