In today's digital economy, most companies express their business strategy through software. They use software to provide customers with great experiences, and drive operational efficiencies and insights. Recent advances in technologies such as in AI only accelerate how businesses will drive innovation and capitalize on new market opportunities through the software they are building.
With the rise of cloud computing, developers are more empowered than ever and hold the keys to any business’ success. Cloud computing created layers of abstractions for compute, storage and networking making it easier for developers to innovate and ship applications faster. However, programming with data is still challenging and time consuming; in a recent survey1, around 75% of developers and decision makers say working with data is the hardest part of developing and running applications.
There are many dependencies between the application and databases that have to be managed across the entire software lifecycle - how developers develop and iterate their application, how the application runs and scales in production and how the many unforeseen requirements from users present themselves as business demands evolve
The challenges of this constant care and feeding of your databases are not new; pretty much every engineering team faces them. Most deal with it by adding a lot of disparate tools to handle their applications and databases. As each tool is usually bespoke to specific tasks within the application lifecycle, it’s not unusual to find five or more tools for each database. By our own estimates over 60% of today’s apps require at least two databases. So now your developers are working with more than ten tools just to control two databases for one application. This proliferation of tools drives enormous complexity across your teams, slowing the pace of innovation and missing market opportunities while driving up project risk, cost, and attrition.
A few organizations have taken a different approach to these problems by building an in-house (custom) abstraction tooling layer between their applications and databases. These usually address some of the challenges above but are highly expensive to build and maintain, and take away skilled engineering resources that would be better spent innovating for the business.
Defining data, integrating it, programming it, monitoring/scaling/securing and extending its usage are all interconnected workflows and convergence of these data tools is long due. Every developer must address these problems and consider abstracting dependencies between applications and databases over the entire software development lifecycle to accelerate developer productivity, remove complexities, and reduce cost.
1 https://www.mongodb.com/collateral/report-on-data-and-innovation-en