SlideShare a Scribd company logo
Our experience withOur experience with
building Drupal 8building Drupal 8
SitesSites
Twitter: @laurii1Twitter: @laurii1
Lauri EskolaLauri Eskola
Drupal Theme System Co-
Maintainer
Working for Druid
I love kittens (and my hobby is to
keep adding them to Drupal Core)
Twitter: @laurii1Twitter: @laurii1
Case:Case:
Lääkärikeskus AavaLääkärikeskus Aava
Lääkärikeskus AavaLääkärikeskus Aava
One of the largest privately own healthOne of the largest privately own health
care provider in Finland, revenue > 40M€care provider in Finland, revenue > 40M€
Runs multiple sites on various DrupalRuns multiple sites on various Drupal
versionsversions
22 content authors on Aava.fi22 content authors on Aava.fi
A Year ago Aava wanted toA Year ago Aava wanted to
rebuild Aava.firebuild Aava.fi
Goals:Goals:
1. Make Aava brand more visible1. Make Aava brand more visible
2. Grow the amount of reservations made2. Grow the amount of reservations made
onlineonline
3. Bring services provided by Aava more visible3. Bring services provided by Aava more visible
4. Improve the UX of the website4. Improve the UX of the website
??????
Consensus to startConsensus to start
using Drupal 8using Drupal 8
Retheming or rebuildingRetheming or rebuilding
the site?the site?
We started testing some of the new features on the
old site and we got to see how the old site was built
Soon we realized that the data structure needs to be
improved
New site and data migration is needed
Why Drupal 8?Why Drupal 8?
Pros:
Long life cycle
Has many of the features built in core - some of
them not available for Drupal 7
Lower cost of development in long run
Cool factor
Cons:
Stability
Contributed modules
After few weeks everyone agreed:After few weeks everyone agreed:
Let's build it on Drupal 8Let's build it on Drupal 8
How did we actually do it?How did we actually do it?
MigrationMigration
SitebuildSitebuild
BackendBackend
Front endFront end
PerformancePerformance
HEAD to HEADHEAD to HEAD
Migration module for DrupalMigration module for Drupal
8 was not ready yet8 was not ready yet
That had to be built byThat had to be built by
ourselves..ourselves..
MigrationMigration
Custom Built MigrationCustom Built Migration
Drupal 7 Services module (JSON)
Drupal 8 custom importer inspired by Migration
Code was open sourced:
https://github.com/lauriii/lka_content_import
MigrationMigration
14 node types was converted into 11 node types
4000 nodes
200 taxonomy terms
SitebuildingSitebuilding
The contributed modules usedThe contributed modules used
Display Suite
Form Block
Inline Entity Form
Metatag
Pathauto
Token (Required by Pathauto)
Views field view
7 vs 101 contributed modules
Tabs on the node page are local tasksTabs on the node page are local tasks
Local tasks didn't support caching at all -
actually they broke the whole caching
Local tasks in core was converted into
blocks and sufficient cacheable metadata
was added
BackendBackend
Custom codeCustom code
7 / 29 modules are supporting / extending
cores or contributed modules functionality
Most of the modules contains site specific
business logic
In Drupal 8 you don't need Drupalist
anymore to write this logic - it can be
generic PHP devleoper
TestingTesting
In Drupal 8 we are mostly using Unit tests
Pros
Fast to run
Can be used as a helper during
development
Easy to maintain
Points out bad code
Allows test coverage reporting
Cons
Expensive to create
Open Sourced CodeOpen Sourced Code
Multiple bug fixes to:
Drupal Core
Display Suite
Pathauto
xmlsitemap
Inline Entity Form
https://github.com/lauriii/contact_form_formatter
https://github.com/lauriii/subpathauto
https://www.drupal.org/project/block_node_type_negate
Being early adopterBeing early adopter
In Drupal 7 fixing many of the bugs
would have been nearly impossible
We would have been forced to find
workarounds
Most of the time slower than actually
fixing the bug properly
On the other hand some time had to
be used for fixing bugs that doesn't
exist in Drupal 7
Front endFront end
Front endFront end
No contributed themes available
Built on top of Classy
Used SASS, SMACSS, and BEM
CSS / SASSCSS / SASS
base/
blocks/
components/
_dependencies.scss
maintenance-page.scss
print.scss
partials/
styles.scss
TemplatesTemplates
52 template overrides
We are using Twig extend functionality
everywhere
{% extends "page.html.twig" %}
{% block title %}
{% endblock %}
page--node--article.html.twig
How to test ifHow to test if
something is empty?something is empty?
Open core issue:
Problem is that everything is loaded lazily, so we don't
know even at the template level if something is going to
be empty.
When this was needee we used CSS and in one use case
we had to fall back to early rendering.
https://www.drupal.org/node/953034
PerformancePerformance
Caching strategyCaching strategy
Using Drupal internal page cache and internal dynamic
page cache
Easy and fast configure
No reason to use Varnish
Good for small and medium sized websites
Default cache max-age is 1 day
Cache contexts and tags are being used everywhere
Goal in Aava.fi is to show always up to date information
-> in Drupal 7 no caching at all
Front end performanceFront end performance
Minimal Javascript
jQuery not loaded by default
Javascript and CSS in libraries and
attached to render arrays in preprocess
functions
Internal goal was to be able to serve the website in
under 5s on any device
Without further optimization we can serve old phones
(tested with Lumia 630) in 7s
Modern phones (Tested with iPhone 6s Plus) 2s
This is a good example of a site that is buildable on Drupal 8
What to not build on DrupalWhat to not build on Drupal
8?8?
https://contribkanban.com/board/contrib_tracker
Questions?Questions?
Twitter: @laurii1Twitter: @laurii1

More Related Content

What's hot

11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks
iScripts
 
Agriya services
Agriya servicesAgriya services
Agriya services
iScripts
 
WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016
Octavio Andrés Cifuentes
 
Developing An Effective e-Learning Platform From Ready-Made Script
Developing An Effective e-Learning Platform From Ready-Made ScriptDeveloping An Effective e-Learning Platform From Ready-Made Script
Developing An Effective e-Learning Platform From Ready-Made Script
iScripts
 
Drupal vs WordPress
Drupal vs WordPressDrupal vs WordPress
Drupal vs WordPress
Phill Brown
 
Drupal vs Wordpress
Drupal vs WordpressDrupal vs Wordpress
Drupal vs Wordpress
Ian Mariano
 
Perfect Web Project
Perfect Web ProjectPerfect Web Project
Perfect Web Project
Exove
 
Building a community of Open Source intranet users
Building a community of Open Source intranet usersBuilding a community of Open Source intranet users
Building a community of Open Source intranet users
Luke Oatham
 
Upgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and GotchasUpgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and Gotchas
Suzanne Dergacheva
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a Service
Andrew Bauer
 
wp cli- don’t fear the command line
wp cli- don’t fear the command linewp cli- don’t fear the command line
wp cli- don’t fear the command line
Dwayne McDaniel
 
Content as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMSContent as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMS
Pantheon
 
Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09 Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09
Lunch Ann Arbor Marketing
 
The Future of-the CMS (Twin Cities DrupalCamp 2015)
The Future of-the CMS (Twin Cities DrupalCamp 2015)The Future of-the CMS (Twin Cities DrupalCamp 2015)
The Future of-the CMS (Twin Cities DrupalCamp 2015)
Todd Ross Nienkerk
 
WordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson QuickWordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson Quick
WordCamp Sydney
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Viktor Vogel
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
Subodh Pushpak
 
Sylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce FrameworkSylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce Framework
Paweł Jędrzejewski
 
Combining CMS with eCommerce Thanks to APIs
Combining CMS with eCommerce Thanks to APIsCombining CMS with eCommerce Thanks to APIs
Combining CMS with eCommerce Thanks to APIs
Paweł Jędrzejewski
 
