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.
Liferay portal modern
architecting and
development
MODULARITY PATTERNS USING OSGI
INNOVSQUARE
Rafik HARABI
EclipseCon Euro...
Who am I ?
 Software Architect and Liferay Specialist.
 Building portal using Liferay since 2009 (more then 15 portals)....
Who are you ?
Before we get started...
We are building portals at work,
We are building Portal using Liferay,
We have ...
This talk ...
Liferay monolithic architecture
Modularity promises
Liferay 7 modular architecture
Building modules in L...
A few words about Liferay
Open source leader Portal that implement Portlet API 1.0 (JSR 168) and Portlet
2.0 (JSR 286)
L...
A few words about Liferay
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
Instances
INNOVSQUARE Ecl...
Liferay monolithic architecture
Portlet Application
Liferay Portal WAR
Core Services Web Content Management WikiBlog
Appli...
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B P...
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B P...
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B P...
Liferay class loading hierarchy
JDK Class Loaders
Application Server Class Loaders
Portal Class Loader Plugin A Plugin B P...
Portal customization capabilities
* Liferay Buyer’s Checklist
INNOVSQUARE EclipseCon Europe 2015
Portal customization capabilities
INNOVSQUARE EclipseCon Europe 2015
Extend menu
Add Entry
Customize
Portal customization capabilities
INNOVSQUARE EclipseCon Europe 2015
Extend menu
Add Entry
Customize
Customization should ...
Liferay releases vs Business agility
2012 2013 2014 2015 2016
6.1.0 6.2.0 6.2.1 6.2.2
> 1 year
Business agility
Recurren...
Limits of the Liferay monolithic
architecture
Invoking service between plugins /portlets:
No standard solution
Technica...
Modularity promises
 Portlet independent versioning from Liferay Portal
OSGi semantic versioning
 Business Agility:
Mo...
Modularity promises
Resiliency /design for failure
Enhance Security : bundle isolation/seal
Patching : just replace the...
Modularity challenges
Communications challenges
=> OSGi provides in VM-microservices.
Zero configuration.
How do I manag...
From monolithic to microservices
INNOVSQUARE EclipseCon Europe 2015
Core Services (ldap auth, messaging, cache …)
WikiBlog...
Liferay 7 modular architecture
OSGI Container
Module
ModuleModule
AppApp
App App
Liferay Portal Core (not yet extracted)
L...
Liferay 7 modular architecture
Statistics (based on Liferay 7 alpha1):
Number of extracted bundles: 326
Number of integr...
Liferay module framework
base path of the module framework
Module bundles
Portal core’s services bundles
framework persist...
Liferay module framework
Liferay Portal
OSGi Container
OSGi Service Registry
Bundle A Bundle B Bundle C
IndexPostProcessor...
Liferay module framework
 Liferay 7 owns the deployment Lifecycle: no longer relaying on application
server for deploymen...
Building modules with OSGi
 Liferay support various OSGi framework:
 OSGi API
Blueprint
iPOJO
OSGi Declarative Servic...
Building modules with OSGi
Which technology is recommended by Liferay ?
 Liferay recommendation is to use
declarative ser...
Portlets using Declaratives Services
6.2 and earlier 7.0
portlet.xml
liferay-portlet.xml
liferay-display.xml
XML Configura...
Modularize the service builder
Service builder : Liferay service layer code scaffolding
6.2 and earlier 7.0
API (jar)
Ser...
Sharing services between applications
 Zero Effort, Zero Configuration !
All what you need is to publish your services in...
Overriding Liferay’s services
INNOVSQUARE EclipseCon Europe 2015
Overriding core services
deploy a service with a higher service ranking than the original
Using OSGi service ranking :
pr...
Portlet Filter
6.2 and earlier 7.0
Portlet Application (WAR)
Portlet Filter
- Defined inside the portlet app !
- Hard to i...
Portlet Filter
6.2 and earlier 7.0
Portlet Application (WAR)
Portlet Filter
- Defined inside the portlet app !
- Hard to i...
Split into modules : Form Builder as
example
INNOVSQUARE EclipseCon Europe 2015
Split into microservices: Form Builder as
example
6.2 (Monolithic) 7 (OSGI)
INNOVSQUARE EclipseCon Europe 2015
Split into microservices: Form Builder as
example
com.liferay.dynamic.data.mapping.type.checkbox.jar
com.liferay.dynamic.d...
Split into microservices: build for
extension
My custom type
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API
Available Configuration for Liferay 6:
Portal properties files:
don’t have types
restart on ev...
Portal Configuration API
Configuration management based on :
 OSGi Configuration Admin
