What Is Modern Application Development?
You may have seen a buzzword (er, buzzphrase?) sneaking into software discussions over the past couple of years: modern application development. Technology leaders like Amazon and Microsoft have both been touting it for some time. If you Google it, you’ll find corporate ads and voluminous blog posts promoting services around it too. But what is modern application development, and why do we care? Simply stated, it’s a revolution that’s been brewing for years, and if you haven’t embraced it yet, you should keep reading…
The key ingredients to modern application development include microservices, cloud infrastructure, and delivery automation.
Monoliths and Microservices
The emergence of microservices to replace monolithic architecture reflects a monumental shift in software development. Initially, because they’re a single logical executable, organizations can build monolithic applications quickly. As the code base grows, though, they become difficult to update and scale because of tightly coupled components. To alter the system, a developer must build and deploy an updated version of the entire server-side application. In addition, developers implement monolithic applications using a single technology stack, which limits options that might be better suited to individual tasks.
In sharp contrast, microservices are typically APIs that encapsulate a core business function. They become adaptable for use in various contexts, make applications easier to scale, and are faster to develop, enabling innovation and accelerating time-to-market. Services are designed to be small, typically built by teams that fully understand how they work. As a result of all these factors, deploying microservice architectures in the cloud provides a highly efficient approach for any size development team.
In serverless computing like Function as a Service (FaaS) services, developers can execute code without the complexity of building and maintaining the infrastructure. That is, you don’t have to purchase, rent or provision infrastructure to execute back-end code. As described previously, modern application development means building software in small chunks that can be incrementally programmed, tested, and deployed.
APIs and microservices are instrumental in reusing existing code, reducing work, and increasing throughput. Combining microservices and serverless architecture has changed the way we think about web applications and partitioning logic. You can run microservices on your provisioned cloud infrastructure, and/or you can run them serverless. Running serverless is attractive because it can autoscale and you only pay for what you use. In addition, security of your servers is handled by the vendor rather than your team.
Software Delivery with Automation
When the agile software development movement invaded the infrastructure layer, it represented a tectonic shift. The results turning up in the nascent DevOps community showed jaw-dropping improvement. That led to a much wider adoption among other companies, from thousands of up & coming startups to behemoths like Amazon and Nordstrom. Peter Drucker once said “Culture eats strategy for breakfast,” but the DevOps movement rewired that to say “Process eats strategy for breakfast.” That is, a solid workflow for writing distinct software components, merging code, testing functionality, and then deploying the results (including necessary infrastructure) changed the game.
Automating that workflow is digital magic. By “shifting left”, identifying and fixing problems early in the development cycle, organizations see huge gains in productivity. In a 2017 study by Dora, DevOps practitioners reported 22% less time spent on unplanned work & rework and 24 times faster recovery from failures. With DevOps automation, development loops tighten; software quality improves; products are delivered faster, better, and cheaper; and customers get a better experience.
Modern Application Development FTW
We’ve seen the advantages of these methodologies firsthand. As an AWS partner, cloud computing is in our DNA, and with that comes the experience of developing systems for a broad range of industries using these techniques. From time to time, we’ve also felt the pain of not having them in place, either due to limited budgets, legacy requirements, or management preference. The companies that embrace modern application development methods, in obvious fashion, perform at a much higher level. Their systems are more robust. Their teams are more agile & capable. And their businesses grow. And those that don’t spend way too much time fighting fires, waste time troubleshooting why problems occur, and take significantly longer to deliver updates. So you know, the customer experience of “the old way” are not having the same experience. Yes, it works, but it could work so much better…