SlideShare a Scribd company logo
Decoupled Drupal: how to build stable
solution with JSON:API, ReactJS and
Elasticsearch
Oleg Bogut
Senior BE developer
AnyforSoft
2020
What is Decoupled Drupal?
The process of employing Drupal as web-service provider
that exposes data for consumption by other applications
i.e. Drupal as web service
Decouple architecture: why and when we need use it?
Decoupled content management
Drupal site and Drupal repository
Decoupled Drupal and microservices
Backend as service
Content as service
Service-to-service communication
One backend for different client services
Decoupled vs monolithic
Decoupled vs monolithic
Monolithic Drupal: single site that does not expose data to other applications
Fully Decoupled Drupal: site that exposes data to one or multiple applications for
consumption or manipulation. Applications could be server-side or client-side
Pseudo Decoupled Drupal: fully decoupled site with exception that presentational
information is exposed to applications for consumption or manipulation
Decoupled vs monolithic
Fully decoupled Drupal
site that exposes data to one or multiple applications for
consumption or manipulation. Applications could be
server-side or client-side
Pseudo decoupled Drupal
fully decoupled site with exception that presentational
information is exposed to applications for consumption or
manipulation
Advantages of decoupling
Content syndication
Separation of concerns
User-centered user experiences
Front-end developer experience
Pipelined development
Disadvantages of decoupling
Additional points of failure
Security and input sanitization
Layout and display management
Previewable content workflows
System notifications
Monolithic performance benefits
Accessibility and user experience
Drupal web-services ecosystem
JSON:API
RESTful
Based on Serialization
Using JSON:API specification instead of HAL
Part of Drupal core at D8 and D9
Entity based solution
JSON:API
GraphQL
Alternative to REST
Declarative queries
Single URL instead of multiple endpoints
Specifying only needed information, and getting exactly that
Direct integration with Twig (GraphQL Twig module)
JSON:API vs GraphQL
JSON:API GraphQL
Updates and support Part of Drupal core, updates and support are
simple
Contrib module, require additional attention for
updates and support
Endpoints architecture Multiple endpoints should be used for different
entities
Single endpoint could be used
Data access Fully entity based. Each type of entity will be
available as separate endpoint
Base schema for accessing data is available, but
custom schemas also could be created
Ease of installation and
configuration
Requires simple basic configuration, additional
settings could be provided by JSON:API Extras
module or using custom code
More complex to use. May require additional
permissions, configuration or custom code
Queries Easy to implement, entity-based, support for fields
and entity attributes. Some issues could be related
to revisions of paragraphs and other types of
custom entities. Users can create their own queries
without changes at server side
Depends on implemented data schemas, could
require additional setup and configuring
Writing operations Out of the box and easy to implement Sometimes could be tricky to design and implement
Data output Entity-based output, but could be tuned up using
filters. Sometimes contains extra data which could
be unnecessary at specific query
Flexible for output, but requires strong understanding
for building queries for prevention of the performance
impacts
ReactJS: how we can use it?
React
React native for mobile applications
Gatsby framework
Elasticsearch as basis for site search
Elasticsearch 7.x (6.x has end of life next month)
Elasticsearch Connector 8.x-7.0
Full compatibility with Search API and Facets
Custom code could be used for indexing and querying
Performance tuning
Environment settings tuning: enough memory for Drupal
Correct setup for load balancers (if virtualization is using at project)
Correct setup for cache
Optimization of JSON:API queries
Optimization for images, and for Consumers image styles
Tuning for execution of cron operations
Caching for high-load decoupled websites
Some decoupled project could require multiple levels of cache
Cache in Drupal
Memcache
Reverse proxy cache
JSON:API endpoints cache could be warmed
Sites with active content management process could have a troubles
with cache lifetime, so it should be tuned in scope of specific project
architecture
Troubleshooting and use cases
Slow JSON:API queries
High memory usage for non-cached JSON:API queries
Short cache lifetime for responses in some cases
Troubles with cache warming (Warmer + JSON:API Boost)
Troubles with image styles (using Consumers and Consumer image
styles)
Questions?
https://www.drupal.org/u/sun-fire
oleg.b@team.anyforsoft.com
Ad

Recommended

A tour of Oracle DV V3.0 new features (June 2017)
A tour of Oracle DV V3.0 new features (June 2017)
Philippe Lions
 
Couch db
Couch db
Khurram Mahmood Bhatti
 