Html5
Html5Html5
Html5
Nasla C.K
 

What's hot (20)

11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks
 
Agriya services
Agriya servicesAgriya services
Agriya services
 
WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016
 
Developing An Effective e-Learning Platform From Ready-Made Script
Developing An Effective e-Learning Platform From Ready-Made ScriptDeveloping An Effective e-Learning Platform From Ready-Made Script
Developing An Effective e-Learning Platform From Ready-Made Script
 
Drupal vs WordPress
Drupal vs WordPressDrupal vs WordPress
Drupal vs WordPress
 
Drupal vs Wordpress
Drupal vs WordpressDrupal vs Wordpress
Drupal vs Wordpress
 
Perfect Web Project
Perfect Web ProjectPerfect Web Project
Perfect Web Project
 
Building a community of Open Source intranet users
Building a community of Open Source intranet usersBuilding a community of Open Source intranet users
Building a community of Open Source intranet users
 
Upgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and GotchasUpgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and Gotchas
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a Service
 
wp cli- don’t fear the command line
wp cli- don’t fear the command linewp cli- don’t fear the command line
wp cli- don’t fear the command line
 
Content as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMSContent as a Service: What to Know About Decoupled CMS
Content as a Service: What to Know About Decoupled CMS
 
Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09 Introduction to Drupal, Wayne Eaker, Nov 11, 09
Introduction to Drupal, Wayne Eaker, Nov 11, 09
 
The Future of-the CMS (Twin Cities DrupalCamp 2015)
The Future of-the CMS (Twin Cities DrupalCamp 2015)The Future of-the CMS (Twin Cities DrupalCamp 2015)
The Future of-the CMS (Twin Cities DrupalCamp 2015)
 
WordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson QuickWordPress as a Headless CMS - Bronson Quick
WordPress as a Headless CMS - Bronson Quick
 
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
Joomla! multiplied - How to run Multi-Sites - JandBeyond 2014
 
WebMatrix
WebMatrixWebMatrix
WebMatrix
 
Sylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce FrameworkSylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce Framework
 
Combining CMS with eCommerce Thanks to APIs
Combining CMS with eCommerce Thanks to APIsCombining CMS with eCommerce Thanks to APIs
Combining CMS with eCommerce Thanks to APIs
 
Html5
Html5Html5
Html5
 

Viewers also liked

Drupaling a Devleopment Plan
Drupaling a Devleopment PlanDrupaling a Devleopment Plan
Drupaling a Devleopment Plan
jskulski
 
Requirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsRequirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful Projects
Acquia
 
Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8
Peter Vanhee
 
Drupal Café: Building Node.js Accelerator for Your Headless Drupal
Drupal Café: Building Node.js Accelerator for Your Headless DrupalDrupal Café: Building Node.js Accelerator for Your Headless Drupal
Drupal Café: Building Node.js Accelerator for Your Headless Drupal
Exove
 
Composer is the new Drush - Drupal Developer Training (internal)
Composer is the new Drush - Drupal Developer Training (internal)Composer is the new Drush - Drupal Developer Training (internal)
Composer is the new Drush - Drupal Developer Training (internal)
Exove
 
Drupal project timeline
Drupal project timelineDrupal project timeline
Drupal project timeline
Ardi Hundt
 
Drupal 8 Preview for Site Builders
Drupal 8 Preview for Site BuildersDrupal 8 Preview for Site Builders
Drupal 8 Preview for Site Builders
Acquia
 
Media Project Plan Timeline New
Media Project Plan Timeline NewMedia Project Plan Timeline New
Media Project Plan Timeline New
JosephKnight
 
WordPress Café: Making a Future-Media
WordPress Café: Making a Future-MediaWordPress Café: Making a Future-Media
WordPress Café: Making a Future-Media
Exove
 

Viewers also liked (9)

