SlideShare a Scribd company logo
Client Extensions 101:
Future proofing your DXP Apps
Iliyan Peychev
Director,
Cloud Innovations
Learn about Liferay's new universal extension mechanism
Greg Amerson
Staff Software Engineer,
Cloud Innovations
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
What problem are we trying to
solve?
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Your greatest strength begets your
greatest weakness.
William Shakespeare
Liferay DXP as a platform
#Client Extensions
Greg Amerson & Iliyan Peychev
Liferay DXP
Allows you to build anything on
top of it
Provides rich
set of APIs
Enriching DXP with Widgets and Services
#Client Extensions
Greg Amerson & Iliyan Peychev
Widgets
Widgets
Liferay DXP
Services Services
Enriching DXP with Widgets and Services
#Client Extensions
Greg Amerson & Iliyan Peychev
Widgets and Services are
executing in the same JVM
as DXP, making scaling
challenging
DXP exposes many
extension points (APIs),
making upgrades
challenging
Enriching DXP with Widgets and Services
#Client Extensions
Greg Amerson & Iliyan Peychev
How do you improve this part
of DXP without affecting the
user applications?
When one is upgraded, all
have to be upgraded
#Client Extensions
Greg Amerson & Iliyan Peychev
What is the solution?
Client Extensions 101
Client Extensions
#Client Extensions
Greg Amerson & Iliyan Peychev
Provide a headless API for
Client Extensions to
communicate with DXP
Make them Cloud ready!
Provide a generic mechanism
for extending the
functionality of DXP without
modifying the platform itself
Separate user
modifications from the
platform
Evolving and upgrading the Portal
#Client Extensions
Greg Amerson & Iliyan Peychev
New version of DXP
was released
Client Extensions
continue to work
client-extension.yaml file
is the source of truth
Client Extensions work on
both Liferay Experience
Cloud and DXP Self-
Hosted
Packaged in a single
artifact - Liferay Universal
File format archive - the
LUFFA file
#Client Extensions
Greg Amerson & Iliyan Peychev
Orchestration of Client
Extensions is done
automatically on Liferay
Experience Cloud
On DXP self-hosting,
you can still use all
previous customizations
(OSGi configs and
modules)
Operating outside DXP.
Not deployed in the same
JVM
Communicating with DXP
only using the headless
API, and in a secure way
Written in an arbitrary
language (where
applicable)
Client Extensions in a nutshell
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Secure communication
Secure communication
#Client Extensions
Greg Amerson & Iliyan Peychev
Based on OAuth2
Front-End Client Extensions can use OOTB `Liferay.authToken` to
communicate directly with DXP’s headless API
Microservice Client Extensions can register an OAuth2 Application in
DXP (User Agent or Headless Server profiles)
All communication among Client Extensions and DXP is secure by
default!
One Microservice Client Extension can securely call another
Microservice Client Extension
Front-End Client Extensions can securely call a Microservice Client
Extension
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Classification of Client Extensions
Configuration
Transfers runtime configuration
which changes DXP behavior
Examples:
● OAuth2 Application User
Agent
● OAuth2 Application Headless
Server
● Instance Settings
● …
Classification of Client Extensions
#Client Extensions
Greg Amerson & Iliyan Peychev
Front-End
Provides front-end resources (JS,
CSS, images) that are used on the
client (browser) side
Examples:
● Custom Element
● Global CSS
● Global JS
● Theme JS
● Theme Favicon
● Theme SpriteMap
● Static Content
● …
Microservice
Executable business logic or
workload (such as Resource
servers, Jobs or CronJobs)
Examples:
● NotificationType
● Object Action
● Workflow Action
● …
#Client Extensions
Greg Amerson & Iliyan Peychev
Batch
Declarative import of DXP
resources
Examples:
● Batch Engine
● Site Initializer
● Configurations-as-code
● …
Classification of Client Extensions
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Deployment of Client Extensions
Liferay Experience Cloud
● LCP API service sends Client
Extensions Config to Virtual
Instance of DXP
● The workload is orchestrated
automatically
● The configuration is injected
automatically
Self-hosted
● Client Extensions Config is read by
DXP
● Client Extension is registered
● Some workloads can be hosted by
DXP, other require orchestration
● Some require special configuration
variables
#Client Extensions
Greg Amerson & Iliyan Peychev
What happens when you deploy a Liferay Universal File format archive (LUFFA)?
Deployment of Client Extensions
Deploying Client Extensions to the Cloud
#Client Extensions
Greg Amerson & Iliyan Peychev
Classification Docker image Liferay Experience Cloud managed
Front-End liferay/caddy:latest Deployment
Batch liferay/batch:latest Job
Configuration liferay/noop:latest Job
Microservice Userdefined Deployment, Job, CronJob
Available Liferay Experience Cloud workloads based on Client
Extension classification
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Creating applications out of Client
Extensions
Leveraging the full power of Liferay Experience Cloud or your own
infrastructure
By combining Client Extensions
and deploying them on your own
infrastructure or on Liferay
Experience Cloud
Focus on business requirements
By extending DXP with your code,
your own tech-stack, without worrying about
upgrades or DXP internals
#Client Extensions
Greg Amerson & Iliyan Peychev
Creating applications out of Client Extensions
Seamless upgrades on Liferay
Experience Cloud
Upgrading DXP on Liferay Experience Cloud is done
by Liferay’s Site Reliability Engineers
Zero-downtime upgrade of your
applications on Liferay Experience Cloud
Deploying a new version of your Client Extensions on
LXC will be done with zero-downtime
#Client Extensions
Greg Amerson & Iliyan Peychev
Creating applications out of Client Extensions
Client Extensions 101
#Client Extensions
Greg Amerson & Iliyan Peychev
Where do I start?
Read the official documentation!
#Client Extensions
Greg Amerson & Iliyan Peychev
Contains reference documentation, how-to,
assembling and packaging, and much more!
learn.liferay.com is your
knowledge portal
Client Extensions
Documentation
Check the Liferay Sample Workspace!
#Client Extensions
Greg Amerson & Iliyan Peychev
This is all that fits in an image, but don’t worry,
there
are many more examples!
It contains multiple
examples of Client
Extensions
Liferay Sample Workspace
for Client Extensions
Dogfooding
#Client Extensions
Greg Amerson & Iliyan Peychev
Liferay is already using
Client Extensions for its own
products!
https://learn.liferay.com workspace
Feedback!
#Client Extensions
Greg Amerson & Iliyan Peychev
Please provide your
feedback!
Client Extensions are brand
new and still evolving
Thank you!

