Invotra's Product Manager, Billy Clackers, and Technical Services Manager, Nqobile Dube gave a presentation surrounding ‘how we leveraged Drupal to build a leading SaaS product’ at Drupal Show and Tell 2019.
3. iO1
● You’re probably using
some of our code
● Earl Miles (merlinofchaos),
Head of Research
● Established Drupal
development house
4. Home Office approach us...
Asked us to build them an intranet
* One catch: It must be available as a SaaS product on Gcloud
30,000
20-25 concurrent users
10,000+
content migration
5. Long story short
● We closed down our accounts as
iO1 and started to solely focus on
Invotra
● At the time, Invotra was around
15-20 employees
6. The product was launched
Basic CMS intranet using D7
Basic search for content using Solr
Matomo (formerly Piwik) for analytics
25k
unique logins
700k
visits
200k
searches
130k
downloads
8. HMRC come aboard
Introduced Manuals, integrated with gov.uk
68k
unique logins 2M
visits
800k
searches
600k
downloads
9. Home Office ‘small apps’ migration
● They were not really ‘small’
● Introduced a people directory
○ Searching people, teams & locations
● Introduced Ideas, Tickets, Forums, Document archive
13. Meanwhile
● We onboard:
○ DfT
○ Reading
○ Bracknell
○ Stevenage
○ East Herts
● 45% of UK Government using our intranetproduct
14. Bursting at the seams
Nqobile is going to talk about some of the challenges we face
supporting this from an infrastructure perspective
200k
unique logins 4M
visits
115M
Visits / year
18. Challenges
● Drupal out of the box is not built to handle over 50K
requests/min
● Drupal needs to be able to index millions of documents
● Drupal brings a lot of baggage with every page load
● Bottlenecks causing major edge case issues
19. Handling over 50k requests/min
● We made sure to have extensive Monitoring across the
platform
○ New Relic
○ AWS CloudWatch
● Implemented Autoscaling within AWS
● Used Drupal for what it is best for - Content / Access
control
● We welcomed optimisation opportunities
20. Indexing Millions of documents
● We clustered our Search engine (Solr)
● We leveraged drush for indexing
● Indexed exactly what we needed
21. Drupal baggage
● There is so much functionality in the product
● Massive bootstrap with every page load
● Caching at every level was Key
○ Varnish
○ Opcache
○ Memcache
○ Database query cache
● With the right caching we improved page load times by up
to 40%
22. Reaching Bottlenecks
● Over the years, more traffic meant more edge case issues
● These issues were specific to our platform
● Through monitoring we were able to pinpoint bottlenecks
● If there was anything we could give back to the drupal
community, we would
24. A new approach
● We realised we needed a new approach
● We know that D8 is looming
25. Mobile app
● A customer asked us to build a mobile app for them
● We built it solely using our API’s, with a javascript front
end
● This gave us an idea..
26. Replatforming
● Decided to start building out a whole new architecture
○ API’s and JS front end
○ Utilising a D8 back end
● Nqobile will talk more on this later on
27. Invotra labs
● Started this stream of work in parallel to replatforming
● The idea is to start replacing current D7 functionality with
JS apps that utilise API’s
● Utilising Material UI
● Here’s an example..
28. The vision
● Replace the product bit-by-bit, creating js apps that talk to
the API
● This helps us to seamlessly switch over to D8 as and when
we are ready
● Nqobile is now going to take us through the new
infrastructure in more detail
30. The new Infrastructure
● Drupal 8 for content processing
● AWS Cognito for Authentication
● GraphQL/AWS Lambda for Nodejs API calls
● ReactJs for front end delivery
● AWS ElasticSearch as the Seach engine
● AWS EFS for storing customer assets
● AWS DocumentDB
● AWS RDS Aurora
31. Benefits
● Moving to Serverless platform
● Deployments at pace
● Deployments without any downtime
● Taking full Advantage of AWS Expertise
32. Moving to a Serverless platform
● We value AWS managed Services
● We can focus on growing the product
● We only pay for what we use
● This positively affects Service availability
● We are able to Deliver a better experience to our
customers
33. Deployment at pace
● At the moment we deploy Invotra enhancements
fortnightly
● We have a goal of being able to deploy daily
● We do not want to compromise the user experience
● This new infrastructure will enable us to achieve this
34. Deployments - No Downtime
● We currently release breaking changes almost every
release - This requires downtime
● We had to rethink our deployment strategy
● With AWS managed Services this is made possible
35. AWS integrations
● We are always on the lookout for Integrating with AWS
Services
● We leverage Drupal to Allow us to integrate with AWS
● Example - ALB Authentication
https://www.drupal.org/project/alb_auth
● AWS Lambda / API Gateway - for backend APIs and
notifications services
36. Key points
● Only use Drupal for what it is best for
● Always improve your Monitoring capabilities
● Welcome Optimisation opportunities
● Do not be afraid to refactor
● Give back to the community to build a better Drupal