Filosofía

En Yuneta buscamos modelos (patterns) que nos permitan representar y visualizar todo tipo de realidades.

Reinos

Los sistemas de Yuneta se organizan en reinos.

Los reinos tienen tres propiedades:

  • Role (clase del reino)

  • Name (instancia del reino)

  • Owner (dueño del reino)

Interface del reino de Yuneta con la Web (url)

El interface entre los reinos y las urls es:

https://{Realm Name}.{Realm Role}.{environment}/{Realm Owner}

ó

https://{name}.{role}.{environment}/{owner}

Ejemplos

  • https://demo.saludatos.ovh/chris@gmail.com

    Sistema abierto donde usuarios anónimos pueden crearse 1 o mas reinos, lo que el sistema permita.

    https://demo.saludatos.ovh/chris@gmail.com
    
        - realm_owner   = chris@gmail.com   (owner)
        - realm_role    = saludatos         (service class)
        - realm_name    = demo              (service instance)
        - environment   = ovh               (staging)
    
  • https://mulesol.siguerastro.com/mulesol

    Sistema cerrado, por ejemplo, el servicio de una empresa. Aquí el owner define qué usuarios están autorizados a entrar.

    La parte final de la url sobra (owner), porque es redundante.

    https://mulesol.siguerastro.com/mulesol
    
        - realm_owner   = mulesol           (owner)
        - realm_role    = siguerastro       (service class)
        - realm_name    = mulesol           (service instance)
        - environment   = com               (production)
    
  • https://comunidad-madrid.saludatos.es/hospital-princesa

    Sistema cerrado con diferentes subdominios, por ejemplo una organización pública.

    https://comunidad-madrid.saludatos.es/hospital-princesa
    
        - realm_owner   = hospital-princesa (owner)
        - realm_role    = saludatos         (service class)
        - realm_name    = comunidad-madrid  (service instance)
        - environment   = es                (production)
    

Términos del Reino

Los reinos tiene las propiedades de Role y Name.

El Role define la clase del reino.

El Name es una instancia de la clase.

La instancia del reino, tiene otra propiedad: Owner, que define quién es el propietario del reino.

La url del frontend define el reino al que se quiere entrar.

El propietario de un reino puede añadir a su reino a otros usuarios y definir qué tipo de autorizaciones tienen.

Modelo Entidad/Relación

Describimos la realidad clasificándola en Entidades y en las Relaciones existentes entre dichas entidades.

Entidades

Describimos las entidades con el modelo

  • Role/instancia

Este modelo también lo podemos nombrar como:

  • Clase/objeto

  • Tabla/registro

  • Grupo/elemento

Relaciones

Describimos las relaciones también con modelos pares:

Modelos:

  • Padre/Hijo

    El padre (o una factory) crea y se conecta al hijo.

  • Servicio/Cliente

    El cliente conoce y se conecta al servicio.

Transporte de Mensajes

Las entidades intercambian mensajes a través de sus relaciones o enlaces.

Patrones de comportamiento:

Contenido de Mensajes

El modelo de datos usado en el contenido de los mensajes, tanto internamente como externalmente, tanto en persistencia como en transporte, es el de clave/valor.

Yuneta puede añadir además el modelo serie/tiempo a los mensajes transportados.

Codificación y Persistencia

Todos los modelos están representados en JSON, tanto en memoria como en disco, usando bases de datos Jerárquicas y Gráficas, de Clave/Valor y Serie/Tiempo.

Ejemplo de topologías:

CRUDLU

Las operaciones básicas en las entidades son el clásico CRUD (Create, Read, Update, Delete). Pero al añadir las relaciones entre entidades, nesitamos añadir las operaciones:

  • Link

  • Unlink

CRUDLU: (Create, Read, Update, Delete, Link, Unlink)