More Related Content

What's hot

What's hot (20)

Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018 Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
Terraform을 이용한 Infrastructure as Code 실전 구성하기 :: 변정훈::AWS Summit Seoul 2018
 
Anypoint mq (mulesoft) pub sub model
Anypoint mq (mulesoft)  pub sub modelAnypoint mq (mulesoft)  pub sub model
Anypoint mq (mulesoft) pub sub model
 
Async API and Solace: Enabling the Event-Driven Future
Async API and Solace: Enabling the Event-Driven FutureAsync API and Solace: Enabling the Event-Driven Future
Async API and Solace: Enabling the Event-Driven Future
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
AWS Secrets Manager: Best Practices for Managing, Retrieving, and Rotating Se...
 
Microservices on Anypoint Platform
Microservices on Anypoint PlatformMicroservices on Anypoint Platform
Microservices on Anypoint Platform
 
Vault Open Source vs Enterprise v2
Vault Open Source vs Enterprise v2Vault Open Source vs Enterprise v2
Vault Open Source vs Enterprise v2
 
E-Commerce 를 풍성하게 해주는 AWS 기술들 - 서호석 이사, YOUNGWOO DIGITAL :: AWS Summit Seoul ...
E-Commerce 를 풍성하게 해주는 AWS 기술들 - 서호석 이사, YOUNGWOO DIGITAL :: AWS Summit Seoul ...E-Commerce 를 풍성하게 해주는 AWS 기술들 - 서호석 이사, YOUNGWOO DIGITAL :: AWS Summit Seoul ...
E-Commerce 를 풍성하게 해주는 AWS 기술들 - 서호석 이사, YOUNGWOO DIGITAL :: AWS Summit Seoul ...
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Building CICD Pipelines for Serverless Applications
Building CICD Pipelines for Serverless ApplicationsBuilding CICD Pipelines for Serverless Applications
Building CICD Pipelines for Serverless Applications
 
Aws organizations
Aws organizationsAws organizations
Aws organizations
 
EKS Workshop
 EKS Workshop EKS Workshop
EKS Workshop
 
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
[E-commerce & Retail Day] Amazon 혁신과 AWS Retail 사례
 
Manage your kubernetes cluster with cluster api, azure and git ops
Manage your kubernetes cluster with cluster api, azure and git opsManage your kubernetes cluster with cluster api, azure and git ops
Manage your kubernetes cluster with cluster api, azure and git ops
 
Introduction to Salesforce.com
Introduction to Salesforce.comIntroduction to Salesforce.com
Introduction to Salesforce.com
 
How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?How to get along with HATEOAS without letting the bad guys steal your lunch?
How to get along with HATEOAS without letting the bad guys steal your lunch?
 
Productionize Serverless Application Building and Deployments with AWS SAM - ...
Productionize Serverless Application Building and Deployments with AWS SAM - ...Productionize Serverless Application Building and Deployments with AWS SAM - ...
Productionize Serverless Application Building and Deployments with AWS SAM - ...
 
Dataweave
DataweaveDataweave
Dataweave
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 

Similar to Client Extensions 101 - DEVCON 2023

Similar to Client Extensions 101 - DEVCON 2023 (20)

AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
AWS Summit Singapore Webinar Edition | More Containers, Less Operations & Mig...
 
DevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and ProcessesDevOps at Amazon: A Look at Our Tools and Processes
DevOps at Amazon: A Look at Our Tools and Processes
 
KCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with CrossplaneKCD Italy 2022 - Application driven infrastructure with Crossplane
KCD Italy 2022 - Application driven infrastructure with Crossplane
 
Microsoft Ignite 2018 BRK3192 Container DevOps on Azure
Microsoft Ignite 2018 BRK3192 Container DevOps on AzureMicrosoft Ignite 2018 BRK3192 Container DevOps on Azure
Microsoft Ignite 2018 BRK3192 Container DevOps on Azure
 
Breaking the 2 Pizza Paradox with your Platform as an Application
Breaking the 2 Pizza Paradox with your Platform as an ApplicationBreaking the 2 Pizza Paradox with your Platform as an Application
Breaking the 2 Pizza Paradox with your Platform as an Application
 
AWS Summit Singapore - More Containers, Less Operations
AWS Summit Singapore - More Containers, Less OperationsAWS Summit Singapore - More Containers, Less Operations
AWS Summit Singapore - More Containers, Less Operations
 
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
20231129 - Platform @ localhost 2023 - Application-driven infrastructure with...
 
Pivotal Container Service (PKS) at SF Cloud Foundry Meetup
Pivotal Container Service (PKS) at SF Cloud Foundry MeetupPivotal Container Service (PKS) at SF Cloud Foundry Meetup
Pivotal Container Service (PKS) at SF Cloud Foundry Meetup
 
Innovate Faster with Salesforce Heroku and AWS - CMP303 - re:Invent 2017
Innovate Faster with Salesforce Heroku and AWS - CMP303 - re:Invent 2017Innovate Faster with Salesforce Heroku and AWS - CMP303 - re:Invent 2017
Innovate Faster with Salesforce Heroku and AWS - CMP303 - re:Invent 2017
 
Translating Developer Productivity to Netflix Customer Delight
Translating Developer Productivity to Netflix Customer DelightTranslating Developer Productivity to Netflix Customer Delight
Translating Developer Productivity to Netflix Customer Delight
 
DevOps at Amazon: A Look at Our Tools and Processes by Matthew Trescot, Manag...
DevOps at Amazon: A Look at Our Tools and Processes by Matthew Trescot, Manag...DevOps at Amazon: A Look at Our Tools and Processes by Matthew Trescot, Manag...
DevOps at Amazon: A Look at Our Tools and Processes by Matthew Trescot, Manag...
 
DevOps Case Studies
DevOps Case StudiesDevOps Case Studies
DevOps Case Studies
 
A Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native StackA Hitchhiker's Guide to the Cloud Native Stack
A Hitchhiker's Guide to the Cloud Native Stack
 
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPLA Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
A Hitchhiker’s Guide to the Cloud Native Stack. #DevoxxPL
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
Slide DevSecOps Microservices
Slide DevSecOps Microservices Slide DevSecOps Microservices
Slide DevSecOps Microservices
 
KCD Munich - Cloud Native Platform Dilemma - Turning it into an Opportunity
KCD Munich - Cloud Native Platform Dilemma - Turning it into an OpportunityKCD Munich - Cloud Native Platform Dilemma - Turning it into an Opportunity
KCD Munich - Cloud Native Platform Dilemma - Turning it into an Opportunity
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Source
 
Building Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdfBuilding Slack's internal developer platform as a product.pdf
Building Slack's internal developer platform as a product.pdf
 
DevOps in Amazon.com
DevOps in Amazon.com DevOps in Amazon.com
DevOps in Amazon.com
 

More from peychevi

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
 
Dynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and MobileDynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and Mobile
peychevi
 

More from peychevi (7)