PGDay.Amsterdam 2018 - Stefanie Stoelting - PostgreSQL As Data Integration Tool
PGDay.Amsterdam 2018 - Stefanie Stoelting - PostgreSQL As Data Integration Tool
PGDay.Amsterdam
 
PostgreSQL As Data Integration Tool
PostgreSQL As Data Integration Tool
Stefanie Janine Stölting
 
ЯРОСЛАВ РАВЛІНКО «Data Science at scale. Next generation data processing plat...
ЯРОСЛАВ РАВЛІНКО «Data Science at scale. Next generation data processing plat...
UA DevOps Conference
 
A Modern Interface for Data Science on Postgres/Greenplum - Greenplum Summit ...
A Modern Interface for Data Science on Postgres/Greenplum - Greenplum Summit ...
VMware Tanzu
 
Oracle DV V4 new features overview
Oracle DV V4 new features overview
Philippe Lions
 
What is hibernate?
What is hibernate?
kanchanmahajan23
 
Azure data lakes
Azure data lakes
Vishwas N
 
Azure datafactory
Azure datafactory
Dimko Zhluktenko
 
Introduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandars
ArangoDB Database
 
Postgres Takes Charge Around the World
Postgres Takes Charge Around the World
EDB
 
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
EDB
 
The new big data
The new big data
Adam Doyle
 
Azure Data Factory Data Flow
Azure Data Factory Data Flow
Mark Kromer
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
EDB
 
What is hibernate?
What is hibernate?
kanchanmahajan23
 
Azure data factory
Azure data factory
David Giard
 
Practical Use of a NoSQL Database
Practical Use of a NoSQL Database
IBM Cloud Data Services
 
Azure Data Factory presentation with links
Azure Data Factory presentation with links
Chris Testa-O'Neill
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
NoSQL for SQL Users
NoSQL for SQL Users
IBM Cloud Data Services
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
Alex Tumanoff
 
What is hibernate?
What is hibernate?
kanchanmahajan23
 
New Approaches to Integrating Oracle and Postgres Database Strategies
New Approaches to Integrating Oracle and Postgres Database Strategies
EDB
 
Euroscipy2018
Euroscipy2018
Patrick Muehlbauer
 
Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010
David McCarter
 
Azure Data Factory for Azure Data Week
Azure Data Factory for Azure Data Week
Mark Kromer
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Graphql
Graphql
Niv Ben David
 

More Related Content

What's hot (20)

Azure data lakes
Azure data lakes
Vishwas N
 
Azure datafactory
Azure datafactory
Dimko Zhluktenko
 
Introduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandars
ArangoDB Database
 
Postgres Takes Charge Around the World
Postgres Takes Charge Around the World
EDB
 
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
EDB
 
The new big data
The new big data
Adam Doyle
 
Azure Data Factory Data Flow
Azure Data Factory Data Flow
Mark Kromer
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
EDB
 
What is hibernate?
What is hibernate?
kanchanmahajan23
 
Azure data factory
Azure data factory
David Giard
 
Practical Use of a NoSQL Database
Practical Use of a NoSQL Database
IBM Cloud Data Services
 
Azure Data Factory presentation with links
Azure Data Factory presentation with links
Chris Testa-O'Neill
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
NoSQL for SQL Users
NoSQL for SQL Users
IBM Cloud Data Services
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
Alex Tumanoff
 
What is hibernate?
What is hibernate?
kanchanmahajan23
 
New Approaches to Integrating Oracle and Postgres Database Strategies
New Approaches to Integrating Oracle and Postgres Database Strategies
EDB
 
Euroscipy2018
Euroscipy2018
Patrick Muehlbauer
 
Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010
David McCarter
 
Azure Data Factory for Azure Data Week
Azure Data Factory for Azure Data Week
Mark Kromer
 
Azure data lakes
Azure data lakes
Vishwas N
 
Introduction to Foxx by our community member Iskandar Soesman @ikandars
Introduction to Foxx by our community member Iskandar Soesman @ikandars
ArangoDB Database
 
Postgres Takes Charge Around the World
Postgres Takes Charge Around the World
EDB
 
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
Postgres Databases in Minutes with the EDB Postgres Cloud Database Service
EDB
 
The new big data
The new big data
Adam Doyle
 
