13th July 2021
Reducing total cost of ownership (TCO) is a key element of scaling digital services.
Scalable digital services aren’t just about a product’s ability to handle incremental loads seamlessly: Great CTOs know that building truly scalable digital solutions is as much about reducing total cost of ownership (TCO) as it is about improving alignment and productivity and owning the talent roadmap. When embarking on a digital ecosystem transformation, it’s important to get these things right from the start.
Scalability is a multidimensional concept that requires a comprehensive approach to utilising performant systems, building strong teams, choosing the right technologies and tools for building and a commitment to innovation and flexibility. Over the past 10 years, we’ve worked with over 100 clients on a wide array of digital solutions and learned a lot about the right way to build digital products that scale all the way up.
When implemented correctly, efforts to reduce TCO can have positive effects not just on the bottom line but on the productivity and profitability of a project. Today, we will look into the importance of establishing a blueprint; choosing the right infrastructure; taking advantage of managed services; tooling, technology and frameworks; cross-platform development; reducing technical debt; as well as code reuse and componentisation and how they contribute to reducing TCO.
Establishing a blueprint
Before any engagement begins, we analyse clients’ goals, aspirations and challenges and develop a path uniquely suited to the issues they are trying to solve. For some, that may mean a hybrid set-up with a combination of Google Cloud and on-premise infrastructure, whereas a serverless AWS or Azure approach may be the best for others, and vice versa. Whatever the challenge, we have the experience, knowledge and senior developers to solve the problems that may arise and embrace the beauty of composing unique solutions.
Because of our extensive experience, we developed accelerated yet flexible approaches to getting projects up and running quickly so that we can start building solutions with our clients in the shortest time possible. These accelerated approaches are bespoke and opinionated and have evolved over the years with best practices and automation built in. They are built using open-source technologies and are cloud agnostic, which gives us the flexibility to configure them to work with any service based on clients’ needs.
We start every engagement with a discovery workshop. During this 3-5 day engagement, we get to know the teams we’ll be working with; establish product goals; communicate the tools and frameworks best suited to the project, based on team structure, experience and project aspirations; develop a prototype and map out a path for getting the project up and running, including timelines and upskilling (where necessary).
As a company of developers, we have a strong passion for creating an excellent developer experience, and our approaches are built with a great developer experience in mind.
Choosing the right infrastructure
More and more businesses have been spending money on cloud infrastructure over the past decade. Research shows that companies are now spending more on cloud infrastructure than on on-premise infrastructure, and the industry is growing steadily year after year. Given the number of different ways to implement cloud infrastructure, it’s difficult for an organisation to determine the best approach. Finding the best tools and people familiar with them adds another layer of complexity.
We’ve been working with cloud infrastructure for the last decade and have seen many use cases. During this time, we’ve seen numerous different approaches and combinations of tools and technologies and learned a lot about what works best. This has allowed us to create a solid foundation to get cloud projects up and running with a strong backbone and ready to begin deploying in a matter of hours.
By starting small with a greenfield project and layering on complexity, the system grows with the product. Developers will be able to innovate and deploy in real time, systems can scale to handle load on demand, money will be spent only on services used, automation is built in from our side and nothing we set up for you is proprietary — there is no vendor lock-in with NearForm.
Taking advantage of managed services
When implemented correctly, moving infrastructure to the cloud can reduce infrastructure costs. Conversely, poor implementation can result in high bills. Understanding the services and tooling needed to get cloud infrastructure right is a skill set that can generate highly reliable, highly available, highly scalable products and also reduce the cost of maintenance and keeping products performant.
We understand the nuances associated with cloud infrastructure and, through our experience in over 50 projects implementing cloud solutions, have developed repeatable processes based on best practices and our learnings over the years. We are constantly optimising and analysing our approach in an effort to deliver the strongest possible foundation for cloud infrastructure aspects of client projects.
Proper testing, monitoring and logging, along with continuous optimisation, ensure that cloud-based projects derive the maximum functionality and advantages from cloud infrastructure. One of the main draws of moving to the cloud is the ability of services to scale automatically based on load, but the reduction in the cost of maintaining complex infrastructure on site is another major incentive to do so.
By starting with a strong foundation that is adaptable based on client requirements and project goals, our solutions harness the power of the cloud while reducing the TCO of the product for clients.
Tooling, technology and frameworks
As important as infrastructure and developer skills are to a project, choosing the right tools and frameworks to build scalable products is just as crucial. With over 100 million repos on GitHub alone, it can be daunting to try to architect a project. It is possible to track the most popular repos, and millions of blog posts discuss the relative merits of various frameworks, but until an organisation starts implementing a solution, it cannot predict how well everything will work together.
NearForm is not only the largest single contributor to Node.js, we also contribute to the development of other open source projects that are available free to solve business problems. We’ve tried many popular technologies, but when these don’t work satisfactorily, we support our developers in developing better solutions for business problems. One of these is Fastify, which is developed in part by our very own Matteo Collina.
The key takeaway here is that having experience with the hottest technologies and seeing how they work together give us a unique perspective on how to structure our clients’ projects in a bespoke and opinionated manner. We’ve tried a multitude of configurations over the years and learn from each project, continuously honing our skills and strengthening the foundations we implement at every turn.
By consulting with an outside firm on project architecture before beginning a project, organisations can save in the long term by getting the proper tools and frameworks in place to build truly scalable digital services.
The frontend is broken. In an effort to meet the demands of consumers and develop engaging apps, many companies have become focused on delivering solutions that span web, iOS and Android. Content must be delivered on all of these platforms. However, until recently this required multiple teams of developers focusing on each platform. Feature parity across platforms is very difficult to achieve with a fractured approach.
In the past 5 years, however, technologies such as React Native have solved the problem of multiple code bases for essentially one application. React Native provides one codebase for iOS and Android and, with React, it is simple to translate features to web interfaces as well.
By giving developers the tools they want to learn and empowering them to create single codebases for apps, finances can be diverted elsewhere instead of employing multiple teams to manage different versions of an app while trying to ensure feature parity across all versions.
We worked together with IBM to build a multi-platform, open banking app based on one code base and created a reference architecture for all devices. The experience we gained from that engagement is part of our accelerated approach to getting projects off the ground with a single codebase and reference architecture in place.
Reducing technical debt
According to Wikipedia, technical debt is the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Like financial debt, technical debt can accrue “interest” over time making it more difficult to fix problems down the road that arose from poorly planned implementations or taking the easy way out.
By implementing strong documentation standards, using excellent logging and testing tools, developing a clear goal for the project and improving products incrementally, the focus can be shifted from pushing out features to satisfy story points to pushing out features that improve the quality of the product, with an emphasis on a well coded architecture that does not create bottlenecks or debt that will have to be paid at a later date.
In this article from TechRepublic, as many as 84% of developers say they spend too much time fixing bugs which keeps them from innovating and moving products forward.
“Developers report that fixing bugs makes them feel frustrated, overwhelmed, burned out, resentful and that they want to quit… 86% said there’s one way the problem could be solved—better tools for detecting and fixing code errors.”
As a company comprised of software developers, we know this frustration well, so we constantly support our developers to create open source tools, such as Clinic.js for diagnosing performance issues in Node.js and Pino.js (the fastest Node.js logger), to help developers pinpoint errors earlier in the process and reduce technical debt in the log run. This allows developers to focus on what they love — developing new features and improving overall product quality.
With more developer hours spent on building rather than troubleshooting and bug fixing, products become more profitable, grow quicker and cost less — reducing TCO.
Code reuse and componentisation
One of the greatest challenges that the explosion in open source software over the past decade has managed to solve is reusable code. Instead of building projects from scratch, we now have mature frameworks with strong foundations available to get projects up and running quickly — thanks to Node.js.
This translates to faster deployments and more iterative development allowing products to get off the ground quicker and begin growing immediately. Monolithic applications that contain all code and logic within one application are much more difficult to innovate and scale than applications built on microservices, which are built by small teams to scale individually and work across multiple aspects of a project or projects. Consequently, services built with reusable microservices are easier to debug and fix without requiring a full system rebuild and deployment.
Another facet of code reuse is componentisation. By building a library of components that can be reused throughout multiple projects, organisations can establish a solid foundation that helps them get up and running quickly. Throughout our history, we’ve focused on building strong foundations with reusable code and components, which helps us get projects up and running quickly so we can work with our clients to begin building products within a few weeks of our first engagement. Because we don’t believe in vendor lock-in and all of the tools we use are open source, we work with clients to understand our approach so they can build successful approaches in their own organisations.
By taking the time to plan projects logically, focus on making simple code and making products with independent microservices that work together, organisations can realise productive CI/CD while reducing TCO. It’s important to point out that “simple” is not the same as “easy”. Organisations focused on a quantitative approach to software development may find that developers take the easy way out when developing new features in an effort to satisfy story points. Simple code may take more time to implement, but it will be easier to understand, debug and replicate as products evolve.
Work with a partner to change your culture
Whether beginning a new project, transforming a digital ecosystem or modernising an existing product it is crucial to consult with experts outside of the organisation that can help make sure all of the important aspects are in place to help the product succeed. Successful software consultants such as NearForm build engaging products across multiple industries, continually evolving and improving their craft while focusing on keeping developers engaged and innovative and empowering clients to adopt this comprehensive approach.
Our approach is not “this is the way we do things, and we’ll embed our tools in your company and show you how to use them.” Instead, it is “this is our approach, let’s figure out together what your goals are and select the right tools to make that happen; along the way we’ll work with you on scaling this throughout your organisation and show you how to manage your custom solution.”