How to Choose the Technology Stack for Your Web Application

Written by arateg | Published 2020/03/26
Tech Story Tags: web-app-development | frontend | javascript | javascript-frameworks | reactjs | backend | python | good-company

TLDR The right technology stack used for building a web application is a critical element of project success. Frontend web app development aims at determining the page structure, defining the look and feel of the web page, and creating the business logic. The frontend, or a client-side, is the face of your product that includes everything a user sees on the screen. The client-server model allows users to interact with web applications such as Facebook, Gmail, Google Docs, Netflix, Trello, Evernote, etc.via the TL;DR App

The right technology stack used for building a web application is a critical element of project success. The reason is pretty simple. The product creation doesn’t only imply making an outstanding user interface design and ensuring high usability. It is also about delivering a stable solution that works as intended and adds value to users. 
Things like scalability, resilience, performance, ease of infrastructure maintenance largely depend on technologies—client or server platform, programming language, frameworks, databases—that you pick for custom web app development. 
While you can be occupied with multiple issues—preparing a software requirements document, thinking through a marketing strategy, and other important tasks—engineers are generally responsible for choosing the tech stack. 
In this article, we’ve described a set of advanced tools to help you determine those that will perfectly fit your project. You will also learn what comprises the structure of web solutions. 

What is the structure of a web application?

Web apps consist of two sides—client (frontend) and server (backend). Server-side programming comprises an application, which is powered by a backend language, server, and a database. 
On the image below, you can see a typical structure of a web solution together with the frontend technology stack. Depending on the project needs, a software engineer or architect can add other supporting elements to the product.
A “Client-Server” model allows users to interact with web applications such as Facebook, Gmail, Google Docs, Netflix, Trello, Evernote, etc. This basic approach to building software is also widely employed in mobile app and website development. 

Frontend web app development 

The frontend, or a client-side, is the face of your product that includes everything a user sees on the screen. The interaction with this part is carried out in a web browser. Frontend web application development aims at determining the page structure, defining the look and feel of the web page, and creating the business logic.
Frontend technology stack generally includes the following components:
1. HTML
HTML (Hypertext Markup Language) is used for defining the layout and content structure displayed on the web page. Today software engineers employ the latest version, called HTML5, that provides them with audio and video support, as well as other elements for producing great web applications. 
2. CSS

Cascading Style Sheets, or simply CSS, is used in conjunction with HTML. CSS determines the look, feel, and formatting of the page written in HTML. This also includes the way elements should be styled, for instance, fonts, colors, animations. 
3. JavaScript 
Along with HTML and CSS, JavaScript is being widely used for building client-facing applications.
JS runs almost everywhere: web browsers, smartphones, cloud, servers, containers, etc. It is especially suited for producing dynamic content with engaging animations and interactive elements. At the moment, JS is the most popular programming language all over the world (StackOverflow Developer Survey 2019).
TypeScript is another trending language for frontend development. Being a syntactical JS superset, it enables engineers to use JS code and libraries. Invented by Microsoft, TypeScript perfectly suits for building large-scale products. We implemented most of our complex web projects—an enterprise content management system, cryptocurrency exchange platform, CRM and ERP solutions, etc.—using this technology. 
There are many JS libraries (e.g., React.js) and frameworks (Angular.js, Ember.js, Vue.js, Backbone.js) that simplify the process of making a web application.
Here at Arateg, we mainly employ React, Angular.js, and Vue.js for building frontends. Written in TypeScript, Angular.js is an open-source framework that provides a set of tools and elements. Initially released in 2010, the technology is maintained by the Angular team at Google. 
React is a JS component-based library for creating modern user interfaces. Emerged in 2013, it is managed by Facebook and supported by individual engineers and companies. By now, React has received 145,000 stars on GitHub. Having 60,000 stars, Angular is loved by specialists, too. 
While both React and Angular offer high performance, we also use Vue.js progressive framework (often to fulfill edgy startups ideas) appreciating it for lightweight structure and versatility. It first appeared 6 years ago and currently has 159,000 stars on GitHub.

Backend web development

Backend, or a server-side, powers a frontend part of web service and implements the business logic. Being invisible to users, it contains the following components:
  1. Programming language—used to write the app code and develop the business logic.
  2. Web server—is responsible for processing requests received from the browser. In our work, we mainly use Apache and Nginx.
  3. Database—a place for storing and managing data. When creating, say, a social media solution, a programmer employs a database to keep information about users: their posts, likes, dislikes, photos, comments, etc. There are relational (MySQL, PostgreSQL) and non-relational (Apache Cassandra, MongoDB) databases. 
  4. Web framework—equipped with a set of tools, it aims at facilitating and automating the web development process. The choice of this technology depends on the language you pick or have picked for implementing the project. 
The task of backend engineers is to enable the communication of the three elements—web app, server, and database. To this end, they apply languages invented for this purpose: Python, PHP, Golang, Java, etc. 
Our technology stack
1. Python+Django or Python+Flask
Now Python is one of the most popular and loved programming languages for web development worldwide. It perfectly suits for making large-scale secure applications. This technology is widely applied in Artificial Intelligence projects that involve machine learning, deep learning, text/image processing, natural language processing, etc. 
Other use cases are data analysis, data science, scientific computing, and information safety. World-famous companies such as YouTube, Instagram, Quora, and Netflix are using this advanced language. Our Arateg team especially enjoys Python for simple syntax, code readability, and rich capabilities for developers. This is a great choice if you need to implement a complex solution that you’re going to extend in the future.