OSGi MetaType
Properties are typ...
Portal Configuration API
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API - Scopes
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
System
INNOVSQUAR...
Portal Configuration API –Customize
properties
Customize properties using Configuration Admin portlet:
INNOVSQUARE Eclips...
Portal Configuration API –Customize
properties
 Locate the Configuration class : annotated with :
 Create a .cfg file wi...
UI customization & extension
extensible user interfaces using the already built in mechanisms into the platform.
 Dynami...
Customizing UI Components
Why: provide a better configuration for your needs.
INNOVSQUARE EclipseCon Europe 2015
Customizing UI Components
INNOVSQUARE EclipseCon Europe 2015
Dev Tools
 BND Tools:
Robust OSGi bundles build tools.
 Blade Tools: Liferay tools to build modules
https://github.com/g...
Useful Resources
Liferay developer network:
https://dev.liferay.com/develop/
Liferay DevCon 2015:
https://www.liferay.co...
Conclusion – lessons learned
Be realistic & do it in steps: leaving Rome wasn't built in a day !
First step: In-VM micro...
Conclusion – takeaways
 Each @Component can be replaced with your own.
Reusable components: Taglibs, Item Selector, Port...
Questions ?
INNOVSQUARE EclipseCon Europe 2015
You want to learn more ?
2 talks by Ray Augé :
Today : Tomorrow:
EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi
Prochain SlideShare
Chargement dans…5
×

EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi

1 997 vues

Publié le

This presentation focus on modern architecting and development patterns with examples.
Liferay 7 come with new modular architecture based on OSGi framework. This new architecture will change the way of using and extending Liferay: It provides flexible options to customize Liferay portal and build applications on the top of it.
After introducing the new modular architecture and the Liferay module framework, the presentation will focus on the modern patterns of bundles development, portal customization patterns and integration with third parties using the power of the OSGi framework.

Publié dans : Logiciels
  • Soyez le premier à commenter

EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi

  1. 1. Liferay portal modern architecting and development MODULARITY PATTERNS USING OSGI INNOVSQUARE Rafik HARABI EclipseCon Europe 2015
  2. 2. Who am I ?  Software Architect and Liferay Specialist.  Building portal using Liferay since 2009 (more then 15 portals). @innovsquare linkedin.com/rafik.harabi INNOVSQUARE https://github.com/innovsquare rafik.harabi@innovsquare.com EclipseCon Europe 2015
  3. 3. Who are you ? Before we get started... We are building portals at work, We are building Portal using Liferay, We have heard about Liferay Portal and we want to learn more. INNOVSQUARE EclipseCon Europe 2015
  4. 4. This talk ... Liferay monolithic architecture Modularity promises Liferay 7 modular architecture Building modules in Liferay 7: the OSGi way Customizing & extending modules Lessons learned & takeaways INNOVSQUARE EclipseCon Europe 2015
  5. 5. A few words about Liferay Open source leader Portal that implement Portlet API 1.0 (JSR 168) and Portlet 2.0 (JSR 286) Lines of Code : 5. 1 Millions  About 70 Out of The Box Portlets Features: Web Content Management, Document Management, Workflow, Search, Enterprise Collaboration & Social Networking, … A marketplace: 490 apps http://liferay.com/marketplace INNOVSQUARE EclipseCon Europe 2015
  6. 6. A few words about Liferay Portal Instance Site Portal Instance Site Site Site Site Site Portlets Instances INNOVSQUARE EclipseCon Europe 2015 System
  7. 7. Liferay monolithic architecture Portlet Application Liferay Portal WAR Core Services Web Content Management WikiBlog Application Server Portlet Application Portlet Application INNOVSQUARE EclipseCon Europe 2015 …
  8. 8. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal Services API Portal Services Impl INNOVSQUARE EclipseCon Europe 2015 WAR WAR WARWAR
  9. 9. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 WARWAR WAR WAR Portal Services Impl
  10. 10. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 Portal Services Impl WARWAR WAR WAR
  11. 11. Liferay class loading hierarchy JDK Class Loaders Application Server Class Loaders Portal Class Loader Plugin A Plugin B Plugin C Service A Service B Service C Portal services api INNOVSQUARE EclipseCon Europe 2015 Portal Services Impl WARWAR WAR WAR
  12. 12. Portal customization capabilities * Liferay Buyer’s Checklist INNOVSQUARE EclipseCon Europe 2015
  13. 13. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize
  14. 14. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize Customization should be a first class citizen
  15. 15. Liferay releases vs Business agility 2012 2013 2014 2015 2016 6.1.0 6.2.0 6.2.1 6.2.2 > 1 year Business agility Recurrent incremental change services building and delivery are going from few months to few weeks to few days INNOVSQUARE EclipseCon Europe 2015
  16. 16. Limits of the Liferay monolithic architecture Invoking service between plugins /portlets: No standard solution Technical debt: hard to maintain An All-in-One Package One big war of 230 MB Cannot deploy only what is needed: minimal version Cannot manage portal features separately  Deployment depends on app server Scalability: only one dimension scaling Marketplace: overriding JSP creates conflicts INNOVSQUARE EclipseCon Europe 2015
  17. 17. Modularity promises  Portlet independent versioning from Liferay Portal OSGi semantic versioning  Business Agility: More frequent delivery of new features or improvements Easy and decoupled development process. Contract first approach / Loose coupling Dynamic extensions INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
  18. 18. Modularity promises Resiliency /design for failure Enhance Security : bundle isolation/seal Patching : just replace the bundle  Microservices: small and independent (both for development and deployment) Make your product Powerfully customizable INNOVSQUARE EclipseCon Europe 2015
  19. 19. Modularity challenges Communications challenges => OSGi provides in VM-microservices. Zero configuration. How do I manage the configuration ? OSGi Framework provides Configuration Admin service. INNOVSQUARE EclipseCon Europe 2015
  20. 20. From monolithic to microservices INNOVSQUARE EclipseCon Europe 2015 Core Services (ldap auth, messaging, cache …) WikiBlog Liferay Portal WAR OSGi Container ldap auth messaging cache OSGi Service Registry Blog UI Blog API Blog Service Wiki UI Wiki API Wiki Service …
  21. 21. Liferay 7 modular architecture OSGI Container Module ModuleModule AppApp App App Liferay Portal Core (not yet extracted) Log Service Http Service JSP Support Config Admin INNOVSQUARE EclipseCon Europe 2015 Application Server
  22. 22. Liferay 7 modular architecture Statistics (based on Liferay 7 alpha1): Number of extracted bundles: 326 Number of integration points > 200 INNOVSQUARE EclipseCon Europe 2015
  23. 23. Liferay module framework base path of the module framework Module bundles Portal core’s services bundles framework persistence directory INNOVSQUARE EclipseCon Europe 2015 Liferay’s module framework bundles Testing bundles Bundles to start with the module framework Test utility Tools
  24. 24. Liferay module framework Liferay Portal OSGi Container OSGi Service Registry Bundle A Bundle B Bundle C IndexPostProcessorWrapperServiceRegistryWrapper Liferay custom bundle registration Utility (Service Tracker) Hot deploy listeners Module deploy folder INNOVSQUARE EclipseCon Europe 2015 Liferay Service Registry Liferay Service Tracker Liferay Core’s Services
  25. 25. Liferay module framework  Liferay 7 owns the deployment Lifecycle: no longer relaying on application server for deployment. Dynamically manage module lifecycles. Liferay modules are versioned and explicitly declare dependencies. INNOVSQUARE EclipseCon Europe 2015
  26. 26. Building modules with OSGi  Liferay support various OSGi framework:  OSGi API Blueprint iPOJO OSGi Declarative Services INNOVSQUARE EclipseCon Europe 2015
  27. 27. Building modules with OSGi Which technology is recommended by Liferay ?  Liferay recommendation is to use declarative services. INNOVSQUARE EclipseCon Europe 2015
  28. 28. Portlets using Declaratives Services 6.2 and earlier 7.0 portlet.xml liferay-portlet.xml liferay-display.xml XML Configuration Annotation (DS) Portlet as a service INNOVSQUARE EclipseCon Europe 2015
  29. 29. Modularize the service builder Service builder : Liferay service layer code scaffolding 6.2 and earlier 7.0 API (jar) Service Impl Portlet UI (JSP, …) Portlet Application (WAR) Bundles (Jars) Service Registry API Service Test INNOVSQUARE EclipseCon Europe 2015
  30. 30. Sharing services between applications  Zero Effort, Zero Configuration ! All what you need is to publish your services in the OSGi service registry. Service A Service B Service C Service D Portlet 1 Portlet 2 Portlet 3 Service Registry INNOVSQUARE EclipseCon Europe 2015
  31. 31. Overriding Liferay’s services INNOVSQUARE EclipseCon Europe 2015
  32. 32. Overriding core services deploy a service with a higher service ranking than the original Using OSGi service ranking : property= {"service.ranking:Integer=100"} INNOVSQUARE EclipseCon Europe 2015
  33. 33. Portlet Filter 6.2 and earlier 7.0 Portlet Application (WAR) Portlet Filter - Defined inside the portlet app ! - Hard to implement filter for OTB portlets Bundles (Jars) INNOVSQUARE EclipseCon Europe 2015
  34. 34. Portlet Filter 6.2 and earlier 7.0 Portlet Application (WAR) Portlet Filter - Defined inside the portlet app ! - Hard to implement filter for OTB portlets Portlet Filter Bundles (Jars) Portlet INNOVSQUARE EclipseCon Europe 2015
  35. 35. Split into modules : Form Builder as example INNOVSQUARE EclipseCon Europe 2015
  36. 36. Split into microservices: Form Builder as example 6.2 (Monolithic) 7 (OSGI) INNOVSQUARE EclipseCon Europe 2015
  37. 37. Split into microservices: Form Builder as example com.liferay.dynamic.data.mapping.type.checkbox.jar com.liferay.dynamic.data.mapping.type.radio.jar com.liferay.dynamic.data.mapping.type.text.jar com.liferay.dynamic.data.mapping.type.select.jar INNOVSQUARE EclipseCon Europe 2015
  38. 38. Split into microservices: build for extension My custom type INNOVSQUARE EclipseCon Europe 2015
  39. 39. Portal Configuration API Available Configuration for Liferay 6: Portal properties files: don’t have types restart on every change Portal.properties file: One big file with 10000 lines Portlets preferences: XML based don’t support types INNOVSQUARE EclipseCon Europe 2015
  40. 40. Portal Configuration API Configuration management based on :  OSGi Configuration Admin OSGi MetaType Properties are typed Properties are well separated by modules Dynamically load properties on runtime INNOVSQUARE EclipseCon Europe 2015
  41. 41. Portal Configuration API INNOVSQUARE EclipseCon Europe 2015
  42. 42. Portal Configuration API - Scopes Portal Instance Site Portal Instance Site Site Site Site Site Portlets System INNOVSQUARE EclipseCon Europe 2015
  43. 43. Portal Configuration API –Customize properties Customize properties using Configuration Admin portlet: INNOVSQUARE EclipseCon Europe 2015
  44. 44. Portal Configuration API –Customize properties  Locate the Configuration class : annotated with :  Create a .cfg file with the id:  Add properties with the new values: admin.email.from.address=contentmanager@mycompany.com admin.email.from.name=contentmanager@mycompany.com  Drop it into the deploy folder of Liferay INNOVSQUARE EclipseCon Europe 2015
  45. 45. UI customization & extension extensible user interfaces using the already built in mechanisms into the platform.  Dynamic include using the Liferay extension points : <liferay-util:dynamic-include key=“com.liferay.frontend.editors.web"/> INNOVSQUARE EclipseCon Europe 2015
  46. 46. Customizing UI Components Why: provide a better configuration for your needs. INNOVSQUARE EclipseCon Europe 2015
  47. 47. Customizing UI Components INNOVSQUARE EclipseCon Europe 2015
  48. 48. Dev Tools  BND Tools: Robust OSGi bundles build tools.  Blade Tools: Liferay tools to build modules https://github.com/gamerson/blade.tools  Liferay provide also a set of plugins to build custom modules: com.liferay.portal.tools.sample.sql.builder com.liferay.portal.tools.service.builder com.liferay.portal.tools.upgrade.table.builder com.liferay.portal.tools.wsdd.builder INNOVSQUARE EclipseCon Europe 2015
  49. 49. Useful Resources Liferay developer network: https://dev.liferay.com/develop/ Liferay DevCon 2015: https://www.liferay.com/fr/web/events2015/devcon/recap Liferay Blade project: https://github.com/rotty3000/blade Liferay Blade Tools: https://github.com/gamerson/blade.tools INNOVSQUAREINNOVSQUARE EclipseCon Europe 2015
  50. 50. Conclusion – lessons learned Be realistic & do it in steps: leaving Rome wasn't built in a day ! First step: In-VM microservices Choose robust tools and standards: OSGi is one of the best for java world.  Provide dev and migration tools :very important for your customers. Focus on Single Responsibility Principle (SRP) INNOVSQUARE EclipseCon Europe 2015
  51. 51. Conclusion – takeaways  Each @Component can be replaced with your own. Reusable components: Taglibs, Item Selector, Portlet decorator … Customize and extend INNOVSQUARE EclipseCon Europe 2015
  52. 52. Questions ? INNOVSQUARE EclipseCon Europe 2015
  53. 53. You want to learn more ? 2 talks by Ray Augé : Today : Tomorrow:

×