Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Building Multi-Tenant
and SaaS products in PHP
What	
  is	
  Innoma,c?	
  
2
First of all: what is NOT Innomatic?
Innomatic is NOT a framework like Laravel or Symfony
– in fact, we are progressively ...
So, what really is Innomatic?
Innomatic is an open source platform for:
developing, deploying and managing
Multi-Tenant an...
Building multi-tenant apps
and SaaS products in
Innomatic
5
Building new SaaS: Classic vs Innomatic approach
6Innomatic Platform
Go	
  live!	
  
Classic	
  life	
  cycle	
  
Innoma,c...
Innomatic Layers
7Innomatic Platform
Debug	
  
Tenant	
  Web	
  Apps	
  
HTTP	
  Kernel	
   File	
  system	
   Rou4ng	
  
...
Multi-Tenancy in Innomatic
8Innomatic Platform
Innoma4c	
  strategy:	
  
Mul,-­‐Tenant	
  code	
  	
  +	
  	
  Single	
  T...
Frustrated Sysadmin/Developer
9Innomatic Platform
Innomatic = Innovation + AUTOMATIC
Innomatic handles this for you
Deployment and update tasks are
automatized by Innomatic...
An Innomatic application is a set of components of the types supported
by Innomatic or other Innomatic based applications:...
This is the core of Innomatic automation at runtime.
Each component type defines the operation to be executed
in the follo...
<?xml version='1.0'?>
<application>
<definition>
<idname>example-basic-app</idname>
<release>
<version>1.0.0</version>
<da...
<legal>
<author>
<name>Innomatic Company</name>
<email>info@innomatic.io</email>
<web>http://www.innomatic.io/</web>
</aut...
<components>
<tempdir name="example-basic-app" />
<domaingroup name="examples"
catalog="example-basic-app::misc" />
<domai...
You can also declare your dependencies to external packages
using Composer: you only have to add your composer.json
inside...
Applications may also define their own component types that can be used by
other applications.
Extending Component Types
I...
Normally Innomatic desktop applications are built up
of various panels which provide an USER
INTERFACE inside the Innomati...
Declaring a Panel inside application.xml
Innomatic Platform 19
<tempdir name="example-basic-app" />
<domaingroup name="exa...
class BasicappPanelViews extends InnomaticDesktopPanelPanelViews
{
public function update($observable, $arg = '’) {}
publi...
class BasicappPanelActions extends InnomaticDesktopPanelPanelActions {
public function __construct(InnomaticDesktopPanelPa...
<form>
<name>item</name>
<args>
<action><?=$editAction?></action>
</args>
<children>
<grid>
<children>
<label row="0" col=...
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 back...
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"
...
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>...
Thanks!
Free Innomatic
Basic Developer
training slides for
Cloud Conf
attendees here:
49Innomatic Platform
http://cloudcon...
Prochain SlideShare
Chargement dans…5
×

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015

Building Multi-Tenant and SaaS products in PHP with the open source Innomatic Platform.

Let’s look at how you can build multi-tenant applications and SaaS products in PHP faster and better with the open source Innomatic Platform.

Presentation at CloudConf 2015

Building Multi-Tenant and SaaS products in PHP - CloudConf 2015

  1. 1. Building Multi-Tenant and SaaS products in PHP
  2. 2. What  is  Innoma,c?   2
  3. 3. 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
  4. 4. 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
  5. 5. Building multi-tenant apps and SaaS products in Innomatic 5
  6. 6. Building new SaaS: Classic vs Innomatic approach 6Innomatic Platform Go  live!   Classic  life  cycle   Innoma,c  life  cycle   Learn  and   configure   Innoma4c   +  4me   +  budget   to  develop  &  market  the  app   Innomatic Platform Go  live!   (late…)   Develop  infrastructure   (mul4  tenancy,  build  system,   billing  tools,  CRM,  etc.)   -­‐  Time   -­‐  budget   to  develop  &  market  the  app   Opt.:  Innomedia  CMF  for  web  sites   +  Innowork  BAF  for  intranets  
  7. 7. Innomatic Layers 7Innomatic Platform Debug   Tenant  Web  Apps   HTTP  Kernel   File  system   Rou4ng   Cache   Localiza4on   Logging   Web  services  Symfony   Components  based   deploy  and  tasks   AppCentral   Root  Desktop   Tenant  Desktop   Panels  /  Web  User   Interface   Dependency   Injec4on   Database  /  ORM   Templa4ng   Class  Loader   Mul4  tenancy   Applica4ons  container   Tenant  Users  /  RBAC   Packages  Composer   Innoma4c   Innomedia  CMF   Innowork  BAF   SaaS  tools   (billing,  CRM,  4ckets,  …)   Other  major   Frameworks   and  tools   PLATFORM  
  8. 8. Multi-Tenancy in Innomatic 8Innomatic Platform Innoma4c  strategy:   Mul,-­‐Tenant  code    +    Single  Tenant  databases  
  9. 9. Frustrated Sysadmin/Developer 9Innomatic Platform
  10. 10. Innomatic = Innovation + AUTOMATIC Innomatic handles this for you Deployment and update tasks are automatized by Innomatic for each tenant 10Innomatic Platform
  11. 11. 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
  12. 12. 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
  13. 13. <?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
  14. 14. <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
  15. 15. <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  
  16. 16. 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
  17. 17. Applications may also define their own component types that can be used by other applications. Extending Component Types Innomatic Platform 17
  18. 18. 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
  19. 19. 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" />
  20. 20. 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
  21. 21. 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
  22. 22. <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
  23. 23. Web User Interface example Innomatic Platform 23
  24. 24. Some Real Life Tenant Applications 24
  25. 25. 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
  26. 26. Tenant Desktop Dashboard 26Innomatic Platform
  27. 27. Some applications built with Innowork: Tasks 27Innomatic Platform
  28. 28. Tickets 28Innomatic Platform
  29. 29. Kanban 29Innomatic Platform
  30. 30. A CMS built with Innomedia CMF- 1/3 30Innomatic Platform
  31. 31. Innomedia – 2/3 31Innomatic Platform
  32. 32. Innomedia – 3/3 32Innomatic Platform
  33. 33. Multi-Tenant deployable web sites with Innomedia An example: Winenot 33Innomatic Platform
  34. 34. Winenot SaaS provider: applications 34Innomatic Platform
  35. 35. Winenot tenants examples 35Innomatic Platform
  36. 36. Winenot tenants with different web site themes 36Innomatic Platform
  37. 37. Customizing look for SaaS providers: Desktop Themes Innomatic Platform 37
  38. 38. <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
  39. 39. Customizing look: Saas Provider settings Innomatic Platform 39
  40. 40. Simple customization example Innomatic Platform 40
  41. 41. Another desktop customization example Innomatic Platform 41
  42. 42. Managing Tenants and Applications from the Root Desktop 42
  43. 43. Managing Tenants 43Innomatic Platform
  44. 44. Creating a Tenant 44Innomatic Platform
  45. 45. Managing Applications 45Innomatic Platform
  46. 46. Enabling an application to a tenant 46Innomatic Platform
  47. 47. Updating / Downgrading Applications 47Innomatic Platform
  48. 48. 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
  49. 49. Thanks! Free Innomatic Basic Developer training slides for Cloud Conf attendees here: 49Innomatic Platform http://cloudconf.innomatic.io

×