Technology Stacks are grouped combinations of technical choices. The influence on your business is significant. What are the tech guys on about?
Often abbreviated to single letters these phrases will influence your technical choices for years to come so it’s worth knowing what they are and how they will affect your business.
This is a name dropping article under general headings to introduce the options so you can ask your team “why did we choose that?”
This article hopes to make it easy for any manager to understand the terms so they can discuss the impact of those choices.
If you are techy jump down to the wrap up and see if the sense checks work for you.
- Technology Stacks
- Operating Systems
- Web Services
- Programming Language
- Databases
- Wrap Up
[read more=”Read more” less=”Read less”]
Technology Stacks
Why are they called technology stacks
Most modern business will have one key piece of technology their business relies on for sharing data. The Internet is very helpful in making things shareable and accessible. A combination of technologies make this possible. Grouping your technology choices into a single acronym helps to summate a lot of detail in one word.
It’s called a stack because one layer builds upon another.
Generally there are four layers to the stack
- The first layer is the operating system as that influences every other choice. The operating system makes the computer usable.
- Next comes the program that facilitates the sharing. Your web server.
- Databases represent you choice for storing data and documents.
- Finally programming languages give you the power to manipulate your content and exactly what you share and how are are linked to which web server you choose.
There are many combinations when building technology stacks.
Your stack
Your technology stacks will be made up of a number of choices whether you explicitly choose those options or not.
Let’s take a look at a website that runs WordPress, like this site.
- Operating System: Linux
- Web Services: Apache
- Database: MySQL
- Programming Languages: PHP
So taking the first letter of each you end up with LAMP. This website uses a LAMP stack.
So to make WordPress work you have to put parts in place that WordPress works with.
Whoever is responsible for the site needs to be proficient in the right technical skills or else if trouble happens you have no support.
Your support team will always lean towards the environment they feel most comfortable using but is that the best choice for your business?
The big choices
So the bigger the solution the bigger the choices.
Driving a petrol car and a diesel car are pretty much the same for the drivers. However manual and automatics have the same engine but very different driving experiences.
Both solutions get you there but some operate better than others for different scenarios.
So let’s break down what’s in the choices for technology stacks.
Operating Systems
Right tool for the job
If you have a truck and a car, they are both capable of transporting you but will have very different focus.
Client computers are used in the home and office and often referred to as your desktop. So client versions are the cars, the server versions are the trucks for doing heavy lifting.
In a technology stack we are very interested to know are we using a car or a truck. If we’re using a truck, what kind of truck with what capabilities. Transporting other cars, fluids and goods all require different kinds of truck.
Server versions also have different maintenance, skills and approaches required to not only set them up but also maintain and manage them.
The first letter of our stack is going to be W, L or X.
Microsoft Windows
There are two primary streams in Microsoft operating systems.
You have probably used one or more of the following client versions of an operating system.
Windows 95 (1995), Windows 98 (1998), Windows 2000 (2000), Windows XP (2001), Windows Vista (2006), Windows 7 (2009), Windows 8 (2012) and Windows 10 (2015) covers the last 20+ years.
Server versions include Windows NT (New Technology) Server 4.0 (1995), Windows 2000 Server and a few variants, Windows Server 2003 and some variants, Windows Server 2008 and many variants, Windows Server 2012 and Windows Server 2016.
The look, feel, style and approach has been somewhat consistent through all the different versions.
It is a versatile and widely used operating system. As of Aug 2018, apparently Windows has 82.45% of the desktop market!
Most universities teaching computing related subjects will have Windows computers for the students to learn on. As a result students coming out of college will be quite well versed in using Windows technologies.
Linux
You have to buy Microsoft Windows. Microsoft keep very secret how their code works for security and other intellectual property reasons.
There is an “open-source” free version of an operating system called Linux. Linux is modelled on the paid for operating system Unix.
Tux the penguin is the commonly used image for Linux.
Linux gets its name from it’s original inventor Linus Torvalds who in 1991 named it Freax. However the server administrator who distributed it called in Linux after Linus and Unix.
It’s cheaper but it does require higher levels of technical understanding than Windows. Let’s face it we’re playing with servers so the support should be technically proficient before they start. Truck drivers need different licences than car drivers.
Variants
Operating systems like Android and OSX are based on Linux. For this reason the stacks just call it L.
Linux because it is free offers developers an attractive solution for their servers. As a result there are quite a few variants based on it.
The variants use the same core but charge for customisations they add to the core and the support of those customisations.
These include Ubuntu, Fedora, RedHat, Suse, Canonical, Debian and CentOS amongst many others.
If the solution can work on many operating systems then it is referred to as X or Cross Platform.
Web Services
Generating web pages
A web browser lets you view web pages. A web server is the program that sends those web pages to your browser.
This very specialised software is designed to handle thousands of requests a second and can supply not only web pages but process security and even allow computer programming to work.
Choosing the web server in your technology stacks will dictate a lot of options possible or not possible going forward.
This leads to the second letter of our stack. I, A, E or G.
Internet Information Services (IIS)
Internet Information Server (IIS) is Microsoft’s web server technology that works exclusively on Microsoft Windows.
As of 2018 on version 10, IIS needs the Server version of Microsoft Windows to make the most of it.
All versions of IIS prior to 7.0 running on client operating systems supported only 10 simultaneous connections and a single website. So you really needed to pay for the server versions for it to be usable en mass.
IIS is an option you have to explicitly turn on when you set up your Windows server.
Apache and others
As with Linux, Apache is a free open source software version of a web server. Of the top million busiest websites in world in 2014, Apache was in 53.44% compared to 12.40% for IIS.
Apache runs on Windows and Linux.
There are two others. NGINX was released first in 2004 and in 2014 held 17.82%. Pronounced “Engine-X” it gets the letter E not N.
Google have their own custom web server which is used on all the Google sites. 2.96% of the market in 2014.
Databases
What is a database
We are at our third letter. The choices of letter here are wide and varied but there is one clear market leader in technology stacks.
Basically a database is for information storage. I cover it in a lot more detail here.
To help programmers chat to databases and swap between different companies versions of databases the Structured Query Language (SQL) sets forth a language common for all databases. You can pronounce it as S.Q.L. or sequel.
This standard language is extended by different database vendors to include special commands just for their type of database.
Open DataBase Connectivity (ODBC) is a standard way to connect to a database no matter the vendor, the web server or the programming language.
This allows programmers in conjunction with SQL to swap between databases without having to worry who the vendor is.
So if you want to change database in the future you can do it with relative ease.
Paid for vs. free
Big paid for solutions include Oracle and Microsoft SQL server. O and S are the usual letters for the stack.
There are also many free database solutions such as MySQL, MariaDB and others. MySQL as it is so popular gets the letter M in our stack usually.
The paid for versions generally come with support where free solutions need separate support contracts.
NoSQL
As the needs of database have changed over the years since its invention the ability to handle different data types has strained the original database.
Specifically if you’re storing documents, graphs or very large datasets NoSQL databases provide
- superior scalability (works on more than just one machine)
- performance
MongoDb would be one of the most widely known NoSQL database engines.
Programming Language
Languages
The fourth letter for technology stacks and the most wide reaching decision are the programming languages. Two letters are common here. A and P.
When your business develops in a language then pretty much it’s the language for the life of your business. If you start in English, you’ll probably stick to English and everyone works in English. Starting in Ancient Greek is also legitimate but make sure everyone is ready for it.
Web servers don’t serve up the same page every time to every user. Banking really wouldn’t work online if that happened. Programming allows the contents of a web page to change dynamically.
Like all spoken languages they get the message across however each language has it’s own nuances.
Compiled languages
Computers need binary code, 0s and 1s, as its language while in contrast people don’t really speak in 0s and 1s.
A compiler converts human understandable computer code into binary. A compiler is a program like any other, Word, Outlook or Excel but only does compilation, translation of a programming language into binary.
A web server has a compiler built in. As a result the web server can handle special programming languages called scripting languages.
The web server compiles these languages in real time.
This makes changing and updating web based solutions a lot faster than traditional software compilation and release.
Scripting languages
ASP and ASP.NET
IIS implements the most common Microsoft programming languages easily. IIS can support Visual Basic (VB), C++, C # (pronounced C Sharp).
Active Server Pages (ASP), which later became ASP.net deliver network based programming solutions.
ASP.net shortens to .net (pronounced dot net). All these languages have networking at their core. IIS compiles the scripting languages in real time.
PHP
PHP works on Linux and Windows and integrates with both Web Servers with a bit of tweaking consequently is the most common web programming language.
The name came from Personal Home Page tools but now stands for “PHP: Hypertext Preprocessor” which is programming joke for a recursive acronym. That is actually really clever if you’re a nerd and makes me smile! I know… get a life.
Others
Java embeds into web pages using .jsp (Java Server Pages) or servlets however for security and complexity reasons adoption isn’t as broad as PHP.
Again with the argument of English or Ancient Greek, Java is a valid language, is it right for your business?
For back end processes Python, Perl and other scripting languages vary greatly and vary in popularity generally by which universities teach which scripting languages as part of their courses.
Wrap Up
The common stacks
So here are some common stacks
Operating System | Web Server | Database | Programming Language | |
LAMP | Linux | Apache | MySQL | PHP |
LEMP | Linux | NGINX | MySQL | PHP |
WAMP | Windows | Apache | MySQL | PHP |
WIMA | Windows | IIS | MySQL | ASP / .net |
WIMP | Windows | IIS | MySQL | PHP |
WISA | Windows | IIS | Microsoft SQL Server | ASP / .net |
XAMPP | Cross Platform | Apache | MySQL | PHP and Perl |
If I’ve missed a stack you think should be here please let me know.
Setting up a stack
This in discussion is very simple as getting technology stacks built is very quick and can be done in an afternoon.
- Install the operating system. Update and patch it.
- Find which web server you want to use, Apache or IIS, install and patch that.
- At this stage you should be able to serve web pages from your server
- For the programming languages you will turn some options on or install some software from the internet.
- Lastly you’ll install the database software either on the same machine or another server and then connect them up.
The true challenge of stack comes in tweaking and configuring the stack for security and to operate for your solution under high load.
This is where experience comes in. Knowing the options for everything and how to tweak them to keep your server going is something you learn by doing or contacting expert help.
The questions to ask your team
Now you have an idea of the terms regarding technology stacks.
Here are general questions to ask your team. They’re not designed to catch the team out but rather some risk sense checks.
- Which stack did we choose and why?
- How many people do we have that can support that Operating System?
- Is that programming language popular in college and amongst available programmers?
- Why aren’t we using Apache given its market dominance?
- Who can the support the database if we have trouble?
- In terms of performance who reviews each level of the stack and at what % usage are we?
- When is this level of the stack “end of life” / no longer supported by the vendor?
Asking these questions can save you and your team hundreds of man hours in lost work and greatly reduce your business risk. Does it hurt to ask a question?
[/read]