Azure Data Factory Data Flow
Azure Data Factory Data Flow
Mark Kromer
 
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
New Approaches to Migrating from Oracle to Enterprise-Ready Postgres in the C...
EDB
 
Azure data factory
Azure data factory
David Giard
 
Azure Data Factory presentation with links
Azure Data Factory presentation with links
Chris Testa-O'Neill
 
Webinar: How native multi model works in ArangoDB
Webinar: How native multi model works in ArangoDB
ArangoDB Database
 
Azure data bricks by Eugene Polonichko
Azure data bricks by Eugene Polonichko
Alex Tumanoff
 
New Approaches to Integrating Oracle and Postgres Database Strategies
New Approaches to Integrating Oracle and Postgres Database Strategies
EDB
 
Building N Tier Applications With Entity Framework Services 2010
Building N Tier Applications With Entity Framework Services 2010
David McCarter
 
Azure Data Factory for Azure Data Week
Azure Data Factory for Azure Data Week
Mark Kromer
 

Similar to Oleg Bogut - Decoupled Drupal: how to build stable solution with JSON:API, ReactJS and Elasticsearch (20)

Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Graphql
Graphql
Niv Ben David
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
Bluegrass Digital
 
CouchDB
CouchDB
Jacob Diamond
 
Drupalcon Mumbai
Drupalcon Mumbai
Sumit Kataria
 
GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
Sashko Stubailo
 
RESTful application with Drupal 8
RESTful application with Drupal 8
Patrick Morin
 
REST full API Design
REST full API Design
Christian Guenther
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
VMware Tanzu
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
Srdjan Strbanovic
 
Big SQL Competitive Summary - Vendor Landscape
Big SQL Competitive Summary - Vendor Landscape
Nicolas Morales
 
Datascience Training with Hadoop, Python Machine Learning & Scala, Spark
Datascience Training with Hadoop, Python Machine Learning & Scala, Spark
SequelGate
 
Drupal & AngularJS - DrupalCamp Spain 2014
Drupal & AngularJS - DrupalCamp Spain 2014
Juampy NR
 
GraphQL.net
GraphQL.net
Tyler Ayers
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
hwilming
 
What is mean stack?
What is mean stack?
Rishabh Saxena
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10
IMC Institute
 
RestFul Web Services In Drupal 8
RestFul Web Services In Drupal 8
Gajendra Sharma
 
Angular jS Introduction by Google
Angular jS Introduction by Google
ASG
 
Cloud Deployment Toolkit
Cloud Deployment Toolkit
Bret Piatt
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Mack Hardy
 
Best of Microsoft Dev Camp 2015
Best of Microsoft Dev Camp 2015
Bluegrass Digital
 
GraphQL across the stack: How everything fits together
GraphQL across the stack: How everything fits together
Sashko Stubailo
 
RESTful application with Drupal 8
RESTful application with Drupal 8
Patrick Morin
 
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
Tools and Recipes to Replatform Monolithic Apps to Modern Cloud Environments
VMware Tanzu
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
Srdjan Strbanovic
 
Big SQL Competitive Summary - Vendor Landscape
Big SQL Competitive Summary - Vendor Landscape
Nicolas Morales
 
Datascience Training with Hadoop, Python Machine Learning & Scala, Spark
Datascience Training with Hadoop, Python Machine Learning & Scala, Spark
SequelGate
 
Drupal & AngularJS - DrupalCamp Spain 2014
Drupal & AngularJS - DrupalCamp Spain 2014
Juampy NR
 
SAP Integration with Red Hat JBoss Technologies
SAP Integration with Red Hat JBoss Technologies
hwilming
 
Java Web Programming Using Cloud Platform: Module 10
Java Web Programming Using Cloud Platform: Module 10
IMC Institute
 
RestFul Web Services In Drupal 8
RestFul Web Services In Drupal 8
Gajendra Sharma
 
Angular jS Introduction by Google
Angular jS Introduction by Google
ASG
 
Cloud Deployment Toolkit
Cloud Deployment Toolkit
Bret Piatt
 
Ad

More from DrupalCamp Kyiv (20)

Speed up the site building with Drupal's Bootstrap Layout Builder
Speed up the site building with Drupal's Bootstrap Layout Builder
DrupalCamp Kyiv
 
Performance Monitoring with Google Lighthouse
Performance Monitoring with Google Lighthouse
DrupalCamp Kyiv
 
Acquia BLT for the Win, or How to speed up the project setup, development an...
Acquia BLT for the Win, or How to speed up the project setup, development an...
DrupalCamp Kyiv
 
Upgrading to Drupal 9
Upgrading to Drupal 9
DrupalCamp Kyiv
 
THE INTERNET OF THINGS IS GETTING REAL
THE INTERNET OF THINGS IS GETTING REAL
DrupalCamp Kyiv
 
FRONT-END COMPONENTS IN DRUPAL THEME. "KAIZEN" - DRUPAL 8 THEME FROM SKILLD
FRONT-END COMPONENTS IN DRUPAL THEME. "KAIZEN" - DRUPAL 8 THEME FROM SKILLD
DrupalCamp Kyiv
 
DRUPAL AND ELASTICSEARCH
DRUPAL AND ELASTICSEARCH
DrupalCamp Kyiv
 
WHAT WE LEARNED FROM OPEN SOCIAL IN 3 YEARS, MOVING FROM AN AGENCY TO A PRODU...
WHAT WE LEARNED FROM OPEN SOCIAL IN 3 YEARS, MOVING FROM AN AGENCY TO A PRODU...
DrupalCamp Kyiv
 
Blackfire Workshop
Blackfire Workshop
DrupalCamp Kyiv
 
DRUPAL 8 STORAGES OVERVIEW
DRUPAL 8 STORAGES OVERVIEW
DrupalCamp Kyiv
 
ONE MORE TIME ABOUT CODE STANDARDS AND BEST PRACTICES
ONE MORE TIME ABOUT CODE STANDARDS AND BEST PRACTICES
DrupalCamp Kyiv
 
1-1 MEETING: STEP-BY-STEP-HOW-TO
1-1 MEETING: STEP-BY-STEP-HOW-TO
DrupalCamp Kyiv
 
UX DURING MODULE INSTALLATION AND CONFIGURATION
UX DURING MODULE INSTALLATION AND CONFIGURATION
DrupalCamp Kyiv
 
SWITCHING FROM QA ENGINEER TO PROJECT MANAGER - LEVEL UP OR DOWN?
SWITCHING FROM QA ENGINEER TO PROJECT MANAGER - LEVEL UP OR DOWN?
DrupalCamp Kyiv
 
TECHNOLOGIES-POWERED WEB AND THE POST-BROWSER ERA
TECHNOLOGIES-POWERED WEB AND THE POST-BROWSER ERA
DrupalCamp Kyiv
 
PROTECTED CONTENT: END-TO-END PGP ENCRYPTION FOR DRUPAL
PROTECTED CONTENT: END-TO-END PGP ENCRYPTION FOR DRUPAL
DrupalCamp Kyiv
 
DRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTR
DrupalCamp Kyiv
 
FROM DISTRO TO CUSTOM - HOW WE CREATE GREAT COMMUNITIES FOR EVERY ORGANIZATIO...
FROM DISTRO TO CUSTOM - HOW WE CREATE GREAT COMMUNITIES FOR EVERY ORGANIZATIO...
DrupalCamp Kyiv
 
SEARCH API: TIPS AND TRICKS - FROM BEGINNING TO CUSTOM SOLUTIONS
SEARCH API: TIPS AND TRICKS - FROM BEGINNING TO CUSTOM SOLUTIONS
DrupalCamp Kyiv
 
DEVOPS & THE DEATH AND REBIRTH OF CHILDHOOD INNOCENCE
DEVOPS & THE DEATH AND REBIRTH OF CHILDHOOD INNOCENCE
DrupalCamp Kyiv
 
Speed up the site building with Drupal's Bootstrap Layout Builder
Speed up the site building with Drupal's Bootstrap Layout Builder
DrupalCamp Kyiv
 
Performance Monitoring with Google Lighthouse
Performance Monitoring with Google Lighthouse
DrupalCamp Kyiv
 
Acquia BLT for the Win, or How to speed up the project setup, development an...
Acquia BLT for the Win, or How to speed up the project setup, development an...
DrupalCamp Kyiv
 
THE INTERNET OF THINGS IS GETTING REAL
THE INTERNET OF THINGS IS GETTING REAL
DrupalCamp Kyiv
 
FRONT-END COMPONENTS IN DRUPAL THEME. "KAIZEN" - DRUPAL 8 THEME FROM SKILLD
FRONT-END COMPONENTS IN DRUPAL THEME. "KAIZEN" - DRUPAL 8 THEME FROM SKILLD
DrupalCamp Kyiv
 
