Once upon a time, not so long ago, Application Development (AppDev) for business purposes was relatively simple. A small team of developers could use a single development tool and database to quickly develop a business application.
That time is gone. Modern AppDev has become dramatically more complex.
Why is modern development so complex? Is that complexity inherent, or is the complexity a byproduct of the development tools and architectures that are currently popular?
One significant new source of complexity is the rise of Data-Driven technologies such as Machine Learning, Real-Time Analytics, Internet of Things, Graph Analytics, Documents, Spatial Processing, and Blockchain within applications to deliver more value from data.
These new technologies are all great, but that is a LOT of new technologies for developers to understand and implement! It’s no wonder that modern AppDev is so complicated and requires many specialized teams.
Adding to the complexity is the fact that building an App that takes advantage of these technologies requires specialized teams to deploy single-purpose databases for each technology and implement distributed execution and data movement across them. Is all this additional complexity essential?
Further, developers want to ensure their apps are scalable, robust, agile, and secure by building them using the latest programming paradigms. Techniques such as Microservices, Events, Software as a Service, Distributed Data, CI/CD, API Driven Development, and Defense in Depth.
However, using these programming techniques often leads to data fragmentation and data consistency issues that greatly complicate the data architecture. Does simplifying development using the latest programming techniques really require a dramatic increase in the complexity of the data architecture?
Once the app is complete, modern DevOps requires developers to continuously manage, tune, patch, secure, and scale all the databases that the app utilizes. That is a massive amount of unpleasant and unrewarding extra work, right?
With all the complexity that modern apps require, it is no wonder developers feel overwhelmed and overworked, and it is no wonder managers are blamed for schedule slips, budget overruns, and security vulnerabilities.
Sadly, most of this complexity is self-inflicted. Developing modern apps does not have to be difficult. To address this unnecessary complexity, we need to understand the ROOT CAUSES of it.
So, what are the root causes?
There are several.
The first root cause of AppDev complexity is the myth that implementing each Data-Driven technology requires a specialized product with its own highly specialized database.
For example, to run Machine Learning, we need a dedicated and specialized Machine Learning product. Similarly, using JSON documents requires a specialized JSON document store, running Text searches requires a dedicated Text database, protecting data using Blockchain algorithms requires yet another database, etc.
In the world of electronic devices, we previously had to use a separate specialized device for listening to music, sending messages, finding our location, accessing the internet, recording videos, and making phone calls.
Now we use a single Converged product for all these tasks: A Smartphone. The synergy of having all these capabilities in one device enables new possibilities like unlimited music streaming and finding the best nearby Italian restaurant.
Similarly, in the world of databases, the Oracle Converged Database can support all types of data and processing. Relational Data, Document Data, Spatial Data, Text Data and Graph Data can all be efficiently stored and processed in the same database. OLTP, Real-Time Analytics, Machine Learning, IoT, and Blockchain workloads can all efficiently run in the same database. There is no longer any need to deploy, manage, and synchronize many specialized databases to use these technologies.
Like Smartphones, the Oracle Converged Database not only supports these data types and workloads, it does it BETTER than the specialized databases. Further, the synergy of having all these capabilities together in one database enables new possibilities like real-time Machine Learning based fraud detection directly in the OLTP system. Also, using declarative open SQL rather than the bespoke languages needed by specialized databases makes it dramatically simpler for developers to implement these technologies.
Just like a Smartphone is inherently simpler and better than many single-purpose devices, a Converged Database is intrinsically simpler and better than multiple specialized databases. Why do these single-purpose devices and databases exist then? Because it is simpler to create a single-purpose product. To create a converged product like a Smartphone or a Converged Database takes many years, thousands of engineers, and billions of dollars of investment. Once the converged product is created, the single purpose products are rendered obsolete except for niche use cases.
The second root cause of unnecessary AppDev complexity is that modern development paradigms often conflict with traditional database architectures. For example, developers want each microservice to have an independent database to avoid the coordination required by using a single monolithic database. Unfortunately, while Microservices accelerate development, they also fragment the data architecture. Similarly, developers want to use Event-based systems like Kafka, but Events do not mix well with database transactions.
Fortunately, the conflicts between new developer paradigms and database architecture are not inherent. Oracle has developed advanced database technologies that eliminate this conflict.
For example, Pluggable Databases allow each Microservice to have a logically separate database that can easily be physically consolidated or separated.
Oracle Database Queues allow Events to be seamlessly integrated with database transactions. These advanced database technologies eliminate the conflict between modern development and databases, making development both faster and easier.
The third root cause of unnecessary AppDev complexity is that traditional database systems required large amounts of work to manage, tune, patch, secure, and scale. Now that the AppDev team and the Operations teams are often unified into one DevOps team, these operational tasks become a significant drain on the development team and this dramatically slows down innovation.
Fortunately, recent advances in Machine Learning have enabled Oracle to release a breakthrough self-managing, self-tuning, and self-securing database called Oracle Autonomous Database.
Autonomous Database is a fully Converged Database that supports all data types and workloads, has all the Mission Critical capabilities of the Oracle Database, and is compatible with existing applications that run on top of the Oracle Database. With Oracle Autonomous Database, the complexity of managing mission-critical databases has now been eliminated.
Returning to our original question - is Modern AppDev inherently more complex? The answer is both YES and NO.
YES, there are many more technologies and techniques that developers need to learn and master to develop modern applications. Developers definitely need to know more than ever before.
However, AppDev is also much simpler now since using a single Converged Database makes development and operations dramatically easier. Also, the conflict between modern dev paradigms and databases can be eliminated using advanced database technologies. Finally, the burden of Operating databases has been largely eliminated using an Autonomous Database.
In the video below, I expand on how you can conquer the complexity of modern AppDev.