Drupaling a Devleopment Plan
Drupaling a Devleopment PlanDrupaling a Devleopment Plan
Drupaling a Devleopment Plan
 
Requirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsRequirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful Projects
 
Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8
 
Drupal Café: Building Node.js Accelerator for Your Headless Drupal
Drupal Café: Building Node.js Accelerator for Your Headless DrupalDrupal Café: Building Node.js Accelerator for Your Headless Drupal
Drupal Café: Building Node.js Accelerator for Your Headless Drupal
 
Composer is the new Drush - Drupal Developer Training (internal)
Composer is the new Drush - Drupal Developer Training (internal)Composer is the new Drush - Drupal Developer Training (internal)
Composer is the new Drush - Drupal Developer Training (internal)
 
Drupal project timeline
Drupal project timelineDrupal project timeline
Drupal project timeline
 
Drupal 8 Preview for Site Builders
Drupal 8 Preview for Site BuildersDrupal 8 Preview for Site Builders
Drupal 8 Preview for Site Builders
 
Media Project Plan Timeline New
Media Project Plan Timeline NewMedia Project Plan Timeline New
Media Project Plan Timeline New
 
WordPress Café: Making a Future-Media
WordPress Café: Making a Future-MediaWordPress Café: Making a Future-Media
WordPress Café: Making a Future-Media
 

Similar to Building Drupal 8 Sites

Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
DrupalCamp Kyiv
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
Jay Epstein
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
Jay Epstein
 
The State of Drupal 8
The State of Drupal 8The State of Drupal 8
The State of Drupal 8
nyccamp
 
Drupalcampatl d7
Drupalcampatl d7Drupalcampatl d7
Drupalcampatl d7
Mediacurrent
 
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
Eric Sembrat
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management Framework
Mediacurrent
 
Building and Maintaining a Distribution in Drupal 7 with Features
Building and Maintaining a  Distribution in Drupal 7 with FeaturesBuilding and Maintaining a  Distribution in Drupal 7 with Features
Building and Maintaining a Distribution in Drupal 7 with Features
Nuvole
 
Drupal in 30 Minutes
Drupal in 30 MinutesDrupal in 30 Minutes
Drupal in 30 Minutes
Robert Carr
 
Drupal Roadmap 2010
Drupal Roadmap 2010Drupal Roadmap 2010
Drupal Roadmap 2010
kathyhh
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
Viridians
 
Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8
Acquia
 
What in store in drupal 8
What in store in drupal 8 What in store in drupal 8
What in store in drupal 8
Shyamala Rajaram
 
Drupal
DrupalDrupal
Drupal
btopro
 
Drupal in-depth
Drupal in-depthDrupal in-depth
Drupal in-depth
Kathryn Carruthers
 
State of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon ViennaState of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon Vienna
Dries Buytaert
 
Drupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutionsDrupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutions
php2ranjan
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPAL
Brahm
 
Follow before a drupal security release by shamit khemka
Follow before a drupal security release by shamit khemkaFollow before a drupal security release by shamit khemka
Follow before a drupal security release by shamit khemka
SynapseIndia
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
Mediacurrent
 

Similar to Building Drupal 8 Sites (20)

Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
Anton Faibyshev - Drupal 8: lazy builder. What we need to build a house - we ...
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7Building Websites of the Future With Drupal 7
Building Websites of the Future With Drupal 7
 
The State of Drupal 8
The State of Drupal 8The State of Drupal 8
The State of Drupal 8
 
Drupalcampatl d7
Drupalcampatl d7Drupalcampatl d7
Drupalcampatl d7
 
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
 
Choosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management FrameworkChoosing Drupal as your Content Management Framework
Choosing Drupal as your Content Management Framework
 
Building and Maintaining a Distribution in Drupal 7 with Features
Building and Maintaining a  Distribution in Drupal 7 with FeaturesBuilding and Maintaining a  Distribution in Drupal 7 with Features
Building and Maintaining a Distribution in Drupal 7 with Features
 
