SlideShare una empresa de Scribd logo
1 de 54
Descargar para leer sin conexión
Liferay portal modern
architecting and
development
MODULARITY PATTERNS USING OSGI
INNOVSQUARE
Rafik HARABI
EclipseCon Europe 2015
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
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
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
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
A few words about Liferay
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
Instances
INNOVSQUARE EclipseCon Europe 2015
System
Liferay monolithic architecture
Portlet Application
Liferay Portal WAR
Core Services Web Content Management WikiBlog
Application Server
Portlet Application Portlet Application
INNOVSQUARE EclipseCon Europe 2015
…
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
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
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
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
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 be a first class citizen
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
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
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
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
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
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
…
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
Liferay 7 modular architecture
Statistics (based on Liferay 7 alpha1):
Number of extracted bundles: 326
Number of integration points > 200
INNOVSQUARE EclipseCon Europe 2015
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
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
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
Building modules with OSGi
 Liferay support various OSGi framework:
 OSGi API
Blueprint
iPOJO
OSGi Declarative Services
INNOVSQUARE EclipseCon Europe 2015
Building modules with OSGi
Which technology is recommended by Liferay ?
 Liferay recommendation is to use
declarative services.
INNOVSQUARE EclipseCon Europe 2015
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
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
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
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 :
property= {"service.ranking:Integer=100"}
INNOVSQUARE EclipseCon Europe 2015
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
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
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.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
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 every change
Portal.properties file:
One big file with 10000 lines
Portlets preferences:
XML based
don’t support types
INNOVSQUARE EclipseCon Europe 2015
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
Portal Configuration API
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API - Scopes
Portal Instance
Site
Portal Instance
Site Site Site Site Site
Portlets
System
INNOVSQUARE EclipseCon Europe 2015
Portal Configuration API –Customize
properties
Customize properties using Configuration Admin portlet:
INNOVSQUARE EclipseCon Europe 2015
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
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
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/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
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
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
Conclusion – takeaways
 Each @Component can be replaced with your own.
Reusable components: Taglibs, Item Selector, Portlet decorator …
Customize and extend
INNOVSQUARE EclipseCon Europe 2015
Questions ?
INNOVSQUARE EclipseCon Europe 2015
You want to learn more ?
2 talks by Ray Augé :
Today : Tomorrow:

Más contenido relacionado

La actualidad más candente

01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
daveayan
 
Benefits of using liferay
Benefits of using liferay Benefits of using liferay
Benefits of using liferay
SKALI Group
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisation
luisw19
 

La actualidad más candente (20)

Liferay as solution for legacy applications
Liferay as solution for legacy applicationsLiferay as solution for legacy applications
Liferay as solution for legacy applications
 
Liferay with xebia
Liferay with xebiaLiferay with xebia
Liferay with xebia
 
OSGi on Google Android using Apache Felix
OSGi on Google Android using Apache FelixOSGi on Google Android using Apache Felix
OSGi on Google Android using Apache Felix
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
Liferay 7
Liferay 7Liferay 7
Liferay 7
 
Liferay portal advantages
Liferay portal advantagesLiferay portal advantages
Liferay portal advantages
 
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
Creating Better Customer and Employee Experiences with Liferay Portal and Cra...
 
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
Liferay v. Drupal: Pound for Pound @ Liferay Symposium 2014 - Findings from t...
 
Liferay portal – moving beyond content management
Liferay portal – moving beyond content managementLiferay portal – moving beyond content management
Liferay portal – moving beyond content management
 
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay ScreensLiferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
Liferay Italy Symposium 2015 Liferay Mobile SDK and Liferay Screens
 
Introduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay PortalIntroduction to Portlets Using Liferay Portal
Introduction to Portlets Using Liferay Portal
 
2014 Liferay Roadshow Ambientia Finland
2014  Liferay Roadshow Ambientia Finland2014  Liferay Roadshow Ambientia Finland
2014 Liferay Roadshow Ambientia Finland
 
Liferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful DeploymentLiferay Developer Best Practices for a Successful Deployment
Liferay Developer Best Practices for a Successful Deployment
 
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
[DevDay2018] Liferay DXP – A powerful Enterprise Solution - By Vy Bui, Develo...
 
Beyond OSGi Software Architecture
Beyond OSGi Software ArchitectureBeyond OSGi Software Architecture
Beyond OSGi Software Architecture
 
Why choose-liferay
Why choose-liferayWhy choose-liferay
Why choose-liferay
 
Benefits of using liferay
Benefits of using liferay Benefits of using liferay
Benefits of using liferay
 
Mavenizing your Liferay project
Mavenizing your Liferay projectMavenizing your Liferay project
Mavenizing your Liferay project
 
A microservice approach for legacy modernisation
A microservice approach for legacy modernisationA microservice approach for legacy modernisation
A microservice approach for legacy modernisation
 
Liferay architecture By Navin Agarwal
Liferay architecture By Navin AgarwalLiferay architecture By Navin Agarwal
Liferay architecture By Navin Agarwal
 

Destacado

2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield
Emeldi Group
 
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE EditorImplementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
peychevi
 

Destacado (14)

Liferay hardening principles
Liferay hardening principlesLiferay hardening principles
Liferay hardening principles
 
Liferay portals in real projects
Liferay portals  in real projectsLiferay portals  in real projects
Liferay portals in real projects
 
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterpriseMoved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
Moved to https://slidr.io/azzazzel/liferay-7-microservices-for-the-enterprise
 
Overview of Liferay 7 Technology
Overview of Liferay 7 TechnologyOverview of Liferay 7 Technology
Overview of Liferay 7 Technology
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield2011.10 Liferay European Symposium. Alistair Oldfield
2011.10 Liferay European Symposium. Alistair Oldfield
 
Social Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of CommerceSocial Networking Presentation For Chamber Of Commerce
Social Networking Presentation For Chamber Of Commerce
 
Liferay 6.2 theme premium
Liferay 6.2 theme premiumLiferay 6.2 theme premium
Liferay 6.2 theme premium
 
6.2 presentation
6.2 presentation6.2 presentation
6.2 presentation
 
Building an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferayBuilding an Enterprise Content Management solution on top of liferay
Building an Enterprise Content Management solution on top of liferay
 
CTO School Networking Presentation
CTO School Networking PresentationCTO School Networking Presentation
CTO School Networking Presentation
 
Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2Introducing the new calendar app in liferay 6.2
Introducing the new calendar app in liferay 6.2
 
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE EditorImplementing AutoComplete for Freemarker and Velocity languages in ACE Editor
Implementing AutoComplete for Freemarker and Velocity languages in ACE Editor
 
Portlet Framework: the Liferay way
Portlet Framework: the Liferay wayPortlet Framework: the Liferay way
Portlet Framework: the Liferay way
 

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

The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
WSO2
 
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
WSO2
 
An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager
WSO2
 

Similar a EclipseCon Europe 2015 - liferay modularity patterns using OSGi -Rafik Harabi (20)

[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in Seconds[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
[apidays LIVE HONK KONG] - OAS to Managed API in Seconds
 
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
The Best of Both Worlds: Introducing WSO2 API Manager 4.0.0
 
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
How WSO2 API Manager helps to open the Quby Smart Thermostat and Energy Monit...
 
Service Mesh - Why? How? What?
Service Mesh - Why? How? What?Service Mesh - Why? How? What?
Service Mesh - Why? How? What?
 
London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023London-MuleSoft-Meetup-April-19-2023
London-MuleSoft-Meetup-April-19-2023
 
London MuleSoft Meetup
London MuleSoft Meetup London MuleSoft Meetup
London MuleSoft Meetup
 
Weave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any KubernetesWeave GitOps - continuous delivery for any Kubernetes
Weave GitOps - continuous delivery for any Kubernetes
 
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...apidays Paris 2022 - Adding a mock as a service capability to your API strate...
apidays Paris 2022 - Adding a mock as a service capability to your API strate...
 
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
Creating a Scalable and Decentralized API Management Architecture with WSO2 A...
 
Presentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab SummitPresentation at the 2016 Linux Foundation Collab Summit
Presentation at the 2016 Linux Foundation Collab Summit
 
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
apidays LIVE Australia 2021 - OpenAPI Generator - The Babel Fish of the API W...
 
Kubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan GasimovKubernetes in Modern Application Architecture - Orkhan Gasimov
Kubernetes in Modern Application Architecture - Orkhan Gasimov
 
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
Orkhan Gasimov "Reactive & Distributed - Modern JavaScript"
 
2.1.design center
2.1.design center2.1.design center
2.1.design center
 
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
apidays LIVE Paris 2021 - OpenAPI Generator - The Babel Fish of the API World...
 
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
[2015-11월 정기 세미나] Cloud Native Platform - Pivotal
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
 
Api Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source ProductsApi Lifecycle Operation with Open Source Products
Api Lifecycle Operation with Open Source Products
 
An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager An Introduction to the WSO2 API Manager
An Introduction to the WSO2 API Manager
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live AustraliaOpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
 

Último

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Último (20)

Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

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

  • 1. Liferay portal modern architecting and development MODULARITY PATTERNS USING OSGI INNOVSQUARE Rafik HARABI EclipseCon Europe 2015
  • 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. 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. 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. 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. A few words about Liferay Portal Instance Site Portal Instance Site Site Site Site Site Portlets Instances INNOVSQUARE EclipseCon Europe 2015 System
  • 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. 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. 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. 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. 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. Portal customization capabilities * Liferay Buyer’s Checklist INNOVSQUARE EclipseCon Europe 2015
  • 13. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize
  • 14. Portal customization capabilities INNOVSQUARE EclipseCon Europe 2015 Extend menu Add Entry Customize Customization should be a first class citizen
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Building modules with OSGi  Liferay support various OSGi framework:  OSGi API Blueprint iPOJO OSGi Declarative Services INNOVSQUARE EclipseCon Europe 2015
  • 27. Building modules with OSGi Which technology is recommended by Liferay ?  Liferay recommendation is to use declarative services. INNOVSQUARE EclipseCon Europe 2015
  • 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. 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. 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
  • 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. 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. 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. Split into modules : Form Builder as example INNOVSQUARE EclipseCon Europe 2015
  • 36. Split into microservices: Form Builder as example 6.2 (Monolithic) 7 (OSGI) INNOVSQUARE EclipseCon Europe 2015
  • 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. Split into microservices: build for extension My custom type INNOVSQUARE EclipseCon Europe 2015
  • 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. 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. Portal Configuration API INNOVSQUARE EclipseCon Europe 2015
  • 42. Portal Configuration API - Scopes Portal Instance Site Portal Instance Site Site Site Site Site Portlets System INNOVSQUARE EclipseCon Europe 2015
  • 43. Portal Configuration API –Customize properties Customize properties using Configuration Admin portlet: INNOVSQUARE EclipseCon Europe 2015
  • 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. 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. Customizing UI Components Why: provide a better configuration for your needs. INNOVSQUARE EclipseCon Europe 2015
  • 47. Customizing UI Components INNOVSQUARE EclipseCon Europe 2015
  • 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. 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. 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. Conclusion – takeaways  Each @Component can be replaced with your own. Reusable components: Taglibs, Item Selector, Portlet decorator … Customize and extend INNOVSQUARE EclipseCon Europe 2015
  • 53.
  • 54. You want to learn more ? 2 talks by Ray Augé : Today : Tomorrow: