What steps would you typically take to scale out a new Drupal site? Please read on! There are numerous CMS (content management system) platforms in the market. The top three general purpose CMS by market share are WordPress, Joomla and Drupal in that order.
Over the last five years I have scaled out about 20 Drupal 7 & 8 sites and applets in a variety of scrum master, BA and developer roles. I'm happy to share my experiences in this and more blogs in the works.
With Drupal you can leverage site building capabilities to scale-out a simple functional website with little custom coding, in this regard it is an excellent CMS. With sufficient imagination, innovation, time, resources and skill you can custom build any web-based site and application complete with complex workflows, functionality and interfaces. In this respect it is an excellent web application framework. In my opinion it is the platform that best combines these aspects of web development; the ability for rapid scaling out of simple sites and the potential for almost infinite custom development. It therefore offers the best solution in terms of flexibility and future proofing.
If all you are building is a simple site with the need for very limited scaling, customization and external interfaces, then WordPress will probably do. If it is likely that you’ll need to extend the simple site in the future with additional custom features then even for a simple site it may be a good idea to start with Drupal from the word go to avoid complex platform changes. This site (ipsafari.com) is quite simple, I therefore built it with WordPress. It has limited customizations and only a few interfaces, for example to Shopify for payment processing.
A Drupal site scale out has several aspects to it or phases in project management speak as you can see from the pictorial.
The first bit falls under the goals and strategy header
You'd typically build your website around business goals. Every website project needs to therefore start with a close examination of these goals. Business goals will determine platform and other project choices.
- Increased site traffic --> Improve reach
- Enhance acquisition and conversion
- Improve engagement and retention
- Gain UX Improvements for end users and content editors. Drupal content editing interface is intuitive. Content editors without HTML can be productive with relatively little training.
- Improve site performance metrics such as page load time, click through rate, bounce rate, average session duration, average pages per session, traffic and conversion
- Eliminate the use of multiple web sites and tools. Consolidate web assets on one platform. Drupal functionalities are extensive and interfaces with external systems flexible and varied
- Acquire a better website; Drupal’s is a secure, stable, reliable, scalable and extensible platform.
Explore & Discover
This phase links business goals to the project. There’s need for consistency between follow on project deliverables and activities on one hand and the initially identified project goals that we looked at earlier. Several facets help in ensuring this alignment.
Project management:
- A project plan is needed to guide and control the project. Agile and waterfall (traditional) are the two default approaches to project management. For Drupal site implementations an agile approach and tools such as JIRA scrum boards are in our experience preferable. We train project managers and have a short elaboration on the subject on our training page
- The choice of project manager is key. A “technical” project manager (one who know enough Drupal insides) is preferable to a generalist and will save you a lot. S/he will be able to verify your technical resources’ approaches and validate estimates. We’ve had experiences where developer estimates have been highly exaggerated mainly due to ignorance. On one occasion a developer quoted more than 20 hours at $120 for some custom work which could be accomplish in a couple of hours through configurations to a contributed module rather that building one from scratch.
- Create web site build plan:
Project plan from start to finish; may be a traditional plan with complete scope, schedule and budget finalized. It could also be an outline plan with ball packs for these figures. Planning is continuous and iterative especially if there are numerous unknowns or if an agile process is used.
Business Analysis:
You’ll need to list your requirements; business analysis techniques particularly elicitation (requirements gathering) is key here.
- Functional requirement: These requirements describe the behavior of the system, what the site will do, from an end user perspective. It is best to define these with the of “As is --> To be” perspective since you are moving from an old site in some platform to Drupal. It is best to express requirements as user stories.
- User story example for outbound mail notification feature: “As a participant in discussions, I need to be able to see responses by email because I'm not on the intranet all day every day”
- List relevant non-functional requirements. These requirements describe performance or usability of the Drupal site. Include standards, metrics and your goals. Possible non-functional requirements include load handling, security, usability, scaling, compliance, performance, accessibility, scaling, reliability and extensible
- Basically, functional requirements describe what a system does for the user while non-functional requirements describe how well it does what it does
- Validate requirements with backward and forward traceability:
- Align all requirements listed here with objectives (“Explore & discover” --> “Goals & strategy”) compare to discover possibility of extraneous requirements and tasks listed here.
- Align all objectives with requirements; (“Goals & strategy” --> “Explore & discover”); compare to reveal possible omissions.
Content:
Content is central to website projects.
- Plan content migration; from existing legacy platform(s) --> Drupal
- Plan content development of new content, if needed
- Create a content matrix to link all content that needs migration (old system URL) to its destination (Drupal URL) on new site.
- There are a couple of content migration strategies as we shall see in the section on development
Architecture & Design
This phase develops site blue prints from requirements. The steps are not necessarily linearly sequential as in traditional project management but can be highly iterative. User requirements clarify and change when they’re exposed to design. Set the project up for success with close customer/user collaboration with developers, business analysts and project managers
- Architecture - features: Revisit functional requirements listed in requirement gathering (Explore & discover) and convert these into a web site feature list
- Architecture - modules: Convert the web site feature list into (candidate) Drupal module list. There may already be modules in core that will do the job. You may need to search for a contributed module in Drupal.org or build your own custom module
- Architecture - Integration: Explore and document external system integration required. Candidates include ERP/CRM, mailers, e-commerce & payment processors
- Architecture – front/back end: Determine and document front/back end integration approach. This is an inexact science; the choice should be made carefully and will depend on the site’s anticipated usage scenario. It is possible to deploy;
- a Drupal based front-end based on Twig,
- incorporate some AJAX forms to improve page load times
- fully or partially decoupled front end, say with REACT JS.
- Architecture – front end: Create and document site map, navigation and wireframes
- Look/feel – front end: Determine and document theming/Brand and digital experience
Hosting: Dev, staging and production environments
- Set up cloud hosting environment
- Segment into dev, staging and production segment
- Download Drupal instances into developer workstations
- Establish GitHub project with repositories for version control
- Establish governance; to regulate transfer of code and related assets; between developer workstations, GitHub and the cloud hosted dev, staging and production environments
- Allow for tools such as Composer and Drupal Console. The Drupal Console is particularly useful from the productivity perspective for creating boiler plate code when there is significant custom module development. Composer helps load contributed modules completely, with all dependencies take care of.
Development
- Back-end - Modules: finalize module list; specify and build/use custom, contributed, core modules as needed. Integrate the same into coherent whole as per site map, wireframes and feature list.
- Back-end - Integration: implement identified third party integration to ERP/CRM, mailers, payment processors, ecommerce etc.
- Style/Front-end: select, implement “mobile first” themes for responsiveness across devices. Also ensure consistency with branding goals and digital experience as outlined above (Architecture & Design)
- Content/Front-end: Migrate content into the Drupal site from legacy system(s). Refer to content matrix. For small sites consisting of just a few pages manual content migration will suffice. For larger sites automatic migration via custom script or Drupal Migrate API. There are also some contributed modules that support automated content migration. To use the migrate API, ensure Migrate, Migrate Drupal and Migrate Drupal UI modules are enabled on your Drupal 8 site. This can be done by navigating to the ‘Extend’ tab of your website
Analytics & SEO:
- Set the stage for analytics (collection of web site traffic data) by implementing required capabilities, for example account and interface into GTM.
- Set up and utilize keyword research tools such as AHREFS to optimize content for search engine keyword ranking. Such tools are used for digital marketing analysis for example URL analysis, back-link analysis, competitor ranking for keywords of interest and so forth.
QA, Verification & Validation
- Features QA: Incorporate Drupal coding best practices into the development process.
- Features QC: During each development sprint continuously test, correct and optimize created features
- Features UAT: End users test for all functional requirements
- UX QA: Continuously optimize for end-users and content editors
- Implement non-functional requirements: Explore Drupal best practice for each non-functional requirement, create a checklist of steps to ensure that the requirement is met and the follow the steps.
- For example; to ensure your site meets security requirements, follow these best practices on Drupal Security
Go-Live
- Confirm Go-live readiness
- Re-direct site url (DNS mapping) to production web server
- Implement 301 mapping
- Carry out post launch smoke test
I hope you enjoyed reading this.
If you have a need related to scaling out a web site, we'll be happy to assist you build your site with either Drupal or WordPress. We can carry out any web project subset such as business analysis, strategy, project management and custom development if that's all you need.
Please check our consulting page for example projects. Also reach out if you like, even if you already have a contractor, we can always help validate and/or manage various aspects of your project. That way your work will be completed effectively, on time and you'll optimize value for money.