Extending Kubernetes with Operators
Extending Kubernetes with OperatorsExtending Kubernetes with Operators
Extending Kubernetes with Operators
 
Best practices for creating modular Web applications
Best practices for creating modular Web applicationsBest practices for creating modular Web applications
Best practices for creating modular Web applications
 
Modern Web Developement
Modern Web DevelopementModern Web Developement
Modern Web Developement
 
Creating a WYSIWYG Editor with React
Creating a WYSIWYG Editor with ReactCreating a WYSIWYG Editor with React
Creating a WYSIWYG Editor with React
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
 
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
 
Dynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and MobileDynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and Mobile
 

Recently uploaded

Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdf
Kamal Acharya
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
Kamal Acharya
 

Recently uploaded (20)

Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical EngineeringIntroduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
Introduction to Machine Learning Unit-4 Notes for II-II Mechanical Engineering
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Natalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in KrakówNatalia Rutkowska - BIM School Course in Kraków
Natalia Rutkowska - BIM School Course in Kraków
 
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdfA CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
A CASE STUDY ON ONLINE TICKET BOOKING SYSTEM PROJECT.pdf
 
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES  INTRODUCTION UNIT-IENERGY STORAGE DEVICES  INTRODUCTION UNIT-I
ENERGY STORAGE DEVICES INTRODUCTION UNIT-I
 
Toll tax management system project report..pdf
Toll tax management system project report..pdfToll tax management system project report..pdf
Toll tax management system project report..pdf
 
Explosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdfExplosives Industry manufacturing process.pdf
Explosives Industry manufacturing process.pdf
 
Halogenation process of chemical process industries
Halogenation process of chemical process industriesHalogenation process of chemical process industries
Halogenation process of chemical process industries
 
Laundry management system project report.pdf
Laundry management system project report.pdfLaundry management system project report.pdf
Laundry management system project report.pdf
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 
Arduino based vehicle speed tracker project
Arduino based vehicle speed tracker projectArduino based vehicle speed tracker project
Arduino based vehicle speed tracker project
 
Construction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptxConstruction method of steel structure space frame .pptx
Construction method of steel structure space frame .pptx
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
Hall booking system project report .pdf
Hall booking system project report  .pdfHall booking system project report  .pdf
Hall booking system project report .pdf
 
Courier management system project report.pdf
Courier management system project report.pdfCourier management system project report.pdf
Courier management system project report.pdf
 
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docxThe Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
The Ultimate Guide to External Floating Roofs for Oil Storage Tanks.docx
 
2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge2024 DevOps Pro Europe - Growing at the edge
2024 DevOps Pro Europe - Growing at the edge
 

