Message from CEO
3-Tier is Dead: Untangling spaghetti complexity calls for new paradigms
Steven ten Napel
As the pace of digital transformation is accelerating, ISVs and software businesses across diverse domains are struggling to keep up due to their legacy burden. Consider the following scenario, which is the norm in the ISV world:
- 2/3 of time & budget is spent on handling customer escalations, leaving little room for innovation
- Even though there is a consistent demand to deliver software over the cloud, as a service (SaaS), many ISVs are not only not ready, but are also reluctant to share with their customers that they will have to re-architect their legacy software, which will be a herculean effort
- ISVs are scared to touch the database schema of their legacy software, as it has thousands of tables with hundreds of foreign-key dependencies, sometimes even developed by people that are no longer with the company
Twisted, convoluted, and tangled world of spaghetti code
I can fully relate to this situation. Having spent a significant part of my career with Baan, which was the 2nd largest ERP software (only trailed SAP in the 90’s), with thousands of customers (including Boeing), I was used to the following:
- 3,000 tables and hundreds of Foreign Key (FK) relations
- 10,000 screens
- 1 major customer Boeing with 35,000 users across 80 sites, all concurrently using a single, massive database
Can you imagine how nightmarish it would be to maintain a massive software with this kind of complexity?
This is precisely what happened to enterprise software. It has become twisted, convoluted, and tangled and came to be known as spaghetti code, a synonym for unmanageable legacy applications struggling to handle massive modules with loads of code and data complexity.
In my view, even though there are multiple reasons for the complexity of enterprise software, the biggest factor is:
“ Traditional 3-layer thinking and databases with hundreds of FK relations are the root cause of all software complexity ”
CRUD is Crude
As most developers and users of enterprise software have discovered over the past 15-20 years, the traditional 3-tier architecture that has evolved as the de facto standard for enterprise software, has serious limitations in a fast-changing technology and business landscape:
- Especially in large enterprise-scale applications, the explosion in number of modules with interdependent data and business logic, ended up creating huge complexity.
- This interdependence means, for even small changes the entire application has to be modified and tested, which makes it impossible to be agile in a fast-changing world.
- The interdependence between various modules, makes the application very inflexible.
- As all functional components of a module are tightly coupled, independent scaling of components of an application is impossible.
- Often, due to bad design and development practices, clear separation of concerns is not implemented, making it difficult to modify the UI or change the business logic.
- The conventional frameworks used to develop the UI-layer are not responsive and cannot meet the demands of the new class of devices.
- CRUD is crude: Relational databases that are widely used by most enterprise applications, and the basic CRUD (Create-Read-Update-Delete) operations for data access and storage, were very well-suited to meet the needs of structured data. But, they are not at all suitable to model and store connected data, which leads to extreme complexity. On top of that due to the proliferation of data and foreign key dependencies, even smallest changes to schema have become heavyweight. The conventional relational databases are built for stability, and not for complexity or business agility.
In a nutshell, legacy software applications built with traditional 3-tier architectures are complex and interdependent, and can’t be scaled, upgraded and maintained easily, or to put it simply:
3-tier is dead
It’s clearly evident that traditional 3-tier architecture and relational databases can no longer meet today’s technology and business needs.Untangling the spaghetti complexity and modernizing legacy applications has three distinct facets:
- Architectural modernization
- Organizational transformation
- Delivery decoupling (or deployment modernization)
We strongly believe that architectural modernization should drive transformation of software organizations and enable deployment modernization for delivery decoupling.
In this newsletter, we will focus on modern architectural paradigms that will help overcome the spaghetti complexity of legacy applications.
Microservices is an architectural paradigm, explicitly designed to overcome the complexity of interconnected, functional modules in large, complex applications.
“The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.”– Martin Fowler
Compared to traditional 3-tier architecture, Microservices offers the following advantages:
- Loosely coupled services that are better aligned with business and domain functionality, and which can be independently deployed
- Each microservice will have its own database, avoiding the need for data sharing and tight coupling; when needed, data sharing between microservices is accomplished through asynchronous messaging and event sourcing avoiding the need for foreign keys and cumbersome SQL JOINs
- Decomposition into granular services makes it easier to upgrade, maintain, and modify services whenever there is a business need, and not the entire module or application
While traditional relational databases such as MySQL met the needs of structured data, they are not well-suited to handle unstructured data, multiple datatypes, and relations between data. Over the past few years, popular NoSQL databases such as MongoDB, Apache Cassandra, and Redis have emerged as powerful alternatives, and offer the following benefits over relational databases:
Event Sourcing (ES) and CQRS to overcome the limitations of CRUD
In the traditional Create, Read, Update, and Delete (CRUD) model of data persistence, typical operations such as reading data from the store, making modifications, and updating the current state of the data with new values, are done through transactions that lock the data. In a modern context with huge data volumes, this approach has the following limitations:
- In collaborative environments with lots of concurrent users, data conflicts are likely as the update operations are performed on a single data item.
- In the absence of a data log, information on changes made i.e. history is lost.
- Two-phase commit (2PC), used to preserve data integrity reduces the transaction throughput, which is critical in large distributed systems
In the past few years, Command Query Response Segregation (CQRS) pattern, in combination with Event Sourcing (ES), has evolved as a powerful architectural paradigm to overcome the limitations of CRUD, and offers the following advantages:
Goal-oriented UI/UX frameworks
Perhaps the biggest paradigm shift is in our approach to UI/UX design. Most legacy applications were designed for a specified, pre-defined input/output pattern, and very often the presentation layer is tightly integrated with business logic, making it very difficult to change. Traditional UI/UX is also mostly CRUD-driven with mass input and output. Now the current generation of applications demand goal-oriented UI/UX based on roles, tasks, state, and must be responsive to support a wide range of devices ranging from desktops to handhelds to mobile and wearables. At the same time, in addition to the standard keyboard-based input, they must also support user interactions from multiple sources including speech, vision, gestures, and touch. Some of the popular UI/UX responsive frameworks used for creating modern, digital applications include Bootstrap, Foundation, Skeleton, CreateJS etc.
News you can use
Facebook is facing a transparency paradox, and is under tremendous pressure to be transparent and reveal how targeted advertising works, and how its News Feed and trending algorithms work. On one hand, there’s this strong pressure to be more transparent and share data with trusted third parties, and on the other hand, there’s equally strong pressure to increase security of the data that is revealed or shared and to protect users’ privacy.
GDPR is applicable to any company in the world that does business in Europe, and if they gather personal data of EU residents. GDPR applies to personal data relating to EU residents regardless of where that data is processed, and also defines the scope of EU data protection legislation. GDPR also gives regulators serious teeth — compliance costs and fines can reach up to €20 million or four percent of global annual revenue for the preceding financial year, whichever is greater.
An influential body of UK lawmakers said regulators should stop major tech companies from dominating the field of artificial intelligence, and also warned on the potential of widespread unemployment due the technology.
With the right mix of accelerators – including regulatory frameworks, educational ecosystems and government incentives – India can lead the Fourth Industrial Revolution while simultaneously enhancing the quality, equity and sustainability of its own growth and development outcomes.
Google Announces Dutch Data Center Expansion
Google announced a €500 million expansion to its data center in Eemshaven, the Netherlands, and stated that this investment will help Google meet growing European consumer demand.
With The Strategy for Denmark’s Digital Growth, government aims to create the best foundation for Danish companies to exploit new technologies to generate growth and more wealth for all Danes.
To claim a share of the $15m X-Prize, winners will have to turn carbon dioxide extracted from power-plant flues into something useful—and do so profitably.
Dueling neural networks, Artificial embryos, AI in the cloud…. read MIT’s annual list of 10 technology advances that will shape the way we work and live now and for years to come.
A new update to the Worldwide Semiannual Big Data and Analytics Spending Guide from IDC forecasts, revenues for big data and analytics (BDA) in the Asia/Pacific (excluding Japan) will reach $14.7 billion in 2018, an increase of 14.4% over 2017.
Gartner forecasts, that the worldwide public cloud services market will grow by 21.4 percent in 2018 to total $186.4 billion, up from $153.5 billion in 2017. Gartner says that the fastest-growing segment of the market will be cloud system infrastructure services (Infrastructure as a service or IaaS).
Forrester believes smart home companies will pursue new forms of bundled services that combine monthly subscriptions with smart home products included or discounted.
2018 witnessed a major spill, this time it is not oil, but data. Just as oil was the vital and essential commodity that powered the manufacturing era, data is the indispensable fuel powering the connected, digital economy.
Collaborative innovation is both a business and technology need in the platform economy, but ISVs and digital businesses must retain strategic control over core IP, as it is a key, competitive differentiator.
Modernization of legacy software applications cannot be achieved with a uni-dimensional approach. Modernization has multiple dimensions, and one must choose the right strategy based on the current state of the software, competitive drivers, and broad business context.
Trust and Talent aligned well with Individuals and Teams can work wonders in building high-performance teams, and will lead to a true Team Nirvana.
News & Events
Thijs Petter joins as CTO
coMakeIT strengthened its executive management team through the addition of Thijs Petter as its new CTO. Thijs is an accomplished technology expert with an impressive track record, and is brought on board to help customers leverage exponential technologies, and drive innovation.
Launches Technology Innovation Center (TIC): coMakeIT announced the launch of its Technology Innovation Center (TIC), which will bridge the gap between the potential of emerging technologies and their practical usage in a complex business and regulatory environment. The TIC will continuously evaluate disruptive technologies and bring them into practice through execution of PoCs, partnerships with technology vendors, trainings, and participation in beta programs.
Inspiration session with MPO: MPO, a coMakeIT customer and fast-growing provider of innovative software solutions to the logistics industry, hosted an inspiration session on March 7th, at their Rotterdam offices on the theme: co-Innovation with agile teams. Many technology companies that were interested in exploring offshoring and collaborative innovation participated in the session. Paul van Dongen (co-founder and CTO), and Ronald van den Heuvel (VP of software) of MPO, shared their experiences and best practices in working with distributed development teams.
Women in Tech: coMakeIT marked the International Women’s Day by recognizing significant contributions by women in diverse roles. To celebrate diversity of their contributions, women in various roles were invited to share their experiences through a series of blogs.