Drupal in 30 Minutes
Drupal in 30 MinutesDrupal in 30 Minutes
Drupal in 30 Minutes
 
Drupal Roadmap 2010
Drupal Roadmap 2010Drupal Roadmap 2010
Drupal Roadmap 2010
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8Everything You Need to Know About the Top Changes in Drupal 8
Everything You Need to Know About the Top Changes in Drupal 8
 
What in store in drupal 8
What in store in drupal 8 What in store in drupal 8
What in store in drupal 8
 
Drupal
DrupalDrupal
Drupal
 
Drupal in-depth
Drupal in-depthDrupal in-depth
Drupal in-depth
 
State of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon ViennaState of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon Vienna
 
Drupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutionsDrupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutions
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPAL
 
Follow before a drupal security release by shamit khemka
Follow before a drupal security release by shamit khemkaFollow before a drupal security release by shamit khemka
Follow before a drupal security release by shamit khemka
 
Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9Best Practices for Moving to Drupal 9
Best Practices for Moving to Drupal 9
 

More from Exove

Data security in the age of GDPR – most common data security problems
Data security in the age of GDPR – most common data security problemsData security in the age of GDPR – most common data security problems
Data security in the age of GDPR – most common data security problems
Exove
 
Provisioning infrastructure to AWS using Terraform – Exove
Provisioning infrastructure to AWS using Terraform – ExoveProvisioning infrastructure to AWS using Terraform – Exove
Provisioning infrastructure to AWS using Terraform – Exove
Exove
 
Advanced custom fields in Wordpress
Advanced custom fields in WordpressAdvanced custom fields in Wordpress
Advanced custom fields in Wordpress
Exove
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – Exove
Exove
 
Jenkins and visual regression – Exove
Jenkins and visual regression – ExoveJenkins and visual regression – Exove
Jenkins and visual regression – Exove
Exove
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
Exove
 
WebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – ExoveWebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – Exove
Exove
 
Diversity in recruitment
Diversity in recruitmentDiversity in recruitment
Diversity in recruitment
Exove
 
Saavutettavuus liiketoimintana
Saavutettavuus liiketoimintanaSaavutettavuus liiketoimintana
Saavutettavuus liiketoimintana
Exove
 
Saavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistustaSaavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Exove
 
Mitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisälläänMitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisällään
Exove
 
Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8
Exove
 
GDPR for developers
GDPR for developersGDPR for developers
GDPR for developers
Exove
 
Managing Complexity and Privacy Debt with Drupal
Managing Complexity and Privacy Debt with DrupalManaging Complexity and Privacy Debt with Drupal
Managing Complexity and Privacy Debt with Drupal
Exove
 
Life with digital services after GDPR
Life with digital services after GDPRLife with digital services after GDPR
Life with digital services after GDPR
Exove
 
GDPR - no beginning no end
GDPR - no beginning no endGDPR - no beginning no end
GDPR - no beginning no end
Exove
 
Developing truly personalised experiences
Developing truly personalised experiencesDeveloping truly personalised experiences
Developing truly personalised experiences
Exove
 
Customer Experience and Personalisation
Customer Experience and PersonalisationCustomer Experience and Personalisation
Customer Experience and Personalisation
Exove
 
Adventures In Programmatic Branding – How To Design With Algorithms And How T...
Adventures In Programmatic Branding – How To Design With Algorithms And How T...Adventures In Programmatic Branding – How To Design With Algorithms And How T...
Adventures In Programmatic Branding – How To Design With Algorithms And How T...
Exove
 
Dataohjattu asiakaskokemus
Dataohjattu asiakaskokemusDataohjattu asiakaskokemus
Dataohjattu asiakaskokemus
Exove
 

More from Exove (20)

Data security in the age of GDPR – most common data security problems
Data security in the age of GDPR – most common data security problemsData security in the age of GDPR – most common data security problems
Data security in the age of GDPR – most common data security problems
 
Provisioning infrastructure to AWS using Terraform – Exove
Provisioning infrastructure to AWS using Terraform – ExoveProvisioning infrastructure to AWS using Terraform – Exove
Provisioning infrastructure to AWS using Terraform – Exove
 
Advanced custom fields in Wordpress
Advanced custom fields in WordpressAdvanced custom fields in Wordpress
Advanced custom fields in Wordpress
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – Exove
 
Jenkins and visual regression – Exove
Jenkins and visual regression – ExoveJenkins and visual regression – Exove
Jenkins and visual regression – Exove
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
 
WebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – ExoveWebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – Exove
 
Diversity in recruitment
Diversity in recruitmentDiversity in recruitment
Diversity in recruitment
 
Saavutettavuus liiketoimintana
Saavutettavuus liiketoimintanaSaavutettavuus liiketoimintana
Saavutettavuus liiketoimintana
 
Saavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistustaSaavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistusta
 
Mitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisälläänMitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisällään
 
Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8
 
GDPR for developers
GDPR for developersGDPR for developers
GDPR for developers
 
Managing Complexity and Privacy Debt with Drupal
Managing Complexity and Privacy Debt with DrupalManaging Complexity and Privacy Debt with Drupal
Managing Complexity and Privacy Debt with Drupal
 
Life with digital services after GDPR
Life with digital services after GDPRLife with digital services after GDPR
Life with digital services after GDPR
 
GDPR - no beginning no end
GDPR - no beginning no endGDPR - no beginning no end
GDPR - no beginning no end
 
Developing truly personalised experiences
Developing truly personalised experiencesDeveloping truly personalised experiences
Developing truly personalised experiences
 
Customer Experience and Personalisation
Customer Experience and PersonalisationCustomer Experience and Personalisation
Customer Experience and Personalisation
 
Adventures In Programmatic Branding – How To Design With Algorithms And How T...
Adventures In Programmatic Branding – How To Design With Algorithms And How T...Adventures In Programmatic Branding – How To Design With Algorithms And How T...
Adventures In Programmatic Branding – How To Design With Algorithms And How T...
 
Dataohjattu asiakaskokemus
Dataohjattu asiakaskokemusDataohjattu asiakaskokemus
Dataohjattu asiakaskokemus
 

Recently uploaded

Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 

Recently uploaded (20)

Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 

