Imagine you have an idea for a startup or need a corporate web application. You meticulously calculated your functionality and already visualized your new app. You probably hired a contractor, identified the technical requirements, developed prototypes, and approved the design.
Now, as a business owner, you are distracted by the development of a marketing strategy, pricing models, and other essential tasks. And maybe, you have forgotten that the UI is just a cloak that hides a specific stack of technologies. Specifically, your technology stack provides your web application with reliability, security, performance, and fault tolerance.
You don’t have to choose your tech stack yourself, but you must have a common understanding of what your web app is based upon.
It is okay for a tech stack to be picked by the development team, so don't worry if you don't have enough technical knowledge. However, you should make sure that your dev team has a complete understanding of your web app and business specifics. Don't forget to learn about each technology in your stack, and if you have some doubts, discuss them with your developers.
Before Choosing a Tech Stack for Your Web Application
First, you should understand how your application works so that you are able to communicate with your developers properly. Here, it is key to know that all web applications consist of a frontend and a backend. Next, we will simplify the frontend and backend components.
The frontend, or client-side, involves everything users see on their screens. The frontend receives data from the server, processes them and displays to the user. Further, this part of the application provides the ability to interact with the application interface and processes user actions.
The backend is the server-side of your app. This part of the application stores all necessary information, then structures and processes this data by the request of the client application.
The server side isn’t visible to users, but it powers the client side, just as a power station generates electricity for your house.
In this article, we will share the most popularly-used tech stacks used in 2020. Please note that we will only be referencing a small portion of all tech stack solutions. If your development teams suggest a tech stack not listed here, please consider their recommendation because that tech stack might be the best solution for you.
Technologies for Frontend Development
Here are the major frontend technology stack components:
- HTML (Hypertext Markup Language) — defines the structure of the information presented in the browser.
- CSS (Cascading Style Sheets) is a style sheet language that describes the look and formatting of a document written in HTML.
Do you need a server-side rendering (SSR) for your web app? If your application is a closed system that should not be indexed by a search engine, a single-page app (SPA) developed on any of the above frameworks is an excellent option.
However, if the application is indexed and search traffic is essential, you will require SSR. An increasing number of search engines identify SPAs, but many SEO experts believe that search bots and SPAs do not work together predictably and recommend using SSR. If you need to choose a technology to enable SSR, then our recommendation is Next.js.
Technologies for Backend Development
The backend part of the development stack includes more components, and there are many more options to choose from here. Backend works behind the scenes and is invisible to users, but it forms the engine that drives the application and implements its business logic.
All backend tech stacks include the following main parts:
- Operating system in which the development is done.
- Web server processing requests from the browser and returning the corresponding content.
- Database storing the app data.
- Programming language used to create the app code.
- Web development framework for faster and easier development.
Let's take PopularitY of Programming Language (PYPL) Index rating which is created by analyzing how often language tutorials are searched on Google. The more a language tutorial is examined, the more popular the language is assumed to be. Next, let's look at some of the top-rated languages according to the PYPL Index:
Python is the top-ranked language, and its popularity has recently been snowballing. It is applicable almost everywhere — from web to desktop programs. Development within Python is high-speed and high-quality.
Additionally, Python has various ready-made libraries. Python is considered the best language for machine learning and BigData, which will likely allow Python to maintain its popularity.
Popular Python frameworks: Django (48K GitHub Stars) and Flask (50K GitHub Stars).
PHP is a scripting language that is very popular in backend development. Many content management systems (CMSs) are written in PHP.
Popular PHP frameworks: Symfony (23k GitHub Stars) and Laravel (58k GitHub Stars).
Last year, Node.js celebrated its 10 years anniversary. Over the past 10 years, Node.js has gained recognition among programmers and continues to gain popularity.
Go is a compiled multithreaded language developed by Google. According to Rob Pike, "Go was designed to solve real-world problems that arise when developing software at Google.”
Once built, programs written in Go are binary files that do not demand any language-dependent runtime environment. While part of the community says Go has everything you need, the other part still uses frameworks for backend development.
Popular Go frameworks: Gin (37k GitHub Stars) and BeeGo (23k GitHub Stars).
Java, like Python, has a wide scope of application. You can use Java to develop Android apps, desktop programs, and backend servers.
Popular Java frameworks: Spring and others.
There are many backend programming language options, such as C# (.NET Framework), Ruby (Ruby on Rails), and others. If your development team suggests a solution not mentioned on this list, do not panic, just take the time to learn about the proposed language.
Now that we discussed programming languages, we need to figure out where to store all the necessary data. Below, here is Stack Overflow’s database ratings.
When choosing your databases, you first need to know about their categories. All accessible databases can be divided into several types:
Relational databases are exceptional for developing financial applications and applications where data security is critical. These databases meet the requirements of ACID (atomicity, consistency, isolation, durability), which guarantees the integrity of the executed transactions and the safety of all changes made by a successful transaction.
All data is structured and corresponds to a specific type. If the structure of your data changes often, look in the direction of NoSQL databases.
Popular relational databases: MySQL, PostgreSQL, MS-SQL, and MariaDB.
Document-oriented database management systems (DBMSs) focus on flexibility, speed, and scalability. By using a document-oriented database, you can store and process unstructured data without predefined types.
Additionally, they do not use SQL standards, so they are often called NoSQL databases. Each database implements its own query language for working with data.
MongoDB, an example of a document-oriented database, added multi-document ACID transactions in its 4.0 version. Now, MongoDB offers not only flexibility and speed but also guarantees data integrity.
Popular document-oriented databases: MongoDB and DynamoDB.
Caching system reduces server lag and relieves the database of heavy loads during peaks in traffic by serving previously used and accessed data. Without the caching system, web apps are often sluggish and offer poor site performance.
Redis, a popular in-memory data structure store, can provide sub-millisecond response times, ensuring fast performance of high-load applications. Redis is often applied in game development, IoT, and financial apps.
The web server's task is to accept HTTP requests from clients (i.e. web browser, mobile app), forward them to a specific program, and return the HTTP response.
Most used web servers: Nginx and Apache.
In addition to all of the above, other technologies may be involved in your project. For example:
- RabbitMQ is a broker for exchanging messages between your services.
- Docker is used for containerizing and automating the deployment of your app.
- Elasticsearch — document-based data storage and retrieval tool tailored to storing and rapidly retrieving information.
What concerns the operating system, your server will most likely have an OS from the Unix-like family (for example, Ubuntu), but Windows is also possible if your project has specific requirements related with Microsoft products.
What to Consider When Choosing a Tech Stack
Above, we’ve listed various technologies. At this point, you may be thinking, "Okay, I understand that there are a lot of technologies, but which one should I choose for my project?"
Your answer will vary by project, as all projects are unique and have specific requirements. You can use several different programming languages and databases within the same project. For example, it would be reasonable if your primary database is PostgreSQL, you store statistics in MongoDB, and apply Redis for caches.
It is simply impossible to answer the above question without familiarizing yourself with the requirement specification and having an idea about the project. However, it's worth paying attention to some general criteria mentioned below.
Project Size and Complexity
For small web applications without complex logic, like landing pages or MVPs, ready-made CMS platforms may be suitable. Choosing an off-the-shelf solution, you save a lot of time and money on the development, but you lose flexibility and functionality.
If you have a medium-sized (online stores, financial, and enterprise apps) or large (social networks and marketplaces) web application solving non-trivial tasks, then you need to develop an app from scratch using programming languages and frameworks.
Development Team and Budget
There is always the possibility that you will need to hire or replace employees during a project, so you need to think twice about your tech stack before you start development.
As for costs, it is important to have a general idea of your project budget. In terms of employee costs, let's take a quick look at salaries associated with certain technologies in Stack Overflow.
Dev Community and Documentation
As we mentioned previously, the more popular the language or framework, the more extensive the community of developers. The more prominent and active the community around the language, the more ready-made solutions and tools exist.
In a nutshell, popular technologies will have more widely available solutions for non-standard tasks and allow for comfortable, faster, and better development. In the long run, more popularity means you could easily maintain the product in the future.
Possibility of Integrating With Other Solutions
It is usually the case that a project relies on interactions with the application programming interface (API) of third-party services. The presence of a software development kit (SDK) for such services dramatically speeds up and simplifies development.
Please note that SDKs are not available for all popular languages. Therefore, you should pay attention to the documentation of the services used, which languages they have an SDK for, and how complicated development would be without an SDK.
Time to Market
We strongly recommend that you don’t rush development. However, if your deadline plays an important role in your project’s development, then you should make your deadline clear to developers so they can choose an appropriate tech stack that favors development speed.
Third-party integrations will help to add functionality without writing it from scratch. Sticking to a popular technology will also save time on seeking out developers. And to top it all off, well-documented technologies facilitate the development of some features.
Remember, any high-quality project takes time. Using technologies that require less development time may cause the quality of the project to suffer.
Tech Stacks Behind Popular Web Apps
Let's take a look at the stacks that are at the core of some popular web applications that have proved their performance.
- eBay — a global e-commerce store.
- Wikipedia — a multilingual online encyclopedia.
- Facebook — the world’s biggest social network.
- Airbnb — an online marketplace which lets people rent out their properties or spare rooms to guests.
- Pinterest — a social network aimed at helping people share and find new interests.
- Reddit — a popular news aggregator and discussion platform.
- Slack — a business communication platform.
Technology Stack at Orangesoft
At Orangesoft, we have found a perfect technology stack for our projects, uniting the best from the web app development. Our tech stack helps us solve all our tasks and ensures quality and speedy development process.
If you are uncertain about the tech stack that you want to use for your project, you can always book our free consultation. From there, all you have to do is describe your project and technical specifications. Our specialists will do the research for you and send you a proposal detailing the best options that you can use to transform your vision into reality.