ClearScore Tech Radar 2019
One of our ClearScore Engineering Principles is that we constantly aim to review our technology stack to continuously remove legacy. This process involves our teams collaborating on identifying techniques, tools, languages & frameworks and platforms that enable the best business outcomes for our current stage of growth.
To provide some clarity on the choices we make, we publish a Technology Radar each quarter.
It showcases the things we’re:
- Adopting (using when appropriate)
- Trialing (pursuing on some projects)
- Assessing (exploring to find out more), and
- Holding (phasing out and no longer using on new projects)
Our focus for 2019 is optimising our global platform. To achieve this, we’ve selected technologies to improve testing, monitoring, security and performance. The result will be an engine that is so finely tuned that - with any luck - we’ll be doing laps around our competition.
Development & testing techniques
At ClearScore, we prioritise ownership and speed of delivery over central control. Our entire organisational model is structured around this concept. We’ve implemented this by creating a number of independent ‘start-ups’, which we call ‘Delivery teams’, based around key parts of the user journey.
These teams create roadmaps to generate the maximum value in their domain. To keep them fully empowered, they have independent line management structures, their own objectives and key results (OKRs), and are free to organise themselves into Agile squads. For this model to succeed, it requires a huge amount of trust. Without direct external functional line management, we expect teams to use good judgement, and to be able to make mistakes and quickly learn from them.
Our architecture is decentralised using microservices and serverless architecture for our API layer, micro-frontends in our web tier, MVVM and VIPER architecture in our Android and iOS Native apps respectively. This allows each team to have end-to-end product ownership and the ability to autonomously release changes. By using best practices around continuous delivery and a combination of BDD, automated smoke tests, peer reviews and pipelines as code, we’re now able to comfortably release more than once per hour.
Development & testing tools
In the words of Emmert Wolf, "A craftsman is only as good his tools". Tools are important and selecting the right tools is the art of an experienced craftsman. The ecosystem we operate in is complex and so our toolset is rich. We carefully choose these to be fit for purpose - if one of the tools doesn't make us more efficient or doesn't deliver value, we’ll stop using it.
We use a range of systems to automate our build, development and testing processes. Code is committed into GitHub and is built using a pipeline based on Spinnaker, Jenkins, CircleCI, Fastlane and Bitrise. Automated unit and functional testing are done via JUnit for Services, Cypress for the web tier, Earl Grey for iOS and Espresso for Android.
ClearScore operates in a mode of high transparency. The rule of thumb is that if it’s appropriate for information to be shared, then we share it. We use a number of systems to keep each other in the loop, such as Slack for messaging and alerting, Atlassian Jira and Confluence for workflow and technical documentation respectively, Dropbox for all our files and Oak for our company intranet. Production monitoring with Pingdom, Grafana, Google Analytics and Instana is all hooked up to Slack to give everyone a view of the health of our systems day or night.
Languages & frameworks
Scala is now favoured over Java for writing our services. Similar to eBay, Amazon, Blizzard, Netflix and LinkedIn, we love its clean, concise nature and our performance obsessed developers are addicted to its advanced optimisation features. In fact, we were recently the proud hosts of the London Scala User Group back in January.
For Native Apps, we use the latest versions of Swift for iOS and Kotlin for Android. Our mobile team is in love with both of these languages. In the spirit of friendly competition, the Android team is particularly proud of reminding the iOS team that they reduced the size of the codebase by over 50% by recently adopting Kotlin over Java. In response, the iOS team pointed to the fact that their Swift built app has a 4.8 app store rating.
Protocols & platforms
We’ve invested heavily in our global platform and since April 2017, our infrastructure has been 100% on AWS. This investment has paid off with uptime over 99.97% for almost two straight years and has allowed us to successfully launch into South Africa and India. Over time, we’ve adopted a range of Amazon technologies and have continued to be impressed by how vibrant this space is.
To continue to scale, we’ve adopted Kubernetes for scheduling and running containers. This replaces our Hashicorp Nomad which was great to quickly get us into the Cloud. We now have the ability to auto-scale and perform canary and blue/green deployments. Our new platform has a series of automation tools that enable developers to deploy their own resources without requiring SRE support. This is the foundation for our NoOps culture.
Our Data and Analytics systems are critical to every business decision since our launch. We now use Segment as an ingestion point to push data into Amplitude for real-time monitoring and Blueshift for our CRM platform. It also populates our data lake in Amazon S3 and data warehouse in Amazon Redshift which powers Domo for our daily dashboards. Using a consistent method of collecting data across back-end systems, websites, and mobile apps simplifies extracting data to make key decisions.
Like what you’ve just read? If you want to be a part of our journey, check out our Technology Careers site. Get in touch to find out more about life at ClearScore; what it’s like to work with awesome people and awesome technology, and ultimately help people around the world make a better financial life for themselves.