DRUPAL AND ELASTICSEARCH
DRUPAL AND ELASTICSEARCH
DrupalCamp Kyiv
 
WHAT WE LEARNED FROM OPEN SOCIAL IN 3 YEARS, MOVING FROM AN AGENCY TO A PRODU...
WHAT WE LEARNED FROM OPEN SOCIAL IN 3 YEARS, MOVING FROM AN AGENCY TO A PRODU...
DrupalCamp Kyiv
 
DRUPAL 8 STORAGES OVERVIEW
DRUPAL 8 STORAGES OVERVIEW
DrupalCamp Kyiv
 
ONE MORE TIME ABOUT CODE STANDARDS AND BEST PRACTICES
ONE MORE TIME ABOUT CODE STANDARDS AND BEST PRACTICES
DrupalCamp Kyiv
 
1-1 MEETING: STEP-BY-STEP-HOW-TO
1-1 MEETING: STEP-BY-STEP-HOW-TO
DrupalCamp Kyiv
 
UX DURING MODULE INSTALLATION AND CONFIGURATION
UX DURING MODULE INSTALLATION AND CONFIGURATION
DrupalCamp Kyiv
 
SWITCHING FROM QA ENGINEER TO PROJECT MANAGER - LEVEL UP OR DOWN?
SWITCHING FROM QA ENGINEER TO PROJECT MANAGER - LEVEL UP OR DOWN?
DrupalCamp Kyiv
 
TECHNOLOGIES-POWERED WEB AND THE POST-BROWSER ERA
TECHNOLOGIES-POWERED WEB AND THE POST-BROWSER ERA
DrupalCamp Kyiv
 
PROTECTED CONTENT: END-TO-END PGP ENCRYPTION FOR DRUPAL
PROTECTED CONTENT: END-TO-END PGP ENCRYPTION FOR DRUPAL
DrupalCamp Kyiv
 
DRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTR
DrupalCamp Kyiv
 
FROM DISTRO TO CUSTOM - HOW WE CREATE GREAT COMMUNITIES FOR EVERY ORGANIZATIO...
FROM DISTRO TO CUSTOM - HOW WE CREATE GREAT COMMUNITIES FOR EVERY ORGANIZATIO...
DrupalCamp Kyiv
 
SEARCH API: TIPS AND TRICKS - FROM BEGINNING TO CUSTOM SOLUTIONS
SEARCH API: TIPS AND TRICKS - FROM BEGINNING TO CUSTOM SOLUTIONS
DrupalCamp Kyiv
 
DEVOPS & THE DEATH AND REBIRTH OF CHILDHOOD INNOCENCE
DEVOPS & THE DEATH AND REBIRTH OF CHILDHOOD INNOCENCE
DrupalCamp Kyiv
 
Ad

Recently uploaded (20)

Overview of Employee in Odoo 18 - Odoo Slides
Overview of Employee in Odoo 18 - Odoo Slides
Celine George
 
How to Manage Multi Language for Invoice in Odoo 18
How to Manage Multi Language for Invoice in Odoo 18
Celine George
 
Chalukyas of Gujrat, Solanki Dynasty NEP.pptx
Chalukyas of Gujrat, Solanki Dynasty NEP.pptx
Dr. Ravi Shankar Arya Mahila P. G. College, Banaras Hindu University, Varanasi, India.
 
JHS SHS Back to School 2024-2025 .pptx
JHS SHS Back to School 2024-2025 .pptx
melvinapay78
 
2025 June Year 9 Presentation: Subject selection.pptx
2025 June Year 9 Presentation: Subject selection.pptx
mansk2
 
Exploring Ocean Floor Features for Middle School
Exploring Ocean Floor Features for Middle School
Marie
 
What is FIle and explanation of text files.pptx
What is FIle and explanation of text files.pptx
Ramakrishna Reddy Bijjam
 
Energy Balances Of Oecd Countries 2011 Iea Statistics 1st Edition Oecd
Energy Balances Of Oecd Countries 2011 Iea Statistics 1st Edition Oecd
razelitouali
 
LDMMIA GRAD Student Check-in Orientation Sampler
LDMMIA GRAD Student Check-in Orientation Sampler
LDM & Mia eStudios
 
Basic English for Communication - Dr Hj Euis Eti Rohaeti Mpd
Basic English for Communication - Dr Hj Euis Eti Rohaeti Mpd
Restu Bias Primandhika
 
THERAPEUTIC COMMUNICATION included definition, characteristics, nurse patient...
THERAPEUTIC COMMUNICATION included definition, characteristics, nurse patient...
parmarjuli1412
 
FEBA Sofia Univercity final diplian v3 GSDG 5.2025.pdf
FEBA Sofia Univercity final diplian v3 GSDG 5.2025.pdf
ChristinaFortunova
 
Overview of Off Boarding in Odoo 18 Employees
Overview of Off Boarding in Odoo 18 Employees
Celine George
 
Unit- 4 Biostatistics & Research Methodology.pdf
Unit- 4 Biostatistics & Research Methodology.pdf
KRUTIKA CHANNE
 
ICT-8-Module-REVISED-K-10-CURRICULUM.pdf
ICT-8-Module-REVISED-K-10-CURRICULUM.pdf
penafloridaarlyn
 
Nice Dream.pdf /
Nice Dream.pdf /
ErinUsher3
 
GEOGRAPHY-Study Material [ Class 10th] .pdf
GEOGRAPHY-Study Material [ Class 10th] .pdf
SHERAZ AHMAD LONE
 
The Man In The Back – Exceptional Delaware.pdf
The Man In The Back – Exceptional Delaware.pdf
dennisongomezk
 
Battle of Bookworms 2025 - U25 Literature Quiz by Pragya
Battle of Bookworms 2025 - U25 Literature Quiz by Pragya
Pragya - UEM Kolkata Quiz Club
 
Assisting Individuals and Families to Promote and Maintain Health – Unit 7 | ...
Assisting Individuals and Families to Promote and Maintain Health – Unit 7 | ...
RAKESH SAJJAN
 
Overview of Employee in Odoo 18 - Odoo Slides
Overview of Employee in Odoo 18 - Odoo Slides
Celine George
 
How to Manage Multi Language for Invoice in Odoo 18
How to Manage Multi Language for Invoice in Odoo 18
Celine George
 
JHS SHS Back to School 2024-2025 .pptx
JHS SHS Back to School 2024-2025 .pptx
melvinapay78
 
2025 June Year 9 Presentation: Subject selection.pptx
2025 June Year 9 Presentation: Subject selection.pptx
mansk2
 
Exploring Ocean Floor Features for Middle School
Exploring Ocean Floor Features for Middle School
Marie
 
What is FIle and explanation of text files.pptx
What is FIle and explanation of text files.pptx
Ramakrishna Reddy Bijjam
 
Energy Balances Of Oecd Countries 2011 Iea Statistics 1st Edition Oecd
Energy Balances Of Oecd Countries 2011 Iea Statistics 1st Edition Oecd
razelitouali
 
LDMMIA GRAD Student Check-in Orientation Sampler
LDMMIA GRAD Student Check-in Orientation Sampler
LDM & Mia eStudios
 
Basic English for Communication - Dr Hj Euis Eti Rohaeti Mpd
Basic English for Communication - Dr Hj Euis Eti Rohaeti Mpd
Restu Bias Primandhika
 
THERAPEUTIC COMMUNICATION included definition, characteristics, nurse patient...
THERAPEUTIC COMMUNICATION included definition, characteristics, nurse patient...
parmarjuli1412
 
FEBA Sofia Univercity final diplian v3 GSDG 5.2025.pdf
FEBA Sofia Univercity final diplian v3 GSDG 5.2025.pdf
ChristinaFortunova
 
Overview of Off Boarding in Odoo 18 Employees
Overview of Off Boarding in Odoo 18 Employees
Celine George
 
Unit- 4 Biostatistics & Research Methodology.pdf
Unit- 4 Biostatistics & Research Methodology.pdf
KRUTIKA CHANNE
 
ICT-8-Module-REVISED-K-10-CURRICULUM.pdf
ICT-8-Module-REVISED-K-10-CURRICULUM.pdf
penafloridaarlyn
 
Nice Dream.pdf /
Nice Dream.pdf /
ErinUsher3
 
GEOGRAPHY-Study Material [ Class 10th] .pdf
GEOGRAPHY-Study Material [ Class 10th] .pdf
SHERAZ AHMAD LONE
 
The Man In The Back – Exceptional Delaware.pdf
The Man In The Back – Exceptional Delaware.pdf
dennisongomezk
 