Client Extensions 101 - DEVCON 2023

  • 1. Client Extensions 101: Future proofing your DXP Apps Iliyan Peychev Director, Cloud Innovations Learn about Liferay's new universal extension mechanism Greg Amerson Staff Software Engineer, Cloud Innovations
  • 2. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev What problem are we trying to solve?
  • 3. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Your greatest strength begets your greatest weakness. William Shakespeare
  • 4. Liferay DXP as a platform #Client Extensions Greg Amerson & Iliyan Peychev Liferay DXP Allows you to build anything on top of it Provides rich set of APIs
  • 5. Enriching DXP with Widgets and Services #Client Extensions Greg Amerson & Iliyan Peychev Widgets Widgets Liferay DXP Services Services
  • 6. Enriching DXP with Widgets and Services #Client Extensions Greg Amerson & Iliyan Peychev Widgets and Services are executing in the same JVM as DXP, making scaling challenging DXP exposes many extension points (APIs), making upgrades challenging
  • 7. Enriching DXP with Widgets and Services #Client Extensions Greg Amerson & Iliyan Peychev How do you improve this part of DXP without affecting the user applications? When one is upgraded, all have to be upgraded
  • 8. #Client Extensions Greg Amerson & Iliyan Peychev What is the solution? Client Extensions 101
  • 9. Client Extensions #Client Extensions Greg Amerson & Iliyan Peychev Provide a headless API for Client Extensions to communicate with DXP Make them Cloud ready! Provide a generic mechanism for extending the functionality of DXP without modifying the platform itself Separate user modifications from the platform
  • 10. Evolving and upgrading the Portal #Client Extensions Greg Amerson & Iliyan Peychev New version of DXP was released Client Extensions continue to work
  • 11. client-extension.yaml file is the source of truth Client Extensions work on both Liferay Experience Cloud and DXP Self- Hosted Packaged in a single artifact - Liferay Universal File format archive - the LUFFA file #Client Extensions Greg Amerson & Iliyan Peychev Orchestration of Client Extensions is done automatically on Liferay Experience Cloud On DXP self-hosting, you can still use all previous customizations (OSGi configs and modules) Operating outside DXP. Not deployed in the same JVM Communicating with DXP only using the headless API, and in a secure way Written in an arbitrary language (where applicable) Client Extensions in a nutshell
  • 12. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Secure communication
  • 13. Secure communication #Client Extensions Greg Amerson & Iliyan Peychev Based on OAuth2 Front-End Client Extensions can use OOTB `Liferay.authToken` to communicate directly with DXP’s headless API Microservice Client Extensions can register an OAuth2 Application in DXP (User Agent or Headless Server profiles) All communication among Client Extensions and DXP is secure by default! One Microservice Client Extension can securely call another Microservice Client Extension Front-End Client Extensions can securely call a Microservice Client Extension
  • 14. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Classification of Client Extensions
  • 15. Configuration Transfers runtime configuration which changes DXP behavior Examples: ● OAuth2 Application User Agent ● OAuth2 Application Headless Server ● Instance Settings ● … Classification of Client Extensions #Client Extensions Greg Amerson & Iliyan Peychev Front-End Provides front-end resources (JS, CSS, images) that are used on the client (browser) side Examples: ● Custom Element ● Global CSS ● Global JS ● Theme JS ● Theme Favicon ● Theme SpriteMap ● Static Content ● …
  • 16. Microservice Executable business logic or workload (such as Resource servers, Jobs or CronJobs) Examples: ● NotificationType ● Object Action ● Workflow Action ● … #Client Extensions Greg Amerson & Iliyan Peychev Batch Declarative import of DXP resources Examples: ● Batch Engine ● Site Initializer ● Configurations-as-code ● … Classification of Client Extensions
  • 17. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Deployment of Client Extensions
  • 18. Liferay Experience Cloud ● LCP API service sends Client Extensions Config to Virtual Instance of DXP ● The workload is orchestrated automatically ● The configuration is injected automatically Self-hosted ● Client Extensions Config is read by DXP ● Client Extension is registered ● Some workloads can be hosted by DXP, other require orchestration ● Some require special configuration variables #Client Extensions Greg Amerson & Iliyan Peychev What happens when you deploy a Liferay Universal File format archive (LUFFA)? Deployment of Client Extensions
  • 19. Deploying Client Extensions to the Cloud #Client Extensions Greg Amerson & Iliyan Peychev Classification Docker image Liferay Experience Cloud managed Front-End liferay/caddy:latest Deployment Batch liferay/batch:latest Job Configuration liferay/noop:latest Job Microservice Userdefined Deployment, Job, CronJob Available Liferay Experience Cloud workloads based on Client Extension classification
  • 20. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Creating applications out of Client Extensions
  • 21. Leveraging the full power of Liferay Experience Cloud or your own infrastructure By combining Client Extensions and deploying them on your own infrastructure or on Liferay Experience Cloud Focus on business requirements By extending DXP with your code, your own tech-stack, without worrying about upgrades or DXP internals #Client Extensions Greg Amerson & Iliyan Peychev Creating applications out of Client Extensions
  • 22. Seamless upgrades on Liferay Experience Cloud Upgrading DXP on Liferay Experience Cloud is done by Liferay’s Site Reliability Engineers Zero-downtime upgrade of your applications on Liferay Experience Cloud Deploying a new version of your Client Extensions on LXC will be done with zero-downtime #Client Extensions Greg Amerson & Iliyan Peychev Creating applications out of Client Extensions
  • 23. Client Extensions 101 #Client Extensions Greg Amerson & Iliyan Peychev Where do I start?
  • 24. Read the official documentation! #Client Extensions Greg Amerson & Iliyan Peychev Contains reference documentation, how-to, assembling and packaging, and much more! learn.liferay.com is your knowledge portal Client Extensions Documentation
  • 25. Check the Liferay Sample Workspace! #Client Extensions Greg Amerson & Iliyan Peychev This is all that fits in an image, but don’t worry, there are many more examples! It contains multiple examples of Client Extensions Liferay Sample Workspace for Client Extensions
  • 26. Dogfooding #Client Extensions Greg Amerson & Iliyan Peychev Liferay is already using Client Extensions for its own products! https://learn.liferay.com workspace
  • 27. Feedback! #Client Extensions Greg Amerson & Iliyan Peychev Please provide your feedback! Client Extensions are brand new and still evolving