Building Drupal 8 Sites

  • 1. Our experience withOur experience with building Drupal 8building Drupal 8 SitesSites Twitter: @laurii1Twitter: @laurii1
  • 2. Lauri EskolaLauri Eskola Drupal Theme System Co- Maintainer Working for Druid I love kittens (and my hobby is to keep adding them to Drupal Core) Twitter: @laurii1Twitter: @laurii1
  • 4. Lääkärikeskus AavaLääkärikeskus Aava One of the largest privately own healthOne of the largest privately own health care provider in Finland, revenue > 40M€care provider in Finland, revenue > 40M€ Runs multiple sites on various DrupalRuns multiple sites on various Drupal versionsversions 22 content authors on Aava.fi22 content authors on Aava.fi
  • 5. A Year ago Aava wanted toA Year ago Aava wanted to rebuild Aava.firebuild Aava.fi Goals:Goals: 1. Make Aava brand more visible1. Make Aava brand more visible 2. Grow the amount of reservations made2. Grow the amount of reservations made onlineonline 3. Bring services provided by Aava more visible3. Bring services provided by Aava more visible 4. Improve the UX of the website4. Improve the UX of the website
  • 6.
  • 7.
  • 8.
  • 9.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. Consensus to startConsensus to start using Drupal 8using Drupal 8
  • 18. Retheming or rebuildingRetheming or rebuilding the site?the site? We started testing some of the new features on the old site and we got to see how the old site was built Soon we realized that the data structure needs to be improved New site and data migration is needed
  • 19. Why Drupal 8?Why Drupal 8? Pros: Long life cycle Has many of the features built in core - some of them not available for Drupal 7 Lower cost of development in long run Cool factor Cons: Stability Contributed modules
  • 20. After few weeks everyone agreed:After few weeks everyone agreed: Let's build it on Drupal 8Let's build it on Drupal 8
  • 21. How did we actually do it?How did we actually do it? MigrationMigration SitebuildSitebuild BackendBackend Front endFront end PerformancePerformance HEAD to HEADHEAD to HEAD
  • 22. Migration module for DrupalMigration module for Drupal 8 was not ready yet8 was not ready yet
  • 23. That had to be built byThat had to be built by ourselves..ourselves..
  • 24. MigrationMigration Custom Built MigrationCustom Built Migration Drupal 7 Services module (JSON) Drupal 8 custom importer inspired by Migration Code was open sourced: https://github.com/lauriii/lka_content_import
  • 25. MigrationMigration 14 node types was converted into 11 node types 4000 nodes 200 taxonomy terms
  • 27. The contributed modules usedThe contributed modules used Display Suite Form Block Inline Entity Form Metatag Pathauto Token (Required by Pathauto) Views field view 7 vs 101 contributed modules
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33. Tabs on the node page are local tasksTabs on the node page are local tasks Local tasks didn't support caching at all - actually they broke the whole caching Local tasks in core was converted into blocks and sufficient cacheable metadata was added
  • 34.
  • 36.
  • 37. Custom codeCustom code 7 / 29 modules are supporting / extending cores or contributed modules functionality Most of the modules contains site specific business logic In Drupal 8 you don't need Drupalist anymore to write this logic - it can be generic PHP devleoper
  • 38. TestingTesting In Drupal 8 we are mostly using Unit tests Pros Fast to run Can be used as a helper during development Easy to maintain Points out bad code Allows test coverage reporting Cons Expensive to create
  • 39. Open Sourced CodeOpen Sourced Code Multiple bug fixes to: Drupal Core Display Suite Pathauto xmlsitemap Inline Entity Form https://github.com/lauriii/contact_form_formatter https://github.com/lauriii/subpathauto https://www.drupal.org/project/block_node_type_negate
  • 40. Being early adopterBeing early adopter In Drupal 7 fixing many of the bugs would have been nearly impossible We would have been forced to find workarounds Most of the time slower than actually fixing the bug properly On the other hand some time had to be used for fixing bugs that doesn't exist in Drupal 7
  • 42. Front endFront end No contributed themes available Built on top of Classy Used SASS, SMACSS, and BEM
  • 43. CSS / SASSCSS / SASS base/ blocks/ components/ _dependencies.scss maintenance-page.scss print.scss partials/ styles.scss
  • 44. TemplatesTemplates 52 template overrides We are using Twig extend functionality everywhere {% extends "page.html.twig" %} {% block title %} {% endblock %} page--node--article.html.twig
  • 45. How to test ifHow to test if something is empty?something is empty? Open core issue: Problem is that everything is loaded lazily, so we don't know even at the template level if something is going to be empty. When this was needee we used CSS and in one use case we had to fall back to early rendering. https://www.drupal.org/node/953034
  • 47. Caching strategyCaching strategy Using Drupal internal page cache and internal dynamic page cache Easy and fast configure No reason to use Varnish Good for small and medium sized websites Default cache max-age is 1 day Cache contexts and tags are being used everywhere Goal in Aava.fi is to show always up to date information -> in Drupal 7 no caching at all
  • 48.
  • 49. Front end performanceFront end performance Minimal Javascript jQuery not loaded by default Javascript and CSS in libraries and attached to render arrays in preprocess functions Internal goal was to be able to serve the website in under 5s on any device Without further optimization we can serve old phones (tested with Lumia 630) in 7s Modern phones (Tested with iPhone 6s Plus) 2s
  • 50. This is a good example of a site that is buildable on Drupal 8 What to not build on DrupalWhat to not build on Drupal 8?8? https://contribkanban.com/board/contrib_tracker