Battle of Bookworms 2025 - U25 Literature Quiz by Pragya
Battle of Bookworms 2025 - U25 Literature Quiz by Pragya
Pragya - UEM Kolkata Quiz Club
 
Assisting Individuals and Families to Promote and Maintain Health – Unit 7 | ...
Assisting Individuals and Families to Promote and Maintain Health – Unit 7 | ...
RAKESH SAJJAN
 

Oleg Bogut - Decoupled Drupal: how to build stable solution with JSON:API, ReactJS and Elasticsearch

  • 1. Decoupled Drupal: how to build stable solution with JSON:API, ReactJS and Elasticsearch Oleg Bogut Senior BE developer AnyforSoft 2020
  • 2. What is Decoupled Drupal? The process of employing Drupal as web-service provider that exposes data for consumption by other applications i.e. Drupal as web service
  • 3. Decouple architecture: why and when we need use it? Decoupled content management Drupal site and Drupal repository Decoupled Drupal and microservices Backend as service Content as service Service-to-service communication One backend for different client services
  • 5. Decoupled vs monolithic Monolithic Drupal: single site that does not expose data to other applications Fully Decoupled Drupal: site that exposes data to one or multiple applications for consumption or manipulation. Applications could be server-side or client-side Pseudo Decoupled Drupal: fully decoupled site with exception that presentational information is exposed to applications for consumption or manipulation
  • 7. Fully decoupled Drupal site that exposes data to one or multiple applications for consumption or manipulation. Applications could be server-side or client-side
  • 8. Pseudo decoupled Drupal fully decoupled site with exception that presentational information is exposed to applications for consumption or manipulation
  • 9. Advantages of decoupling Content syndication Separation of concerns User-centered user experiences Front-end developer experience Pipelined development
  • 10. Disadvantages of decoupling Additional points of failure Security and input sanitization Layout and display management Previewable content workflows System notifications Monolithic performance benefits Accessibility and user experience
  • 12. JSON:API RESTful Based on Serialization Using JSON:API specification instead of HAL Part of Drupal core at D8 and D9 Entity based solution
  • 14. GraphQL Alternative to REST Declarative queries Single URL instead of multiple endpoints Specifying only needed information, and getting exactly that Direct integration with Twig (GraphQL Twig module)
  • 15. JSON:API vs GraphQL JSON:API GraphQL Updates and support Part of Drupal core, updates and support are simple Contrib module, require additional attention for updates and support Endpoints architecture Multiple endpoints should be used for different entities Single endpoint could be used Data access Fully entity based. Each type of entity will be available as separate endpoint Base schema for accessing data is available, but custom schemas also could be created Ease of installation and configuration Requires simple basic configuration, additional settings could be provided by JSON:API Extras module or using custom code More complex to use. May require additional permissions, configuration or custom code Queries Easy to implement, entity-based, support for fields and entity attributes. Some issues could be related to revisions of paragraphs and other types of custom entities. Users can create their own queries without changes at server side Depends on implemented data schemas, could require additional setup and configuring Writing operations Out of the box and easy to implement Sometimes could be tricky to design and implement Data output Entity-based output, but could be tuned up using filters. Sometimes contains extra data which could be unnecessary at specific query Flexible for output, but requires strong understanding for building queries for prevention of the performance impacts
  • 16. ReactJS: how we can use it? React React native for mobile applications Gatsby framework
  • 17. Elasticsearch as basis for site search Elasticsearch 7.x (6.x has end of life next month) Elasticsearch Connector 8.x-7.0 Full compatibility with Search API and Facets Custom code could be used for indexing and querying
  • 18. Performance tuning Environment settings tuning: enough memory for Drupal Correct setup for load balancers (if virtualization is using at project) Correct setup for cache Optimization of JSON:API queries Optimization for images, and for Consumers image styles Tuning for execution of cron operations
  • 19. Caching for high-load decoupled websites Some decoupled project could require multiple levels of cache Cache in Drupal Memcache Reverse proxy cache JSON:API endpoints cache could be warmed Sites with active content management process could have a troubles with cache lifetime, so it should be tuned in scope of specific project architecture
  • 20. Troubleshooting and use cases Slow JSON:API queries High memory usage for non-cached JSON:API queries Short cache lifetime for responses in some cases Troubles with cache warming (Warmer + JSON:API Boost) Troubles with image styles (using Consumers and Consumer image styles)