The Alexander Thought Leadership Platform is a web platform developed for the Alexander Forbes Research Institute. It gives serious thought to:
- The needs of South African and Africans in general, and
- What the financial services industry can do to address those needs.
This project had some specific requirements, the major challenge was to produce a complex hierarchy of articles which had three different types (publications, parts and chapters). While each type had some unique functionality, they also shared a lot of commonalities making them a prime candidate for polymorphic joins via an abstract class to cover the shared functionality.
The next challenge was a content managed focus adminstration panel. It was an easy choice going with ApostropheCMS because the WYSIWYG interface made the experience a lot easier for the content manager however they needed A LOT of flexibility with the content widgets because this platform would grow over time to encapsulate all the Alexander Forbes Research Institute publications as well as become an open platform to allow other external researchers add their content too.
In April 2019, the development of the Thought Leadership Platform for Alexander Forbes began. I took a different approach with this project, focusing on two major concerns that were causing some issues with previous platform development. Component Driven Development (CDD) and Technical project management within a SCRUM based project board on Atlassian Jira.
Component Driven Development
Hellocomputer had many projects that weren't getting managed using what is considered a standard within software development in general, this standard approach is called Component Driven Development and its the process of constructing solutions in small iterative steps at an atomic scale initially until you have functional components and finally a fully functional platform.
I decided to approach this project with a CDD methodology to ensure we built out our requirements in the following order:
- A brand specific user interface (UI) kit comprised of typography, buttons, cards, tags and other basic building blocks required to produce a web platform frontend
- A component library made up of reusable content and template specific components which are created using the UI kit.
- Unique and specific page templates utilising the template specific components to create their unique composition while also making use of content specific components to allow a unique content managed driven page
In all software development landscapes this responsibility needs to be understood by the entire team, this alignment is make or break in the delivery of something on time and on budget. Without it a lot of time is spent making adjustments to the same components in multiple places because a level of inheritance isn't applied nor is it understood.
Utilising SCRUM methodology with Atlassian Jira
In all fairness, this is always difficult to get right but Atlassian studio makes this so easy to follow. SCRUM isn't a complex process, nor is the sequential requirements of building any web platform. It's simple, you have an assembly line:
- Code review
- Functional testing
- Design testing
- Client testing
This is done at a small scale iteratively along the CDD pipeline, break the requirements up into smaller atoms eventually growing in scale to functional and visually specific components and pages.
Atlassian Jira provides the bedrock for this behaviour to be maintained across the production cycle, it is by far the most thorough project management suite of tools available for software development because it also extends to the code through branch creation directly off Jira tickets within the Atlassian Bitbucket repository for the project.
Atlassian Bitbucket Pipelines handles all the CI/CD into our Azure environment for us so with a solid branching strategy not much else is needed to apart from strong code governance.
As mentioned above this platform makes use of ApostropheCMS, however, we have a bunch of other nifty and advanced configurations that give this project it's magic:
- Azure Linux App Service - The application runs on a Premium V2 plan with auto-scaling configured on the CPU metric only (to avoid flapping) to allow for 300 concurrent users on the platforms while maintaining a zero percent failure rate
- Azure Storage container - Hot accessed storage coupled with an Azure Content Delivery Network endpoint to ensure cached delivery of all ApostropheCMS uploaded media including faster streaming of video content (especially in the case of the video on the home page)
- Azure Application Insights - What good is a platform if you don't know how well it is performing. Most people go with the Google solutions here but I'm more inclined to keep performance tracking and analytics part of the developed solutions architecture. Application Insights provides metrics and analysis that Google Analytics simply has no access to. This platform was setup with an advanced and detailed level of analysis which provides advanced traffic funnels based off these events to indicate the success of the platform. My main objective with custom event tracking using Azure Application Insights was to get an understanding of how the project was utilised. We invested a lot of time into very specific features of this platform and knowing if they were actually utilised is precisely what I wanted Application Insights to tell me.
- MongoDB Cloud Atlas - ApostropheCMS uses a MongoDB database, the best provider for this is MongoDB Cloud Atlas. MongoDB Cloud Atlas has a policy driven backup service to ensure enterprise data safety and including performance metrics, there simply isn't any comparison to the level of service and quality the official database provider gives you.