Selenide Test Automation: Using Selenoid in the Docker Container
Tuesday, 12 November 2019
When developing any application, it is always important for clients to get a result, and developers are interested in finding the most optimal way to achieve this result. Application efficiency depends on many factors. A properly selected technology stack is the most important one.
In this article we will look into the tech stack itself, will go into the factors to consider when choosing a technology stack as well as ready tech stack solutions for projects.
Technology stack is a set of tools for implementing some intended IT idea. As a rule, a tech 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.
That stack can be formally divided into 2 parts, i.e. the client-side and the server-side.
The client-side or front-end provides interaction between the user and the server-side, that is, back-end.
Front-end technologies are responsible for everything the user sees on the screen. Front-end development provides configuration, optimization, and operation of all interface elements.
The Back-end is the server part of the application with which the user does not contact directly. Back-end stores and manages data, and is also responsible for the correct operation of the client-side.
Front-end technologies include:
Back-end technologies include:
First of all, when forming a tech stack, it is necessary to take into account the size and the purpose of the project, since they significantly affect the choice of certain technologies. The larger and greater the project is, the larger and more complex the tech stack will be.
For example, for small projects (MVP or single-page applications), such well-established stacks as Python-Django or Node.js-React can be perfect.
Medium-size projects like online stores or mid-market applications usually require more complex technical stacks with several layers of programming languages and frameworks.
Large projects, such as complex marketplaces or enterprise applications, require a large technical stack to maintain the integrity and performance of the app. Such large-scaled technical stacks usually use multiple levels of programming languages and frameworks. They are created and used to perform in a large amount of data conditions.
It is important to remember that you should not load the project with additional techniques. There should be exactly as many technologies as necessary for an effective solution of the task.
It is necessary to have deep technical and architectural experience and knowledge for picking a tech stack. To select the technologies competently, it is necessary to know all the ins and outs as well as differences between them.
Accordingly, when forming those stacks, it is worth giving preference to those technologies with which you work confidently. You should not choose a new technology for the sake of 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 waste their time to gain insight into the new technology, instead of moving forward effectively. However, at the same time, do not give preference to something outdated and ineffective because there are “knowledgeable people”. In such cases, difficulties may arise with the support and effectiveness of the project. When deciding on a technology, it is necessary to find that very middle ground.
In addition, 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 just makes no sense. The “impressive” tech stack does not carry any benefit if there are no developers who can successfully and quickly work with the selected technologies.
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 cope with an increasing number of users. Vertical scalability means the ability to add some new features or elements to the application in the future.
Maintainability is one of the main factors when building applications. Maintainability of the app developed should be done without additional efforts even when you scale.
Particularly, there are two factors on application maintainability depends on:
Any end-user wants to be sure that his or her personal data is safe. Therefore, when forming tech stacks, it is necessary to choose technologies that provide a high level of security. This problem is significant, especially when it comes to online payments.
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 to select ready-made solutions for tech stacks that provide easy integration. Such technology combinations reduce overall development time through third-party integrations.
In the fast-paced world of technology and business, it would be foolish not to provide ready tech stack solutions that streamline the work and save time for the development team.
Let’s look into some of them.
Combines Linux OS, 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 efficiency and reduce development costs.
Another strong advantage of MEAN stack is that all the underlying technologies are free and open-source. If you encounter a problem during development, you can always count on community support.
This model includes MongoDB, Express, React / Redux and Node.js. MERN fully covers the entire development process from client to server just like MEAN.
Given the use of ReactJS in improving the front-end and NodeJS in improving the back-end, this combination of technologies is often used in the development of E-Commerce projects.
This model is also a branch of 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, neat programming style and a large system of tools.
All the models mentioned above are ready solutions for medium and large project development.
Of course, universal solutions help to save time, but they are not as good as the specialized ones since they are just a familiar approach and cannot be applied to all projects.
If we are talking about complex projects which out of the crowd due to their logic, or about the projects with special requirements for security and performance such as banks, public sector, then in such cases, it is necessary to build an individual technology stack which makes it possible to satisfy all the set requirements.
As an example of a great tech stack, let’s look into 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
Databases: MySQL, Redis, Hadoop, HBase
Programming languages: Java, Python, GO
Databases: MySQL, Redis, Hadoop
Server-side framework: Rails
Programming languages: Ruby, GO
Choosing the right tech stack is the basis of any successful project.
Before proceeding with the selection of technologies, it is necessary 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 such things as scalability, speed, and security.
Despite the fact that there are ready solutions, they can not always allow you to develop a project in accordance with all requirements. Therefore, when forming a technology stack, preference is often given to an individual approach.