Day 17 - Backend Frameworks
Yesterday, we walked over basic Mental Models for Saas products, and now we have a framework to refer to when talking about different technologies.
As a refresher, let's look at the first mental mode, a basic setup for a Saas product:
We have previously discussed:
Even though there is a lot more detail we can cover in the topics above, we first focus on having a good overall understanding of the systems, before a deep dive. For Product Managers as Generalists, "breadth is first, depth second." :)
What is the Backend?
One reason to start with Frontend frameworks is that they are easier to understand as they are tangible. You always see and touch them (via your mouse or your fingers when using touch screens).
Backend on the other hand is more "abstract". It's all the code running in a computer on the "cloud", namely called a "Server".
The Backend is responsible for handling the logic and data storage for the application. The backend is typically built using programming languages, and it is responsible for performing tasks such as storing and retrieving data from a database, processing business logic, and communicating with external APIs.
Together, the frontend and backend of an application work together to provide a seamless user experience and enable the application to perform its intended functions.
Note that in the definition above, the Backend is also responsible for storing the data, but for thinking about applications in a Modular way, I decided to separate them visually.
Well-known Backend Frameworks
There are many popular backend frameworks that are widely used for building web applications, each with its own set of features, history, pros, and cons. Here are a few examples:
PHP
PHP (Hypertext Preprocessor) is a popular programming language that is commonly used for building web applications. It was originally developed in the mid-1990s as a set of scripts that were used to create and manage web pages. Over time, it has evolved into a full-featured programming language that is used for a wide range of purposes, including building web applications, creating command-line scripts, and interacting with databases.
PHP has traditionally been a popular choice for building web applications due to its simplicity, ease of use, and wide range of built-in features. It is often used in combination with a LAMP stack (Linux, Apache, MySQL, and PHP, more explanation below), which is a common setup for building dynamic web applications. Many well-known websites, including Facebook, Wikipedia, and WordPress, have been built using PHP.
However, in recent years, other programming languages and frameworks have gained popularity as alternatives to PHP for building web applications. For example, Python, Ruby, and JavaScript have all become popular choices for building web applications, and frameworks such as Django, Ruby on Rails, and Express.js have become widely used for building web applications with these languages.
Django
Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. It was developed in the mid-2000s and has since become a popular choice for web development due to its emphasis on convention over configuration and its extensive set of built-in features. Django is used by sites such as Instagram, Pinterest, and The Washington Post. Some pros of using Django include its robust set of features, strong security measures, and ability to scale to handle high traffic. Some cons include a longer learning curve for those unfamiliar with Python and the potential for slower performance compared to some other frameworks.
💡
Another popular backend framework for Python is Flask, which we don't cover in this post.Â
Ruby on Rails
Ruby on Rails is a full-stack web framework written in Ruby that is designed to make building web applications easier and more efficient. It was developed in the early 2000s and has become popular for its emphasis on convention over configuration and its use of the MVC (model-view-controller) architecture. Ruby on Rails is used by sites such as Airbnb, GitHub, and Hulu. Some pros of using Ruby on Rails include its simplicity and ease of use, a large and active community, and the ability to build applications quickly. Some cons include potential performance issues at scale and a smaller pool of developers compared to some other frameworks.
ASP.NET
ASP.NET (Active Server Pages .NET) is a web framework developed by Microsoft that is designed to build dynamic web applications using the .NET framework. It is written in C# and uses the MVC (model-view-controller) architecture.
ASP.NET was first released in 2002 and has since become a popular choice for building web applications due to its strong performance, support for a wide range of languages and platforms, and integration with other Microsoft technologies. It is used by sites such as GoDaddy and Visual Studio.
Some pros of using ASP.NET include its strong performance, support for a wide range of languages and platforms, and integration with other Microsoft technologies. Some cons include a steeper learning curve for those unfamiliar with C# and a smaller community compared to some other frameworks.
Express.js
Express.js is a minimalist web framework for Node.js that is designed to be flexible and easy to use. It is built on top of the Node.js runtime and is a popular choice for building web applications with JavaScript. Express.js is used by sites such as MySpace and AccuWeather. Some pros of using Express.js include its simplicity, flexibility, and ability to handle high traffic. Some cons include a lack of built-in features compared to some other frameworks and the need to use third-party libraries to add additional functionality.
Ultimately, the choice of backend framework will depend on your specific needs and requirements. Some factors to consider when deciding which framework to use include the programming language you are comfortable with, the type of application you are building, and the level of complexity and scalability you need.
What are Stacks then?
If you remember from Day 13, Tech Stacks, we defined a stack as:
Stack is the combination of technologies and tools that are used to build and run a web application. Different stacks are designed for different purposes and may include different combinations of technologies for the frontend (client-side) and backend (server-side) of the application.
Stacks are the combination of Database, Backend, and Frontend framework to build the application. Because some technologies work better or easier together, these acronyms were created to refer to them, just to name a few:
LAMP
MEAN
MERN
MEVN
We haven't covered Databases in detail yet, but bear with me, we'll get into that too. 😉
LAMP stack:
LAMP stands for Linux, Apache, MySQL, and PHP. It is a stack that is commonly used for building dynamic web applications. Linux is the operating system, Apache is the web server, MySQL is the database management system, and PHP is the programming language used to build the application.
MEAN stack
MEAN stands for MongoDB, Express.js, AngularJS, and Node.js. It is a stack that is used for building web applications with JavaScript on both the frontend and backend. MongoDB is the database, Express.js is the web framework, AngularJS is the frontend framework, and Node.js is the runtime environment.
MERN stack
MERN stands for MongoDB, Express.js, React, and Node.js. It is similar to the MEAN stack, but it uses React as the frontend framework instead of AngularJS.
MEVN stack
MEVN stands for MongoDB, Express.js, Vue.js, and Node.js. It is similar to the MEAN stack, but it uses Vue.js as the frontend framework instead of AngularJS.
💡 For a refresher on React, Angular, and Vue.js, refer to our post on Frontend Frameworks on Day 14 of the #adventcalendar.Â
These are just a few examples of different stacks that are commonly used in web development. There are many other variations and combinations of technologies that can be used to build web applications, and the choice of the stack will depend on the specific needs and requirements of the application being developed.
Did you learn new aspects of Backend frameworks? Share what else a Product Manager should know about backend frameworks in the comments below.
Check the slides for Backend frameworks over here.