Today’s web technologies give developers unlimited possibilities to realize their ideas. To use their full potential, you need to know how to use the technology stack for web applications correctly. In this article, we collected links to documentation on various technologies which can be helpful for you.
But before we choose something, let’s see what technologies there are, how they differ, and in what cases which technology to choose.
Important Criteria for Technology Selection:
- Project size and type
- Project complexity
- Speed of development
- The cost of specialists
- Availability of specialists
- Available development tools
- Ready-made solutions
- Solution Flexibility
- The presence of a broad community
- Solution Fault Tolerance
- The trend of its development
- Detailed documentation
- Cost of support
- Load requirements
- Safety requirements
- Integration with other solutions
By choosing a technology based on such criteria, we can achieve an objective choice and thus save ourselves time and money. For example, there are types of the tech stack that are more appropriate to use in software development for startups than for larger and more complex projects.
We would distinguish three levels of abstraction in technology:
1. Pure language is a material from which anything can be made. The only limitation is the possibilities of the language. All the biggest sites in the world with hundreds of millions and billions of users, such as Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn, and others, are made in pure language. Moreover, the largest projects in the world are even creating new technologies for themselves, because they are not satisfied with the existing ones.
2. A system is an improved climate for a software engineer with instant principles and devices. From one viewpoint, systems help and accelerate improvement. However, then again, they force certain limitations. Structures are utilized for ventures of medium intricacy with participation in large numbers.
3. CMS is a ready-made solution, a constructor, in which we piecemeal assemble the desired project. Instead, it is not programmed but configured. There are a considerable number of limitations here. It is difficult and inefficient to go beyond the box. On the CMS are made simple sites with up to a million users per month.
Today, there is an immense number of various programming dialects that make sites. Furthermore, there are instances of enormous sites in every one of the famous dialects. If 10 years prior, when discussing the innovation of huge locales, everybody generally spoke about Java, today it tends to be practically any language, and to guarantee that destinations are made in a specific language is a generalization. This is because of the advancement of the actual dialects over the previous decade. Every language is something else, and picking we should again be directed by target rules, thinking back on the goals of the undertaking.
In pure language, massive projects with higher flexibility, loads, and security requirements are written without frameworks and box solutions. For such huge projects, budget is often not as important as efficiency. The larger the project, the more demands on flexibility and loads will be. It means that it is easier to write everything from scratch and allocate the best professionals than to take some ready-made solutions. For example, when we’re talking about a small project with an attendance of 10 thousand people a day, then it will be cheaper to make it on CMS, which will consume 3 times the server resources, put an additional server for $ 50 / month, and it will work. When we talk about a site with an attendance of 100 million users per day, the cost of adding servers will be just cosmic, so it will be easier and cheaper to invest in the development of a pure language solution that will be optimal for this particular project.
The bigger the project, the bigger the technology stack it uses. Huge portals can use several programming languages at once. Again, we come to objective criteria for technology selection. Often one language can solve one problem well while another can solve another. Such projects can be so huge that parts can run on different servers, other domains (subdomains), and different technologies. You should not be afraid of a medley of technologies in a large project, although it should be allowed only when necessary, and remember that not all technologies are compatible. The clearest example of using different technologies is Google. It is so big that its different parts are written in C/C++, Java, Python, JS, and other languages. Moreover, Google is actively creating new technologies, such as the now popular AngularJS.
We will try to give a brief description of each of the popular programming languages:
● PHP is an uncomplicated language that can be learned even by school students after taking special courses. It is mainly used for simple to medium-sized projects. Relatively cheap programmers, which is undoubtedly a plus for the customer. Anti Trend of recent years, although with the latest version of the language number 7, has powerful features that have won over the ordinary people.
● Python is a modern language. Development in it is fast and high-quality but rather tricky. Used for medium to large projects. Programmers are hard to find, and their work is not as cheap as we would like.
● Ruby is a modern language, and development is fast too. It is used primarily for developing simple to medium-sized projects, often developed by startups. There are also few programmers since this language is unknown to everyone, so the high price for their work is worth it.
● Java – development on it is very long and expensive. It is mainly used for large projects with special requirements.
● C # is similar to Java and is also used for large projects that are part of FinTech.
● JS is developing very quickly, which has become a trend in recent years. There are many developments, and you can write whatever you want on it, even games. It is used for medium and large projects. However, this language has received really powerful functions recently because there are still few examples of large projects. Specialists are the most expensive, and they are the most difficult to find since the language is young, complex, and demanding.
We have described the most popular languages in use today for the web. Many new languages are growing very fast, in particular Scala and some others. But they are still quite young and raw. I would not recommend running after fashion and writing until they have developed into something bigger.
Examples of Great Sites:
- PHP: Facebook, Vkontakte, Kinopoisk
- Python: Instagram, Pinterest, Reddit
- Ruby: 500px, Groupon, Airbnb
- Java: eBay, Amazon, Alibaba
- C#: Guru, Stack Overflow, Bank of America
- JS: LinkedIn, Walmart, PayPal
These examples show perfectly well that large sites can be in different languages, and that’s okay. Again, it comes down to the fact that the choice of technology should be made according to the requirements, for objective reasons.
What is Web Development Stack?
What you’re encountering on an internet browser is worked through many systems, programming dialects, information bases, and apparatuses. The mix of devices and innovations in a web application is known as the advancement web app stack.
The innovation stack for web improvement is then arranged into front-end and back-end. Both front-end and back-end dev stacks are required when you’re assembling a web application.
Frontend Web Development Stacks
Frontend, which is otherwise called the customer side, alludes to the interface that clients associate with. A web-based business store on the program is the customer side of the web app stack arrangement. Visuals, graphical designs, and ease of use are significant elements for an effective frontend.
To foster the front end, engineers utilize a mix of inexactly named devices as the frontend tech stack. Here are some generally utilized stacks for front end advancement:
- HTML – trains the program on the best way to show the basic substance. It shapes the essential structure square of a site.
- CSS – gives styles to design the HTML parts on the program. CSS decides the textual styles, size, colors, and other static components of the frontend.
- Frontend UI systems – React, Vue, and Angular are mainstream UI systems that permit you to expand on top of existing constructions and parts.
- CSS preprocessors – Extension dialects like SCSS, SASS, and LESS. They defeat the constraint of CSS.
Besides programming, you also need form management, testing, and submission tools, with front-end support.
Backend Web Development Stacks
The backend that is not visible to end customers includes business reasoning, validation, dataset administration, and synchronization with the client application. Also called the work side, it consists of a worker, a dataset, and applications that are suddenly in high demand.
Fostering the backend requires these web improvement stack parts.
- Working framework – The OS that is introduced on the worker before whatever else. As a rule, it’s either Windows or Linux.
- Web worker – A segment that synchronizes correspondence between programs, versatile applications, and the backend worker. It utilizes HTTP/HTTPS to move information between the two closures.
- Data sets – User data, exchanges, items, and other information are put away in a data set. MySQL, PostgreSQL, and MongoDB are usually utilized in web dev.
- Capacity – Documents and pictures require secure and dependable capacity on the backend. This is the place where AWS S3 and Firebase Storage become an integral factor.
- Facilitating – An assistance that empowers sites to be distributed on the web. Dependability, security, and speed are crucial in picking the right facilitating supplier.
- Programming language – Various programming dialects have been utilized to create the backend application. Well-known ones are Node.js, Ruby on Rails, and Java technology stack.
Web improvement systems like Backend structures decrease advancement time by giving formats, constructions, and segments to expand on.
Frameworks and Platforms
This is a development environment for programmers, with a ready-made infrastructure and several ready-made functions with standard solutions to typical problems. It is a kind of half-finished product from which you can make a sweet. There are many different frameworks in each language. There are both general frameworks created for the development of any solution and specialized for specific tasks. For example, Sylius is a specialized E-commerce framework based on Symfony. There are also the ones for making large and complex solutions, while others are not designed for this. Below I will describe the popular frameworks for each of the languages in which you can write large, complex solutions.
Frameworks are used to develop fairly large and complex sites with unique functionality. It’s much faster and cheaper than a pure language, but it also allows you to develop complex things and optimize them for loads. Plus, it’s almost always more secure than any boxed CMS.
Popular Frameworks and Platforms:
- PHP: Symfony, Laravel
- Python: Django
- Ruby: Ruby On Rails
- Java: Spring
- C#: .NET
- JS: Node.js, AngularJS
PHP has the largest number of frameworks, and that language has a lot to choose from, but not many functional ones. Fewer in other languages, and some perfect frameworks there is only one, like Ruby. Java has a lot of different frameworks for different purposes and not just for websites. These frameworks evolve every year, with new versions coming out, and some frameworks overtake others. For example, Laravel has been the most popular framework in the last few years, but the most complicated websites are still made with Symfony.
.NET and Node. Js – these are entirely independent platforms based on specific languages but have extensive capabilities.
The Technology Stack in Large Projects
Above I described the different languages and frameworks used in large projects. Still, if you look closely at massive projects, you can find a whole set of languages and technologies there. Almost all large sites use one primary language and several other languages. The same goes for databases: some tasks may use relational databases, while others use non-relational ones. And it all fits together seamlessly within a single project.
The choice of technology depends on the proposed architecture of the project. It is the architect who thinks through the main blocks of the future site. What language will be the basis, will it be native or framework, what caching system to choose, what databases, how all this will be connected, etc.
For example, let’s look at Instagram technologies (Insight IT data):
- Ubuntu Server 14.04 LTS – the main server operating system
- Python – the main programming language of the server part
- Django is a framework
- nginx – second level balancing of incoming HTTP requests
- gunicorn – WSGI server
- HAProxy – load balancing within the system
- PostgreSQL – the main data storage
- postgis – geo-request support
- pgfouine – reports based on logs
- pgbouncer – creating a connection pool
- Redis – additional data storage
- Memcached – caching
- Gearman – Task Queue
- Solr – geo-search
- munin, statsd, pingdom – monitoring
- Fabric – cluster management
- xfs – file system
And it’s quite a typical stack of technology. Instagram itself is not the largest and most complex service in the world.
This can be considered the accurate picture of the trends that we see in us as well.
What have the big projects been doing for the last 10 years?
- Airbnb – Ruby
- Instagram – Python
- Pinterest – Python
- Foursquare – Python
- Groupon – Ruby -> JS
- Twitter – Ruby -> Scala
- Uber – JS
This is no longer theoretical statistics but actual practice. Python and JS perform very well.
So What to Choose?
Simple web applications can be made on cross-platform technologies, and complex ones are usually done on native technologies. And when choosing a platform, you should always be guided by objective criteria, which we described in the article.