How to pick up a stack for the project /Geek magazine
When developing any application, it is always important for customers to get a result, and for developers - to find the most optimal way to achieve this result. Application efficiency depends on many factors, the most important of which is a properly selected technology stack.
In this article we will look at what those are. stack, consider factors that should be considered when choosing a stack, as well as ready-made solutions for projects. If interested, welcome to cat.
Briefly about the
Tech Stack is a set of tools for implementing a conceived IT idea. Typically, a stack consists of programming languages, frameworks, libraries, various development tools, and programming approaches themselves. The synthesis of all of the above determines the viability and competitiveness of the application, its functionality, scalability and further maintenance.
Those. the stack can be divided into 2 parts: client (front-end) and server (back-end).
HTML markup language
CSS style sheets
jаvascript programming language;
UI frameworks and libraries: React, Angular, Node.js, jQuery, etc.
web server: Nginx, Apache;
programming languages C #, Java, PHP, Python, Objective-C, etc.
various frameworks built in over programming languages: Node.js, .NET, Django, etc.
Databases: Microsoft SQL Server, MySQL, PostgreSQL, Oracle, Neo4j, etc.
Cloud infrastructures and services: AWS, Microsoft Azure, Google Cloud, Heroku, etc.
What should be considered when selecting a stack
1. Requirements and features of the project
When forming those. Stack first of all, it is necessary to take into account the size and purpose of the project, since they significantly affect the choice of technology. The larger and larger the project, the larger and more complex the stack will be.
So, for example, for
(MVP or single-page applications), well-established stacks such as
may be ideal. Python-Django
Projects of medium size
for example, online stores and applications for medium-sized businesses, require slightly more complex technical stacks with several levels of programming languages and frameworks.
for example, complex trading platforms or enterprise applications, require a large stack to maintain application integrity and performance. Such large technical stacks usually use several levels of programming languages and frameworks. They are created and used to work in conditions of a large amount of data.
It is important to remember that you should not load the project with additional technologies. They should be exactly as many as are necessary for an effective solution of the task.
2. Experience and resources
In order to pick up a stack, you need good technical and architectural experience and knowledge. For a competent selection of technologies, it is necessary to navigate the intricacies and differences of each of them.
Accordingly, when building a stack, you should give preference to those technologies with which you work confidently. You should not choose a new technology for the sake of a new technology: often new frameworks and programming languages are either raw or experienced developers working with these technologies are simply not there. The choice of such technologies can lead to the fact that the project developers will sit and disassemble the new technology instead of moving forward efficiently. But, at the same time, do not give preference to something outdated and ineffective due to the fact that there are “knowledgeable people”. In such cases, difficulties may arise with the support and effectiveness of the project. Deciding on technology, it is necessary to find that very middle ground.
Also, it is worth considering the availability of resources for the implementation of the project. For example, if your team does not have a specialist working with a certain technology, adding it to the project simply does not make sense. An “impressive” stack does not carry any benefit if there are no developers who can successfully and quickly work with the selected technologies.
3. Scalability 3-3-3195.
The architecture of your application must be scalable, as scalability is vital for further development. Scalability determines whether your application can handle the load. For example, if the number of users increases, your technology stack should allow the application to cope with this growth.
There are two types of scalability -
horizontal and vertical
. The first means the ability to work on different devices and allows you to cope with an increasing number of users. Vertical scalability means the ability to add new features or elements to the application in the future.
To achieve good scalability, it is better to use powerful programming languages such as jаvascript. Such languages themselves are flexible, as they have various libraries and structures in their arsenal.
4. Ease of maintenance
Serviceability is one of the main factors when creating applications. Serving your application should be effortless, even when scaled.
In particular, there are two factors that determine the ease of maintenance of your application:
architecture. : must support reusability, be mobile and scalable;
code base (codebase)
: It should not be too long or too short, as it takes more time to process a long code, and compressed code can lead to errors during debugging.
Any end user wants to be sure that his personal data is safe. Therefore, when forming a stack, it is necessary to choose technologies that provide a high level of security. This problem is significant, especially when it comes to online payments.
6. The development speed of
The speed of project development is one of the most important factors. If the project should be developed in a short time, the best option would be the choice of ready-made solutions for those. Stack for easy integration. Such technology combinations reduce overall development time through third-party integrations.
In the rapidly developing world of technology and business, it would be foolish not to provide ready-made solutions for those stacks that simplify the work and save time for the development team.
Let's consider some of them.
Combines a working Linux framework, Apache web server, MySQL database, PHP /Perl /Python. This tech stack can be called an industry standard. It is used to develop web applications and is popular for its adaptability, security and open source. LAMP is often chosen to increase productivity and reduce development costs.
The MEAN stack is a collection of jаvascript technologies for developing complex, fast and reliable applications. This includes: MongoDB, Express, Angular, and Node.js. In simple words, MEAN is a jаvascript framework that simplifies and speeds up development. Using one language (jаvascript) for both client-side and server-side development improves teamwork. In addition, all MEAN components “speak” JSON, which ensures uninterrupted data transfer between layers.
Another strong advantage of the MEAN stack is that all the underlying technologies are free, and their source code is publicly available. If you encounter a problem during development, you can always count on community support.
This model includes MongoDB, Express, React /Redux and Node.js. Like MEAN, MERN fully covers the entire development process from client to server.
Given the use of React in improving the front-end part, and Node.js in improving the back-end part, this combination of technologies is often used in the development of E-Commerce projects.
This model is also a branch of the MEAN stack, where Vue.js. is used instead of Angular.
Vue.js itself combines the best features of React and Angular. Its main advantages are excellent performance, laconic programming style and a large system of tools.
All of the above models are turnkey solutions for the development of medium and large projects.
Of course, universal solutions can save time, but they are still inferior to specialized ones, since they are just a familiar approach and cannot be applied to all projects.
If we talk about really complex projects, which, by their logic, are knocked out of the mass, or about projects with special requirements for security and productivity - banks, the public sector - in such cases it is necessary to form an individual stack with which it is possible to satisfy all the set requirements.
Tech stack popular projects
As an example of a well-chosen stack, consider several well-known projects.
Databases: Cassandra, PostgreSQL
Server-side framework: Django
Programming Languages: Java, Python, Bootstrap
Databases: MySQL, Amazon, Redis, Hadoop
Server Side Framework: Rails
Programming Languages: jаvascript, Ruby
Databases: MySQL, Redis, Hadoop, HBase
Server side framework: Django, jаvascript MVC
Programming Languages: Java, Python, GO
Databases: MySQL, Redis, Hadoop,
Server Side Framework: Rails
Programming Languages: Ruby, GO
The foundation of any successful project is a properly selected technology stack.
Before you start choosing technologies, you need to carefully analyze the project and take into account the type, requirements for the project, the experience and resources of your team, as well as things like scalability, speed and security.
Despite the fact that there are ready-made solutions, they can not always allow you to develop a project in accordance with all requirements. Therefore, when forming those stacks, preference is often given to an individual approach.
It may be interesting