Stacks
Understanding how enterprise software, or any software, fits together is largely a matter of understanding how software stacks. As the name implies, a software stack is an orderly heap of code. Software at the top of the pile depends on support from software at the bottom of the pile. The reason software is designed this way is partly historical and partly pragmatic.
From the very beginning of computing continuous efforts have been made to make computers adapt to humans although the result has more often been the other way around. The very first computers required technicians to pull a cable out of one connector and plug it into another to program. That was quickly replaced by switches that were controllable from a console and the industry has never stopped trying to make the computer easier to control since although at the cost of making them ever more complex.
Pragmatically it never made sense to reinvent the wheel from the very lowest level instructions to up every time you designed new program. So the programmers of applications depended on the programmers of databases who depended on the programmers of operating systems who depended on the programmers of microcode who depended on the engineers of machine instructions – some of whom are now old enough to have retired or passed away.
This has a very important consequence for the economic of the enterprise software business. Although applications are marketed and sold to a large extent as an independent entity, in fact they useless without the parts of the stack below them . So the sale of an application inevitably results in the sale of a database which results in the sale of an operating system. But the reverse is not a case. The sale of a layer in the stack is not dependent on the sale of a layer above it. For example if you purchase a database you require an operating system to run it but an operating system does not need a database to function. This puts certain companies in the industry, like SAP, which are dependent on competitors like Oracle for a part of their stack below them at a disadvantage. Although Oracle is not the only database that SAP can run on top of, and the company does not officially encourage its users to run Oracle, but Oracle is still the most popular database to run SAP on top of., so the sale of an SAP license usually results in the sale of a database license for Oracle.
Another economic consequence is that when software lower in the stack is changed or replaced software above it must also be changed or replaced which creates a need for new upgrades and creates a strong maintenance stream of cash flow.
Although there are many examples of stacks – OSI, TCP/IP, the most useful example for our purposes might be the LAMP stack. LAMP is an acronym coined by Michael Kunze to describe a stack of free software used to run web applications, specifically:
- L - Linux,
- A - Apache
- M - MySQL
- P - PHP or Perl, Python, or other the programming languages like Ruby.
Its important to note the originators of each of these programs did not design them to work with each other. The combination has become popular because of its cost and widespread distribution.



Rainmaker Systems