2. PHP+Laravel
When we need to create graphical user interface (GUI) solutions, dynamic web content, interactive pages, content management systems (CMS), server-side or standalone web applications, we choose PHP. Among all its frameworks, we generally prefer Laravel due to its rich functionality. For example, it has pre-built support for user authentication, user authorization, and sending various types of emails.
3. Node.js+Express
Simply put, Node.js is a cross-platform JavaScript runtime environment. Executing JS code outside of a browser, it enables software engineers to use JavaScript, a popular client-side programming language, for backend development. 
Node.js+Express technology stack is a perfect choice for creating high-performance and scalable applications. Netflix, the world’s leading media service provider and production company, migrated the client-side written in Java to Node.js. This allowed the organization to significantly increase the overall performance, as well as build and deploy applications faster. 
Our software experts use Node.js for implementing complex business logic and microservices architecture. The backend of a custom CRM system for user analytics, lead and payment tracking—one of our featured projects—was written in it.

How to choose the technology stack for your web app

There are many factors that affect the choice of technologies for web app development. When deciding what tools to use for building yours, pay attention to the following things:
1. Business needs 
Before creating a web application, define your business needs. For instance, if your product is supposed to have a large audience, it has to be able to handle high loads processing numerous requests per second. 
Taxi services, online booking platforms, social media apps, online stores are examples of those solutions that should ensure instant response to user requests (payments, messages, data search, etc.). Here we recommend choosing programming languages like Python, Go, and TypeScript as they help reach this goal easier.
2. Project type
Project type directly impacts the choice of the web technology stack. If your goal is to launch an e-commerce application, you can build it on top of a ready-made market platform like PHP-based Magento or plugin for WordPress such as WooCommerce. Modern online stores often provide personalized recommendations to engage customers and boost sales. This feature can be implemented using Python.
To develop an Internet of Things solution that comprises sensors for collecting data and a web system for analyzing it, you will have to connect an IoT platform, for instance, Microsoft Azure IoT Suite, IBM Watson, AWS IoT, or Google Cloud IoT. If you need to create Ethereum smart contracts, Solidity programming language was designed exactly for this purpose. 
3. Time-to-market
In most cases, time-to-market (TTM) is critical for startups. As competition in this segment is very high, the goal is to launch the app faster. If you have tight deadlines, choose technologies that provide out-of-the-box solutions and integration with third-party services. 
For example, Python contains more than 200,000 functionality packages allowing programmers to streamline the creation of graphical user interfaces, AI-enabled applications, and data analytics platforms.
Django, a Python-based framework, offers automatic admin interface, tools for Google Sitemaps’ generation, and multi-language support including localization to dates, numbers, and time zones. This way, the use of Python and Django contributes to the reduced TTM.  
4. Budget
The choice of technologies also directly affects the budget. Specialists that know complex and innovative technologies are more expensive compared to others. For example, machine learning solutions generally cost more as they require Python experts who earn $118,764 annually in the USA (according to Indeed). JavaScript programmers are charged $117,239, PHP—$93,116. 
Project complexity always impacts the process of team assembling and therefore, the end price. If there are some challenging tasks, an IT service vendor engages senior software engineers. In the USA, their salary is $131,516 per year. Hiring a junior specialist will be $70,467.  
5. Scalability
If you’re making a web application supposed to be extended in the future, take care of scalability. Try to take it into consideration in advance and choose technologies that enable developers to faster add new components and features, as well as process more client data when scaling the project. 
6. Ease of testing
A web app may contain thousands of code lines, so errors are inevitable. Testing and bug fixing is an important development stage that requires time and effort. So, pick technologies that are easier to test. TypeScript and Python, for example, offer better code readability and focus on simplicity, which makes them more testable.
7. Security
Today, enterprises especially focus on establishing digital trust. If your company operates with large amounts of data, you will need a safe place for storing it. Furthermore, it’s important to ensure secure information exchange and management. If your product is supposed to have customers from Europe, it has to comply with the GDPR (General Data Protection Regulation). 
So, choose the technology stack that contributes to improved security. For example, Golang contains numerous packages helping ensure data privacy and compliance with various standards (e.g., U.S. Federal Information Processing Standards): Data Encryption Standard (DES), Triple Data Encryption Algorithm (TDEA), Keyed-Hash Message Authentication Code (HMAC), as well as multiple digital signature and hashing algorithms.
Django framework provides a reliable user authentication system and built-in protection against various security threats such as clickjacking, cross-site scripting, cross-site request forgery (CSRF), SQL injection, and remote code execution. 

Summing it up

When choosing the tech stack for your web application, don’t rely only on trending technologies. What is popular now, won’t necessarily be popular tomorrow. If some framework or language is included in “Top 5 in the world”, it doesn’t mean it will help engineers complete some difficult task. The same with an online search and competitors’ replication. 
This is great for getting a rough idea of existing tools and experience of other firms but only specialists know all ins and outs: interoperability between different technologies, functionality packages, the capability of a certain framework to resolve some particular issue, types of architecture and best ways for their implementation, etc. 
Delegating your project to a custom web app development company, make sure the team understands your business-specific needs. The system parameters like security, performance, scalability, availability, ease of infrastructure maintenance, resilience (ability to handle high loads) depend on languages, frameworks, and libraries that you use. 
For example, Python allows programmers to deploy scalable and secure applications. PHP is good at making functional solutions that ensure seamless user experience. Node.js is a happy choice if you want to increase performance and reduce infrastructure costs.
Here at Arateg, our experts delve into the customer’s goals, analyze a technical specification (or write it themselves based on the information received from the client), and take into account all features that have to be delivered. This allows us to define the most effective way of creating a web application. If you have a product idea, feel free to contact us!

Written by arateg | Take care of tech, so you can focus on core business.
Published by HackerNoon on 2020/03/26