What is a tech stack and why does it matter?
Topics covered:
When planning the construction of a website or application, we must decide on specific technologies. They will be responsible for specific aspects of the project and should be compatible. We call such a ‘set’ a tech stack. What is it exactly?
What is a tech stack?
The technology stack consists of elements such as programming languages, frameworks, database systems, front-end and back-end libraries, and applications connected via APIs. The main division of stacks is on the back-end - front-end line.
Back-end stacks include technologies such as:
- programming languages - responsible for logic of the application. These can be, e. g. PHP, Python, Java or JavaScript,
- frameworks, which are a kind of set of tools for programmers to improve their work. They include e.g. Symfony, Django, Laravel or Ruby on Rails,
- web servers - used to process client requests. These are, for example, Apache, Nginx or IIS,
- database systems - the most popular of them are MySQL, Microsoft SQL Server, MongoDB.
The main elements of front-end technology stacks are:
- HTML - markup language responsible for the structure of the website,
- CSS - style sheets specifying elements of website appearance (e.g. fonts, sizes, layouts, colors). Appropriate frameworks are often used to work on CSS,
- Java Script - programming language used to create dynamic and interactive elements of the page. During coding, libraries and frameworks like jQuery, React, Angular and Vue are used here. An extension of Java Script is the TypeScript language, which makes it easier to detect errors during work.
Modern technological stacks are not limited to the tools mentioned above. Services that contain APIs to connect applications to other systems are also used.
Stack component performance monitoring and business intelligence tools are also used, which in turn track company-wide performance to help make better decisions.
Realise your development project with us.
Why the tech stack is important
Technologies are not chosen randomly. There are those that work well with each other, while a different set can make work more difficult or even impossible. Each of the stacks also has its strengths and weaknesses, which is why they are selected specifically for the application we want to build.
The type of technological stack determines how the product will work and whether it will be able to meet the project goals. It also determines the resources needed to maintain it and whether it will be scalable (and therefore possible for later development).
The technology stack is fundamental to the team's efficiency and productivity when developing and maintaining applications. Determining the stack is necessary to predict the budget and schedule of the project.
In addition, developers are usually specialized in certain types of stacks (it is impossible to know all technologies). When constructing a team, it is important to ensure that the skills of its members are adapted to the stack that we prefer in our company or that we have chosen for a specific project.
How to choose a tech stack?
The following factors should be considered when selecting a technological stack:
- Design requirements
Let's start by determining the size and needs of your project. A more advanced project requires a complex technological stack. However, if we use such a stack to create simple designs, we can waste time and resources. Therefore, it should be adapted to the scale of the project.
- Scalability
Some tech stacks are particularly useful when scalability of the product is important. When this is our priority, we should choose a set of tools with this in mind.
- Resources
When planning a project, we should know what budget we want to allocate to it. It largely depends on the chosen stack, as technologies affect the cost of development. The cost and time of obtaining appropriate specialists may also vary.
- Maintenance
The budget should also take into account how much we will spend on maintaining the application. Technological stacks are characterized, for example, by different times of introducing updates and carrying out maintenance work.
- Development time
Choosing a stack of more advanced technologies typically means a longer project lead time. Consider how important it is for us to get the product to market quickly. Very often, you have to find a compromise between the speed of execution and the level of ‘finishing touches’.
WebMakers technology stack
At Webmakers, our main technology stack is web technologies. The core of our work is driven by PHP and Javascript, for which we use the most popular frameworks: Symfony, API Platform, Sylius and Laravel for PHP and React, Vue.js, Angular for Javascript. Of course, there are also many larger or smaller libraries that have been designed specifically for these languages and frameworks. Our domain is building applications based on a backend powered by PHP (API) and a frontend powered by one of the Javascript frameworks.
To store data, we use both relational databases (Mysql, MariaDB) and non-relational ones (MongoDB, Redis). For fast and efficient data search, we usually use Elasticsearch.
We approach server solutions very broadly. We are no strangers to both projects built on closely matched and configured machines, as well as projects built on dockers. For larger projects, we use more complex infrastructures that, apart from stateless servers, also have Load Balancer (haproxy), filestorage servers (usually connected via NFS), database servers using replication. We are also familiar with cloud solutions, including AWS and DigitalOcean. In order to ensure the highest performance, we use a number of cache mechanisms, such as Nginx Cache, Redis, Memcached.
If we have to write a mobile application, our choice usually falls on React Native, because it is a universal technology to quickly write an application that works on both Android and iOS.
Of course, only the most important technological stack used in our company has been mentioned above. In addition to the technologies listed above, we also have experience in others, which we work with to a much lesser extent (e.g. Python, AWS Lambda, Node.js, Swift, C#, Java).