SlideShare a Scribd company logo
Building Multi-Tenant
and SaaS products in PHP
What is Innomatic?
2
First of all: what is NOT Innomatic?
Innomatic is NOT a framework like Laravel or Symfony
– in fact, we are progressively migrating to a system
based on Symfony components!
3
So, what really is Innomatic?
Innomatic is an open source platform for:
developing, deploying and managing
Multi-Tenant and SaaS web applications in PHP
4
Building multi-tenant apps
and SaaS products in
Innomatic
5
Building new SaaS: Classic vs Innomatic approach
6Innomatic Platform
Go live!
Classic life cycle
Innomatic life cycle
Learn and
configure
Innomatic
+ time
+ budget
to develop & market the
app
Innomatic Platform
Go live!
(late…)
Develop infrastructure
(multi tenancy, build system,
billing tools, CRM, etc.)
- Time
- budget
to develop & market the
app
Opt.: Innomedia CMF for web
sites
+ Innowork BAF for intranets
Innomatic Layers
7Innomatic Platform
Debug
Tenant Web Apps
HTTP Kernel File system Routing
Cache Localization Logging Web servicesSymfony
Components based
deploy and tasks
AppCentral
Root Desktop Tenant Desktop
Panels / Web User
Interface
Dependency
Injection
Database / ORM Templating Class Loader
Multi tenancy
Applications
container
Tenant Users /
RBAC
PackagesComposer
Innomatic
Innomedia CMF Innowork BAF SaaS tools
(billing, CRM, tickets, …)
Other major
Frameworks
and tools
PLATFORM
Multi-Tenancy in Innomatic
8Innomatic Platform
Innomatic strategy:
Multi-Tenant code + Single Tenant databases
Frustrated Sysadmin/Developer
9Innomatic Platform
Innomatic = Innovation + AUTOMATIC
Innomatic handles this for you
Deployment and update tasks are
automatized by Innomatic for each tenant
10Innomatic Platform
An Innomatic application is a set of components of the types supported
by Innomatic or other Innomatic based applications:
•  PHP classes,
•  database tables,
•  catalogues of localization strings,
•  dashboard widgets,
•  desktop UI elements,
•  traybar items,
•  maintenance tasks,
•  etc.
Structure of an Innomatic application
11Innomatic Platform
This is the core of Innomatic automation at runtime.
Each component type defines the operation to be executed
in the following phases:
Innomatic components operations
Innomatic Platform 12
Application:
•  Deploy inside Innomatic
•  Upgrade
•  Undeploy
Tenant:
•  Enable component to the tenant
•  Upgrade component in the tenant
•  Disable component from the
tenant
<?xml version='1.0'?>
<application>
<definition>
<idname>example-basic-app</idname>
<release>
<version>1.0.0</version>
<date>2014/10/07</date>
<changesfile>CHANGES</changesfile>
</release>
<description>Innomatic example: basic application</description>
<category>examples</category>
<iconfile></iconfile>
<dependencies>
<dependency>innomatic[6.4.0]</dependency>
</dependencies>
<options>
<!-- <option></option> -->
</options>
The application.xml file 1/3 – Meta data part 1
Innomatic Platform 13
<legal>
<author>
<name>Innomatic Company</name>
<email>info@innomatic.io</email>
<web>http://www.innomatic.io/</web>
</author>
<copyright>Copyright (c) 2014 Innomatic Company</copyright>
<license>New BSD</license>
<licensefile>LICENSE</licensefile>
</legal>
<support>
<supportemail>support@innomatic.io</supportemail>
<bugsemail>bugs@innomatic.io</bugsemail>
<maintainer>
<name>Alex Pagnoni</name>
<email>alex.pagnoni@innomatic.io</email>
</maintainer>
</support>
</definition>
The application.xml file 2/3 – Meta data part 2
Innomatic Platform 14
<components>
<tempdir name="example-basic-app" />
<domaingroup name="examples"
catalog="example-basic-app::misc" />
<domaintable name="example_basic_table"
file="example_basic_table.xml" />
<domainpanel name="basicapp"
catalog="example-basic-app::misc" category="examples" />
<catalog name="example-basic-app" />
<class name="examples/basic/BasicClass.php" />
</components>
</application>
The application.xml file 3/3 – Components
Innomatic Platform 15
You can also use
Composer for your
classes
You can also declare your dependencies to external packages
using Composer: you only have to add your composer.json
inside your application package.
Since Innomatic is a platform and you deploy applications at
runtime, Innomatic provides a recursive Composers
dependencies feature with multiple composer.json from different
Innomatic applications.
Including classes and packages with Composer
Innomatic Platform 16
Applications may also define their own component types that can be used by
other applications.
Extending Component Types
Innomatic Platform 17
Normally Innomatic desktop applications are built up
of various panels which provide an USER
INTERFACE inside the Innomatic desktop.
Panels & Panel Groups
Innomatic Platform 18
Declaring a Panel inside application.xml
Innomatic Platform 19
<tempdir name="example-basic-app" />
<domaingroup name="examples"
catalog="example-basic-app::misc" />
<domaintable name="example_basic_table"
file="example_basic_table.xml" />
<domainpanel name="basicapp"
catalog="example-basic-app::misc" category="examples" />
<catalog name="example-basic-app" />
<class name="examples/basic/BasicClass.php" />
class BasicappPanelViews extends InnomaticDesktopPanelPanelViews
{
public function update($observable, $arg = '’) {}
public function beginHelper() {}
public function endHelper() {}
public function viewDefault($eventData)
{
$this->tpl->set(’title', ‘Panel title’);
}
}
Panel views – View code example
Innomatic Platform 20
class BasicappPanelActions extends InnomaticDesktopPanelPanelActions {
public function __construct(InnomaticDesktopPanelPanelController $controller) {
parent::__construct($controller);
}
public function beginHelper() {}
public function endHelper() {}
public function executeDeleteItem($eventData) {
$this->dataAccess->execute(‘DELETE FROM my_items WHERE ID=‘.$eventData[‘id’]);
}
}
Panel actions – Code example
Innomatic Platform 21
<form>
<name>item</name>
<args>
<action><?=$editAction?></action>
</args>
<children>
<grid>
<children>
<label row="0" col="0" halign="right">
<args>
<label><?=$nameLabel?></label>
</args>
</label>
<string row="0" col="1">
<name>name</name>
<args>
<disp>action</disp>
<size>30</size>
<value><?=$nameValue?></value>
</args>
</string>
Web User Interface (WUI)
Innomatic Platform 22
Web User Interface example
Innomatic Platform 23
Some Real Life Tenant
Applications
24
Tenant Desktops and Web Apps
Tenants have 2 types of interfaces:
Tenant Desktop
A web desktop with a standard GUI for backoffice applications accessible via a
login panel.
e.g. intranet, enterprise applications
Web App
An interface for external web applications with a chained router
e.g. public web sites, extranets
The Tenant Desktop and the Web App share the same database and can interact
(e.g. you may have a CMS inside the Desktop for managing the Web App
content).
25Innomatic Platform
Tenant Desktop Dashboard
26Innomatic Platform
Some applications built with Innowork: Tasks
27Innomatic Platform
Tickets
28Innomatic Platform
Kanban
29Innomatic Platform
A CMS built with Innomedia CMF- 1/3
30Innomatic Platform
Innomedia – 2/3
31Innomatic Platform
Innomedia – 3/3
32Innomatic Platform
Multi-Tenant deployable web sites with Innomedia
An example: Winenot
33Innomatic Platform
Winenot SaaS provider: applications
34Innomatic Platform
Winenot tenants examples
35Innomatic Platform
Winenot tenants with different web site themes
36Innomatic Platform
Customizing look for SaaS providers:
Desktop Themes
Innomatic Platform 37
<wuitheme name="flattheme" file="flattheme_wuitheme.ini"
catalog="innomatic::flattheme" />
<wuicolorsset name="flattheme"
file="flattheme_wuicolorsset.ini”
catalog="innomatic::flattheme" />
<wuistyle name="flattheme" file="flattheme_wuistyle.ini"
catalog="innomatic::flattheme" />
<wuiiconsset name="subway" file="subway_wuiiconsset.ini"
catalog="innomatic::flattheme" />
Declaring new themes in application.xml
Innomatic Platform 38
Customizing look: Saas Provider settings
Innomatic Platform 39
Simple customization example
Innomatic Platform 40
Another desktop customization example
Innomatic Platform 41
Managing Tenants
and Applications
from the Root Desktop
42
Managing Tenants
43Innomatic Platform
Creating a Tenant
44Innomatic Platform
Managing Applications
45Innomatic Platform
Enabling an application to a tenant
46Innomatic Platform
Updating / Downgrading Applications
47Innomatic Platform
You can also do it inside PHP and CLI scripts
Creating a tenant from CLI:
php core/scripts/tenant.php create <tenant_name>
<description> <admin_password>
Deploying an application from CLI:
php core/scripts/application.php deploy
<application_archive.tgz>
Enabling an application to a tenant from CLI:
php core/scripts/tenant.php appenable <tenantname>
<appname>
48Innomatic Platform
Thanks!
Free Innomatic
Basic Developer
training slides for
Cloud Conf
attendees here:
49Innomatic Platform
http://cloudconf.innomatic.io

More Related Content

PPTX
PHP on Windows
PDF
Developing High Performance Web Apps
PDF
Tuning Web Performance
PDF
Intro to mobile web application development
PDF
Intro to html 5
PDF
Fundamentals of Web for Non-Developers
PDF
Week 05 Web, App and Javascript_Brandon, S.H. Wu
PPT
Busy Architects Guide to Modern Web Architecture in 2014
PHP on Windows
Developing High Performance Web Apps
Tuning Web Performance
Intro to mobile web application development
Intro to html 5
Fundamentals of Web for Non-Developers
Week 05 Web, App and Javascript_Brandon, S.H. Wu
Busy Architects Guide to Modern Web Architecture in 2014

What's hot (20)

PPTX
Introduction to html 5
PDF
Essential Javascript -- A Javascript &lt;b>Tutorial&lt;/b>
KEY
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
PPTX
1 Introduction to Drupal Web Development
PDF
Modern Web Development
KEY
Advanced CSRF and Stateless Anti-CSRF
PDF
High-Quality JavaScript
PDF
Introduction to HTML5
PDF
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
PDF
PPT
Fundamentals of web_design_v2
PPTX
Architecture Best Practices
PPT
Web Fundamentals
PDF
How to create a basic template
PPTX
Css, xhtml, javascript
PDF
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
PDF
HTML5 Introduction
PDF
Use Web Skills To Build Mobile Apps
PPT
Introduction to Web Programming - first course
PPT
HTML5 Mullet: Forms & Input Validation
Introduction to html 5
Essential Javascript -- A Javascript &lt;b>Tutorial&lt;/b>
HTML5 is the Future of Mobile, PhoneGap Takes You There Today
1 Introduction to Drupal Web Development
Modern Web Development
Advanced CSRF and Stateless Anti-CSRF
High-Quality JavaScript
Introduction to HTML5
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Fundamentals of web_design_v2
Architecture Best Practices
Web Fundamentals
How to create a basic template
Css, xhtml, javascript
POX to HATEOAS: Our Company's Journey Building a Hypermedia API
HTML5 Introduction
Use Web Skills To Build Mobile Apps
Introduction to Web Programming - first course
HTML5 Mullet: Forms & Input Validation
Ad

Similar to Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic (20)

PDF
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
PDF
Innomatic Platform architecture overview
PPTX
Innomatic Platform Architecture Overview
PPTX
Service-now.com Foundations Module 1
PPTX
SharePoint 2013 App Provisioning Models
PDF
Android 3.0 Portland Java User Group 2011-03-15
PDF
Webapps development on ubuntu
PPT
AD303: Building Composite Applications for IBM Workplace Collaboration Servic...
PPT
Introduction to WOLF Platform As A Service
PPT
OWIN (Open Web Interface for .NET)
PPTX
PWA basics for developers
PDF
01 web 2.0 - more than a pretty face for soa
PPTX
Meteor Introduction - Ashish
PDF
Android 3.1 - Portland Code Camp 2011
PDF
Presemtation Tier Optimizations
ODP
IBM Connect2014 JMP106
PPTX
Connecting Xamarin Apps with IBM Worklight in Bluemix
 
DOC
Detailed Technical Portfolio
PDF
vinay-mittal-new
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Innomatic Platform architecture overview
Innomatic Platform Architecture Overview
Service-now.com Foundations Module 1
SharePoint 2013 App Provisioning Models
Android 3.0 Portland Java User Group 2011-03-15
Webapps development on ubuntu
AD303: Building Composite Applications for IBM Workplace Collaboration Servic...
Introduction to WOLF Platform As A Service
OWIN (Open Web Interface for .NET)
PWA basics for developers
01 web 2.0 - more than a pretty face for soa
Meteor Introduction - Ashish
Android 3.1 - Portland Code Camp 2011
Presemtation Tier Optimizations
IBM Connect2014 JMP106
Connecting Xamarin Apps with IBM Worklight in Bluemix
 
Detailed Technical Portfolio
vinay-mittal-new
Ad

Recently uploaded (20)

PDF
A comparative analysis of optical character recognition models for extracting...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
project resource management chapter-09.pdf
PPTX
1. Introduction to Computer Programming.pptx
PPTX
cloud_computing_Infrastucture_as_cloud_p
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Mushroom cultivation and it's methods.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
A Presentation on Touch Screen Technology
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Hindi spoken digit analysis for native and non-native speakers
A comparative analysis of optical character recognition models for extracting...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
SOPHOS-XG Firewall Administrator PPT.pptx
project resource management chapter-09.pdf
1. Introduction to Computer Programming.pptx
cloud_computing_Infrastucture_as_cloud_p
Programs and apps: productivity, graphics, security and other tools
Univ-Connecticut-ChatGPT-Presentaion.pdf
Mushroom cultivation and it's methods.pdf
Approach and Philosophy of On baking technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
NewMind AI Weekly Chronicles - August'25-Week II
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Enhancing emotion recognition model for a student engagement use case through...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Zenith AI: Advanced Artificial Intelligence
A Presentation on Touch Screen Technology
Heart disease approach using modified random forest and particle swarm optimi...
TLE Review Electricity (Electricity).pptx
Hindi spoken digit analysis for native and non-native speakers

Costruire applicazioni multi-tenant e piattaforme SaaS in PHP con Innomatic