26th October 2021
To make digital transformation more than just a buzzword, companies need to adopt modern methods of application development.
With companies now under pressure to create and sell better digital products at an accelerating pace, some may need to change the way they design and build by adopting modern development methods. In this article, we outline how an updated approach to development can allow even small companies to meet ambitious growth targets.
Pressure to scale at speed
A McKinsey Global Survey of executives published in October 2020 found that companies had accelerated the digitisation of their customer and supply-chain interactions and of their internal operations by three to four years over the previous few months. Not only that, the proportion of digital or digitally enabled products in their portfolios had accelerated by a stunning seven years.
This massive shift to digital not only puts pressure on companies to hire and train more digital talent, it also puts a strain on traditional ways of working, with their emphasis on manual inputs and duplicated effort.
However, by creating software in more modern ways, teams become more agile, and they develop products that are more reliable, secure and scalable. At NearForm, we have seen this transformation in action, empowering even relatively small companies to deliver successfully at speed because they are working more efficiently with their resources.
Even companies that have created highly capable, stable, feature-rich platforms will not thrive in a digitally focused future if their architecture is not designed to accommodate planned growth. As the user base expands, the platform will struggle to cope, and performance will suffer.
The answer is to adopt streamlined practices and processes that make optimal use of automation and avoid duplication of effort. By modernising their development methods, teams can do more with less and adapt quickly to changes so the business can scale successfully.
Limitations of outdated approaches to design and development
Developers often have to work with outdated legacy systems that are problematic for a host of reasons. Older code requires excessive ongoing support and doesn’t integrate easily with newer technologies, creating data silos and introducing security vulnerabilities.
Monolithic architectures tend to be highly dependent on a single or replicated database, creating bottlenecks in both deployments and database implementations and drastically reducing the capacity to scale the platform as more users are added and more features are developed.
Processes and implementation also become unwieldy as the size and complexity of the single code base grows. Code modules expand and become increasingly interdependent, making it difficult to maintain agility, fast delivery and scalability.
Furthermore, a largely manual approach to managing and provisioning infrastructure becomes more time-consuming and expensive as the business grows. Once an organisation starts to ramp up the number of applications being released to production, it is just not viable to spin up and scale infrastructure efficiently without the use of code.
Recommendations for a modern approach
Discovery workshops with an external partner can be a good way to identify the key issues that need to be addressed for a business to modernise its development approach. A deep dive into the company’s architecture, processes and practices can reveal the main barriers to efficiency and innovation and reveal practical solutions.
To build modern applications, enterprises often need to revise their architecture, operational model and software delivery process. Such changes can be seismic at an organisational level, but they can be introduced gradually.
Transitioning to more modern methods of development often starts with a process to begin slicing monolithic applications into microservices. The microservice architecture presents an opportunity to remove barriers to agility and speed by providing a clear path to modules that are smaller, more understandable, more maintainable and independently scalable. This means teams can be smaller and more agile, work independently of each other and deliver better features faster.
By embarking on an initial small-scale implementation of microservices on a single isolated set of features, a blueprint for extraction can be created and used to migrate the remaining features, allowing companies to transition fully to microservices at their own pace.
Performant data architecture
For microservice architecture to work properly, it needs a unified API layer that can fetch and combine data dynamically from various sources. GraphQL fills this gap. An open source query language that sits on top of multiple APIs, it allows applications to specify precisely the data they need, aggregates the data from multiple sources and microservices and delivers only what was requested. This makes APIs highly performant and robust.
NearForm uses GraphQL because it delivers a superior developer experience, offering the kind of immediate validation that encourages product growth. By unifying multiple APIs into one convenient gateway and serving only the data required to an application, it boosts developer productivity and reduces resource consumption. It is also supported by an enthusiastic community of developers who are continually creating excellent tooling and documentation.
Infrastructure as code
Another practice that strengthens the modern development foundation is using code to manage and provision infrastructure, rather than doing everything manually. Infrastructure as code automates operational overhead so that teams can spend more time building products.
It ensures processes are repeatable, facilitates easy record-keeping and enables easy peer review because it’s versionable. We use Terraform extensively to automate infrastructure management, enabling clients to focus on developing innovative products and services.
It facilitates an environment in which experimentation thrives because small failures don’t collapse the system. Experiments can be tested with ease across development and QA environments before applying them to a production environment. Automating infrastructure management in this way encourages a fundamental shift in the way enterprises approach the creation of value.
Combining a microservices architecture with continuous integration (CI) and continuous delivery (CD) allows advanced digital solutions and features to be released at speed without compromising safety or quality.
Continuous integration is a modern development practice that involves developers regularly merging their code changes into a central repository. Automated builds and tests are then run. It means that bugs are identified more quickly, software quality is enhanced and updates can be validated and released faster.
Continuous development involves the later stages of the software pipeline, particularly the movement of new code into production. With continuous development, all code changes are deployed to a testing environment and/or a production environment after the build stage.
Effective continuous delivery means that developers will always have a deployment-ready build artifact that has been subject to a standardised test process. A properly run CI/CD pipeline can reduce testing time and feedback loops and accelerate the development of features, enhancements and fixes.
Creating a system that natively addresses security concerns is easier and more effective than trying to update existing systems or complex legacy infrastructures to address security concerns. By integrating security into their engineering processes, enterprises can streamline their operations and reinforce the safety of their systems.
With a DevSecOps approach, security is incorporated in a layered approach across the whole software development lifecycle (SDLC). Security is pushed to the early stages of the process (called ‘shift left’ in the industry) so that problems can be identified and fixed earlier in the SDLC. This prevents flawed builds from being deployed into production, saving time and resources.
Businesses grappling with outdated legacy systems are starting the race to digital delivery at a distinct disadvantage. Trying to satisfy customer demand for better and faster solutions to their problems is simply not possible with cumbersome monolithic architectures and traditional methods of development.
Building modern applications requires a modern development foundation. Making the changes required to build such a foundation can seem daunting, but it doesn’t have to be a dramatic overnight transformation: Businesses can transition to microservices by starting with a simple service that is important to the business but not dependent upon the remaining monolith.
By making considered, incremental changes that ultimately build to a streamlined development model, organisations can position themselves to achieve digital growth targets that were previously out of reach.