Nuxeo &  Modularity

Nuxeo Runtime & Bundles

Component Model

  • In Nuxeo architecture everything is a plugin
  • ​Everything is configurable
    • ​Logic and Data Structures depend on configuration

Component Model

bundle-xyz-api

 bundle-xyz-core

Implements

bundle-xyz-custom

Contributes / Extends

Component Model

audit-api

 audit-core

Implements

audit-elasticsearch

Contributes Backend

changes where the audit entries are stored

Component Model

audit-api

 audit-core

Implements

audit-config

Contributes Audit log customization

changes what is stored in the log

Component Model

bundle-xyz-api

 bundle-xyz-core

bundle-custom

Contributes / Extends

bundle-abc-api

 bundle-abc-core

bundle-foo-api

 bundle-foo-core

Bundle generated by nuxeo-studio targets multiples bundles

Component Model

  • Bundles are assembled as an Application at startup time
  • ​Runtime startup
    • ​resolve dependencies
      • ​component-xyz depends on component-abc
      • component-foo contributes to component-bar
    • activate components in the right order
    • resolve contribution
    • start Application

Plugins everywhere

One plugin model for

  • All layers
  • The platform
  • Your custom components

About Extension points

  • 260 Bundles
    • 200+ Components
      • 180+ Services exposed
      • 280+ Extension points
    •  1000+ Contributions

Pretty much everything inside the Platform can be customized

Assembling an Application

Assembling an Application

Assembling an Application

Assembling an Application

Anatomy of a Nuxeo based Application

  • Easy maintenance and upgrade

    • Clear separation between infrastructure provided by Nuxeo
      and the custom components

    • Nuxeo Studio configuration is transparently upgraded

Assembling an Application

Assembling an Application

Assembling an Application

UI Node

Converter Node

Importer Node

Scaling / Clustering

Scaling / Clustering

Scaling / Clustering

Scaling / Clustering

Clustering Bundles?

  • We cluster and scale nodes not bundles
    • node = Runtime + set of bundles
       
  • Each cluster node must be a workable unit
    • ​Runtime
    • Repository access
    • Services and APIs
       
  • Most of the time all nodes are technically equivalent
    • Same set of bundles on each node
    • Only small configuration differences
  • Maintenance & upgrade are much simpler!

Automation

Build, test, package, deploy

Bundles

Test & package

Ship!

About packages

  • Packaging and Deployment
    • Debian packages & Brew
    • Nuxeo packages (install/update/uninstall)
    • VM images / Docker images
    • AWS templates
  • Application Deployment
    • Docker-Compose / Rancher tempates
    • ​AWS CloudFormation
    • Ansible

Big Picture

DEPloy & Updates

versions, updates

Layers

Layers

ZIP Archive

Layers

Debian Package

Layers

VM

Layers

Debian Package

Nuxeo Packages

Layers

Docker
Container

Bundles versions & Packages

Bundles versions & Packages

Bundles versions & Packages

Bundles versions & Packages

Bundles versions & Packages

Bundles versions & Packages

Bundles versions & Packages

Nuxeo Cloud

Hosting Nuxeo on AWS

Nuxeo Cloud on AWS

  • Leverage AWS Security
    • VPC / Bastion access
    • Encryption possible
  • Leverage AWS Services
    • RDS for SQL Storage
    • S3 for Binary Storage
    • ElasticCache for Caching
  • ​EC2 deployent
    • MongoDB and Elasticsearch
  •  Monitoring
    • ​DataDog

Nuxeo Cloud on AWS

Nuxeo Cloud on AWS & Projects

  • Architecture
    • ​Ad-hoc deployment depending on project
    • 1, 2, 3...5 VMs depending on requirements
    • can leverage autoscaling
       
  • Update management
    • depends on project organization
    • updates can be Jenkins automated
      • if we own the project

Nuxeo on YOUR AWS

  • When customers have IT infrastructure
    • ​Deploy on their AWS
    • Leverage VPN and direct access
       
  • ​Nuxeo provides
    • The tools & the recipes
       
  • Customer can handle their own dev/update cycle

Nuxeo & Containers

Components & Deployment

By Thierry Delprat

Components & Deployment

  • 2,182