About Me

Arpit Rastogi

Drupal Developer @Srijan Goa

@arpit_rastogi10

Agenda

  • Problem with configuration management till Drupal 7.
  • Features as Solution.
  • Features as deployment tool.
  • Features as site building tool.
  • Features Architecture.
  • Do's and Don'ts while building features.

Drupal Architecture

Content

Configuration

Code Base

Web Server

Data Base

Problem - Deployment

Content

Configuration

Code Base

Web Server

Content

Configuration

Code Base

Web Server

@Development

@Production

Problem - Reuse of configuration

Site A

Site B

Site C

Site D

Common site components

Problem - Collaboration

We found the solution

To the Rescue

Features Module.

 

What it does?

  • Pulls configuration into code base.
  • Allows tracking of configuration changes.
  • Allows re-use, sharing of configuration.
  • Bundles up components as module.
  • Allows easy switching to earlier configuration stage when used with version control.

Content

Configuration

Code Base

Web Server

Data Base

Demo: Basics of Features

States of Feature

  • Default - When code base and database are in sync, no action required.
  • Overridden - When either of code base or database is updated, revert/update are the possible actions to reach to default state.
  • Needs Review - This is effectively the same state as overridden, but generally means there are more complicated changes and it's recommended you review the differences prior to reverting the feature.

Actions on Feature State

  • Revert - Update database to revert to configurations which the feature module contains. Be careful!, it will wipe off all the un-tracked configurations which are done from UI and not present in feature.
  • Recreate/Update - Update code base to get the latest manual database changes into feature code base.

@Development 

@Staging

Step 1: Manual Configurations

Create(Action)

feature v 7.x-1.0 Default(State)

Push to stg

Install feature 7.x-1.0

Default(State)

Features States and Action

@Development 

@Staging

Step 2: Modify Configurations 

Re-Create(Action)

feature v 7.x-1.1 Default(State)

Push to stg

feature 7.x-1.1

Overridden(State)

feature v 7.x-1.0 Overridden(State)

Revert(Action)

feature v 7.x-1.1 Default(State)

Demo : Features update workflow

Features as site building tool

  •  Features satisfying a specific use case and are independent can be helpful in building platform for multi-site.
  •  Features allows to port configurations from prototypes to build a consolidated site, help in discovery phase of project.
  •  The more we can break functionalities to have them independent the better we can build features on them.

Protyotype:1

Protyotype:2

Protyotype:3

Create Feature

Create Feature

Consolidated Site with approved functionalities

Feature Architecture

  • More of a working agreement with in the team, proper plan to be laid out.
  • Ask what if I disable this feature, will it impact the site or will it simply turn off the use case offer by feature.
  • Feature what you configure, keep it simple.
  • A second thought before building the feature.

Feature Toolbox

  • Features Module
  • Diff Module - Allows to see difference in code base and data base in terms of configuration.
  • Strongarm Module - Allows site variable to get into features.
  • Drush - Command line feature integration
  • Features Extra Module - Allows you to export blocks, nodequeues.
  • Feature Override Module - Allows  to create separate features for overriden configurations to keep default features intact.

Do's and Don'ts for feature building

  • Do not only test the feature from where it is built from.
  • Keep updating features and keep them in default state.
  • Should not create one giant feature, break your features each satisfying a use-case.
  • See it more than just a tool for configuration migration, instead see them as site building block.
  • Try to keep your features independent to each other.
  • Take database back before any major/doubtful feature update as features may cause loosing of configuration.
  • An overridden feature is not ready to deploy.
  • Divide base field and instance fields in separate features.
  • Do not feature components that admin is supposed to change frequently. 

Features in Drupal 8

  • Features will still need to exist in D8
  • (Configuration Management Initiative) Use CMI API as much as possible.
  •  Still need to be able bundle configurations and deploy it to a site
  •  Will coordinate with CMI

Features with Drush

  • Drush commands for features.

features-add (fa)

Add a component to a feature module.

features-diff (fd)

Show the difference between the default and overridden state of a feature.

features-export (fe)

Export a feature from your site into a module.

features-list (fl,

List all the available features for your site.

features)

  features-revert (fr)
  Revert a feature module on your site.
  features-revert-all
  Revert all enabled feature module on your site. (fr-all, fra)

  features-update (fu)
  Update a feature module on your site.

  features-update-all
  Update all feature modules on your site. (fu-all, fua)

Thank You

#DCH Features

By Arpit Rastogi

#DCH Features

DCM Features module as site building tool

  • 2,575