Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save wilfi/957c730d8df751b08ea73368af652b01 to your computer and use it in GitHub Desktop.
Save wilfi/957c730d8df751b08ea73368af652b01 to your computer and use it in GitHub Desktop.
SDLC - Best practices with Drupal based application
In this session I’ll be covering some of the best practices for software
development with Drupal keeping in scope the below cycles
1. Implementation strategy
2. Development
3. Maintenance & Contingency
Under Implementation strategy I’ll talk about
Getting raw requirements of a project and how to architect it with Drupal and
its module ecosystem. I’ll cover about the importance of using Profiles &
Distributions, the migration strategy, FE vs BE timeline and Multi-customer
scenarios.
Will deep dive into Multi customer scenarios with the below 3 options
1. Single codebase, single database
2. Single codebase, separate databases
3. Separate codebase, separate databases
I’ll try to related decoupled architecture with these scenarios as its one of
the main use case where customer will be having multiple channels and single
source of truth.
Under Development I’ll talk about
1. The importance of having a Development environment which is consistent
across the dev team. Will give a brief overview of some of the best in class
dev setup like Lando, DDev, VirtualBox, Docker, DrupalVM, Acqua BLT etc
2. Then I’ll go through the importance of version control and composer managed
project and best practices with version control.
3. Then I’ll talk about why the development style shouldn’t be compromised
inorder to achieve extensibility. Will cover few scenarios about when to build
a patch vs when to add a new issue on module issue queue vs when to extend the
module’s functionality in custom module.
4. Then I’ll cover best practices while dealing with database queries and why
developers don’t have to deal with the details of physical design of the
database.
5. Then I’ll talk about best practices while the project is in QA and why some
of the projects can’t go past QA. I’ll explain the concept of Continuous
integration and will take Jenkins as an example. I’ll also brush upon Release
(continuous delivery) and will share the strategy before performing any updates
or upgrade on prod environment.
Under Maintenance & Contingency I’ll talk about
How the website can be kept up to date and DR plan.
1. I’ll cover the cron jobs and what are the usual automated tasks Drupal will
run like search index, feeds import etc. Will explain what is a poorman’s cron
vs an actual server triggered cron job.
2. Finally I’ll cover the activity needed for disaster recovery like taking
regular backups, automated snapshots, hosting in multiple regions/ zones etc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment