Scaling Software Applications with Automation and Abstraction

‘Dispense with a Horse’ - The first car advertisement in History, 1898 – courtesy of  @HistoryInPics, highlights the importance of automation in solving problems of scale and delivering a better, faster and cost effective solution to the consumer.


First Car Advertisement


“Polanyi’s Paradox and the Shape of Employment Growth” a paper by David Autor, MIT Department of Economics, delves into how we overstate the extent of machine substitution for human labor and ignore the strong complementarities that are often hard to identify. As technologists, we should strive to automate rote tasks so we can free ourselves for tasks that require adaptability, problem solving, common sense and creativity.

Automation and abstraction play a key role in scaling software applications in the cloud by automating infrastructure requirements, implementing low code development platform, replacing manual testing with automated tests and changing the software release process with Continuous Delivery.

Infrastructure Automation

Software runs on an infrastructure of compute, storage and network resources. Automation and abstraction of these components is necessary to ensure that applications run efficiently and securely while maintaining high availability. Managing application infrastructure with automation is equally important, allowing for automated provisioning, performance, lifecycle and capacity management.

Automation of the software development environment is also critical, allowing the developer to quickly get up to speed with the development environment and ship code.

Low-Code Development platforms

“New development Platforms Emerge for Customer-Facing Applications” – a recent report published by Forrester highlights the need for ‘low-code’ development platforms to expedite software development and delivery. Forrester defines low-code development platform as: Platforms that enable rapid application delivery with a minimum of hand-coding and quick setup and deployment, for systems of engagement. Benefitfocus Marketplace, a cloud-based HR management portal that streamlines online enrollment, employee communication and benefits administration is a good example of a low-code development platform.

Metadata Driven Architecture, a post by Benefitfocus CTO Don Taylor, is an excellent read on the underlying architecture of low-code development platform that use Metadata for dynamic rendering and execution of user interfaces, business rules and workflows.


Continuous Delivery

Continuous Delivery is used in software development to automate the process of software delivery by leveraging automated testing, continuous integration and continuous deployment. Continuous Integration requires developers to push code into a shared repository several times a day. Each code push to the repository runs an automated self-testing build with automated tests, allowing teams to detect problems early. Continuous Deployment allows the configuration of powerful deployment pipelines that run after successful tests to deploy the application to multiple environments. These techniques automate the software delivery workflow, while allowing the developer to focus on their code.