Web development is a fast-paced field, with frameworks and libraries seemingly popping up every other day. It can be difficult to keep track of the trends and understand how they all fit together. Unlike frameworks and libraries, web stacks are less fleeting. There are many trendy stacks created by startups, but few have shown themselves to be consistently valuable across the industry.
Web stacks are composed of multiple languages used concurrently: a bundle of software that runs everything from the frontend to the backend, from databases to server administration to rendering the website. There are some common bundles, the most famous being the LAMP stack.
A lot of startups invent their own stacks as needed that are based mostly on engineer-specific knowledge rather than on any specific compatibility. A startup’s needs change as the company expands, and therefore its stack may (and probably should) change based on those needs. For example, orthodontic startup OrthoFi left its .Net-based stack behind as its growth required a more distributed system.
Here’s a look at the top six web stacks developers should familiarize themselves with this year.
1. LAMP (Linux, Apache, MySQL, PHP) – The Old-school Stack
LAMP deserves to be at the top of this list simply because it’s stayed strong as one of the top contenders since it gained dominance around the year 2000. It’s incredibly popular because it’s completely open source (thus free) and easy to customize: you can take it and change it without owing anybody anything.
Each component of the LAMP stack is the king of its field. Linux is the best operating system for web development because it was built by developers for developers. Most websites are run on Apache, a program that hosts servers and is also free and open source (though actual hosting can cost money). MySQL is popular because of its legacy. The majority of the web continues to use LAMP today. It’s a proven method for hosting websites and there’s strong community support.
Each aspect of the LAMP stack is popular, but each has been challenged in the last ten years by other languages such as Ruby. LAMP is difficult to learn because it requires mastery of a few unrelated languages, along with knowing everything about Linux and Apache server. Developers tend to have a love/hate relationship with PHP due to its many holes. Compatibility issues and inconsistencies are the nature of a language so old.
2. MEAN (MongoDB, ExpressJS, AngularJS, NodeJS) – The Jock Stack
As the Breakfast Club preaches, people are more complex than their stereotypes. However, when it comes to MEAN, this jock of a web stack is just as simple as your stereotypical football player. Simple as in there’s only one language to learn (technically), and everything else consists of libraries and frameworks.
MEAN isn’t as stable as LAMP because it’s so new. It doesn’t have a large community and therefore provides less support than other stacks. There’s the possibility of having more problems and not having a forum to turn to for troubleshooting.
3. Meteor – The New Kid on the Stack
You trade speed and ease of use for control by picking Meteor over the typical MEAN stack. Meteor is great for quick, small applications, but might not function as well for something more complicated. Being new, it also has little support, so you can run into issues t MEAN.
4. Django – The Unchained Stack
Django is a web application framework used with Python-based stacks. Django unchains developers from the mundane aspects of their projects, allowing them to focus on the creative features of their web applications. Python is one of the most popular programming languages in the world, so there’s a wealth of community support and plug-ins to extend Django’s capabilities.
Django’s core philosophy is “Don’t Repeat Yourself,” and the framework is designed to use as little code as possible. It’s easy to manipulate and is great for scaling as you can add and remove aspects as required.
Django is monolithic (a complete package), so it can slow you down and can be difficult to create highly lean applications with. It’s near impossible to make framework templates out of it, and it requires a relatively strong knowledge of Python, which is unusual for frameworks.
5. Ruby on Rails – The Magician
Ruby on Rails is a developer-friendly Ruby framework with an entire backend included. It comes with its own server and SQL database, called SQLite, which can be exchanged with any other database relatively easily. Ruby is a high-level language and is the favorite of many startups.
Ruby on Rails removes a lot of the details of development and replaces them with “Ruby magic”. This is great for building applications quickly and is best suited for developers already familiar with the backend.
Ruby on Rails is liked and disliked for the same reason: lack of control. However, this comes in exchange for ease of use and developer-friendliness. A novice developer could effectively create full applications with Ruby on Rails and be misled into missing out on crucial programming fundamentals. It’s easy to be a Ruby typist issuing commands without really knowing what’s going on.
Spring is a full-stack framework written in Java. It’s considered a lightweight framework because it’s non-invasive. Also, the basic version of Spring is tiny, weighing in at just two megabytes. Spring doesn’t require programmers to implement any interface, which makes the code a lot more maintainable.
Spring is a framework that helps you connect components together using a system called dependency injection. This allows you to automatically assign dependencies to objects throughout your code. Spring is organized in a modular fashion so you can just focus on the parts you need.
Dependency injection helps with a contradiction in Java between proper dependencies and useful class separations. Dependency injection in Spring allows developers to cleanly separate their classes without losing access to their dependencies.
Spring has more than 2,500 classes and many other tools that can create a steep learning curve for aspiring developers. A web application built with Spring can struggle to stay up to date and can be difficult to adapt, as Spring changes rapidly.
Spring can chokehold an application due to dependency injection, which can also make it hard to change or remove if required. Once you dive deeper into Spring, many aspects are not well documented, which can be a recipe for headaches.
There are many ways to approach a web stack, so it’s important to consider the needs of your application rather than try just any cookie-cutter solution. Picking a few fun languages, you can naturally build a stack on your own. For beginners and intermediate level programmers, however, it’s important to stick with one full stack in order to gain both frontend and backend experience.