SlideShare uma empresa Scribd logo
1 de 51
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

Mais conteúdo relacionado

Mais procurados

11 Live Node.js CMS Frameworks
11 Live Node.js CMS Frameworks11 Live Node.js CMS Frameworks
11 Live Node.js CMS FrameworksiScripts
 
Agriya services
Agriya servicesAgriya services
Agriya servicesiScripts
 
WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016WordPress Multilingual: WordCamp Antwerp 2016
WordPress Multilingual: WordCamp Antwerp 2016Octavio 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 ScriptiScripts
 
Drupal vs WordPress
Drupal vs WordPressDrupal vs WordPress
Drupal vs WordPressPhill Brown
 
Drupal vs Wordpress
Drupal vs WordpressDrupal vs Wordpress
Drupal vs WordpressIan Mariano
 
Perfect Web Project
Perfect Web ProjectPerfect Web Project
Perfect Web ProjectExove
 
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 usersLuke 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 GotchasSuzanne Dergacheva
 
WordPress as a Service
WordPress as a ServiceWordPress as a Service
WordPress as a ServiceAndrew 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 lineDwayne 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 CMSPantheon
 
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 QuickWordCamp 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 2014Viktor Vogel
 
Sylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce FrameworkSylius - Open Source eCommerce Framework
Sylius - Open Source eCommerce FrameworkPaweł 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 APIsPaweł Jędrzejewski
 

Mais procurados (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
 

Destaque

Drupaling a Devleopment Plan
Drupaling a Devleopment PlanDrupaling a Devleopment Plan
Drupaling a Devleopment Planjskulski
 
Requirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsRequirements & Drupal: Planning for Successful Projects
Requirements & Drupal: Planning for Successful ProjectsAcquia
 
Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8Building rednoseday.com on Drupal 8
Building rednoseday.com on Drupal 8Peter 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 DrupalExove
 
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 timelineArdi Hundt
 
Drupal 8 Preview for Site Builders
Drupal 8 Preview for Site BuildersDrupal 8 Preview for Site Builders
Drupal 8 Preview for Site BuildersAcquia
 
Media Project Plan Timeline New
Media Project Plan Timeline NewMedia Project Plan Timeline New
Media Project Plan Timeline NewJosephKnight
 
WordPress Café: Making a Future-Media
WordPress Café: Making a Future-MediaWordPress Café: Making a Future-Media
WordPress Café: Making a Future-MediaExove
 

Destaque (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
 

Semelhante a 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 7Jay 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 7Jay Epstein
 
The State of Drupal 8
The State of Drupal 8The State of Drupal 8
The State of Drupal 8nyccamp
 
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 FrameworkMediacurrent
 
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 FeaturesNuvole
 
Drupal in 30 Minutes
Drupal in 30 MinutesDrupal in 30 Minutes
Drupal in 30 MinutesRobert Carr
 
Drupal Roadmap 2010
Drupal Roadmap 2010Drupal Roadmap 2010
Drupal Roadmap 2010kathyhh
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
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 8Acquia
 
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
Drupalbtopro
 
State of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon ViennaState of Drupal keynote, DrupalCon Vienna
State of Drupal keynote, DrupalCon ViennaDries Buytaert
 
Drupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutionsDrupal training-by-ruchiwebsolutions
Drupal training-by-ruchiwebsolutionsphp2ranjan
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPALBrahm
 
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 khemkaSynapseIndia
 
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 9Mediacurrent
 

Semelhante a 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
 

Mais de 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 problemsExove
 
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 – ExoveExove
 
Advanced custom fields in Wordpress
Advanced custom fields in WordpressAdvanced custom fields in Wordpress
Advanced custom fields in WordpressExove
 
Introduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveIntroduction to Robot Framework – Exove
Introduction to Robot Framework – ExoveExove
 
Jenkins and visual regression – Exove
Jenkins and visual regression – ExoveJenkins and visual regression – Exove
Jenkins and visual regression – ExoveExove
 
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 – ExoveExove
 
WebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – ExoveWebSockets in Bravo Dashboard – Exove
WebSockets in Bravo Dashboard – ExoveExove
 
Diversity in recruitment
Diversity in recruitmentDiversity in recruitment
Diversity in recruitmentExove
 
Saavutettavuus liiketoimintana
Saavutettavuus liiketoimintanaSaavutettavuus liiketoimintana
Saavutettavuus liiketoimintanaExove
 
Saavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistustaSaavutettavuus osana Eläkeliiton verkkosivu-uudistusta
Saavutettavuus osana Eläkeliiton verkkosivu-uudistustaExove
 
Mitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisälläänMitä saavutettavuusdirektiivi pitää sisällään
Mitä saavutettavuusdirektiivi pitää sisälläänExove
 
Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8Creating Landing Pages for Drupal 8
Creating Landing Pages for Drupal 8Exove
 
GDPR for developers
GDPR for developersGDPR for developers
GDPR for developersExove
 
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 DrupalExove
 
Life with digital services after GDPR
Life with digital services after GDPRLife with digital services after GDPR
Life with digital services after GDPRExove
 
GDPR - no beginning no end
GDPR - no beginning no endGDPR - no beginning no end
GDPR - no beginning no endExove
 
Developing truly personalised experiences
Developing truly personalised experiencesDeveloping truly personalised experiences
Developing truly personalised experiencesExove
 
Customer Experience and Personalisation
Customer Experience and PersonalisationCustomer Experience and Personalisation
Customer Experience and PersonalisationExove
 
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 asiakaskokemusExove
 

Mais de 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
 

Último

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Último (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

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