Do you still remember those days when websites were built in one text editor? HTML and CSS were all you needed to master to create them. It brings a smile to my face to think of those times. Why? Firstly, I imagine how easy website development once was (or wasn't it, since we have now UI editors?). Secondly, I remember how ridiculously the websites built that way looked, especially compared to today's ones. Nowadays, any piece of software, whether it is a website, an app or any other project, needs several pieces of technology to allow proper functionality and look. Web development processes evolved, app development evolved aswell. To understand them better, I would like to devote a few words to the stacks meaning in aspect of web applications development
What is a Tech Stack and what is history ofTech Stack?
A tech stack is the combination of technologies, programming languages, tools, and frameworks used to build and run an application. Applications can have different amount of items in their tech stack and overall complexity increases with every new added stack. There are 3 - 5 main groups of tech stack types, depending on how you try to group them. Those would be:
- Frontend stack - client-side part of the application. For example HTML and JS that is being run in browser.
- Backend stack - server side part of the application. Often besides logic here are included API connections
- Database stack - sometimes considered part of the backend stack
- DevOps stack - server setup, contenerisation, virtualization technology, automated testing and deployment
- Web3 stack - decentralized/smart contract layer. Sometimes considered part of Frontend stack or part of Backend stack
So as it seems it sometimes does not sound easy to assign certain part of the layer to specific tech stack. It could be a matter of dispute for example - is REDIS part of DevOps or Backend? But really, that classification is not as important as actual relations between different stacks - but I will come back to this later. For now, another observation can be noticed that tech stack of web application has grown over time:
- Frontend only website - this were the simplest websites written in HTML. One might argue that you needed server (like Apache) to provide even for a simple HTML website, but on the other hand you could run it locally without server, just using your browser. So this included most often HTML and JS
- Frontend + backend + server - now here is jump from one to three stacks. When need to have dynamic websites emerged, PHP was introduced. So now HTML websites to be dynamic could use PHP backend. But PHP backend requires a server to run. So you actually needed 3 stacks to run such application (I'm considering "server" equivaent to Apache in here).
- Frontend + backend + server + database - now here comes the fun part, because when you allow to store and reuse data, you can do very wide amount of tasks - starting from simple "guest book" or user management, to very complex applications. And here it is worth noting that there are few most common setups for such approach, such as:
- LAMP - meaning Linux + Apache + MySQL + PHP
- WAMP - meaning Windows + Apache + MySQL + PHP
- MEAN - meaning MongoDB, Express.js, AngularJS and Node.js
- And list goes on, in any combination
- But Windows and Linux, and even same distribution of Linux, could have different setup - for example different set of packages - so whole environment was sometimes hard to reproduce. So, to make application environment reproducible, and deployment process more scalable and automatic, you need another stack - DevOps - which containes at least contenerization (such as Docker with or without Kubernetes or LXC, also it's worth to mention Terraform) and CI/CD for automation. Now, if required, you could add to this stack hosting itself - such as AWS.
- For our current analysis we could add Web3 stack aswell. This is fairly new topic, but alredy very complex and developed, because it provides decentralized connection between different users.Such servicecuold be for example Blockchain Wallet and Identity Layer.
- And there is newest layer to be considered here - AI layer. It is not as new topic as you may expect - because we may consider beginning of AI somewhere in 1950s - but now the computing power and rapid advancement in simultaneously processed operations made it possible for everyday use. Some may argue that it would be part of the backend stack, but in my opinion it should be treated separately.
We can probably expect in the future that tech stack will become more and more complicated, but you can only imagine and guess what could be next. For example AR, or maybe something that will originate from quantum computing. But for now, let's close this list for the considered range - web applications.
What is Full Tech Stack Development?
Such approach also allows pursuing another topic - separation between different layers of application. While separation might sound bad, it is actually quite helpful in terms of work oragnization, especially for larger applications. Stacks to communicate between each other will require some kind of communication between each other - for example between frontend and backend stack there may be API. This API can be standardized - and if standardized, it can be testable. Such tests would be black-box tests because we are not diving into code of frontend or backend itself, but we are just running tests if communication on endpoints is good both ways. This will be true for example for haedless applications, when backend provides API, that frontend connects to, and that API is tested on Postman, while also it is possible to connect new frontend (like Open API or N8N/Zapier automation or even mobile application) without recreating whole backend.
- various web programming languages (e.g. JavaScript, Python, PHP and many more)
- frameworks (so-called software environment)
- database(s)
- front-end development solutions
- back-end development solutions
- APIs
All the above components form a full-stack development.
Various Types of Web Development
Word stack derives from technologies added to each other, just like layers. The person taking care of the overall website development process is a full-stack developer. However, web development is a vast and advanced process and the tech stack consists of many 'layers'. That is why you will often come across web developers who specialize in narrower areas of expertise. These will be, for example, front-end developers or back-end developers.
Front End Developers
Front-end developers are responsible for all elements of a website that the recipient interacts with. This includes graphics, the appearance of animations, various fonts, and layout. One of the most important elements of web building that front-end developers manage is responsive web design. This constitutes what the website looks like on different devices. Front-end developers use such languages as HTML, JavaScript, or CSS.
Back-End Developers
The code of the website is what the back-end web developer cares about. These web development specialists will take care of all server connections, page databases and functionality of the internal architecture of web pages. They most often work in such languages as PHP, Python, Java or MySQL.
Full Stack Developers
Front-end development and back-end development need somebody who will connect them. Here comes a full-stack developer. If the project is relatively small a full-stack web developer will perform all web development functions.
Their role most often includes:
- managing servers and taking care of databases
- creating code in such languages as CSS, HTML, JavaScript
- establishing communication between web development areas of expertise (front-end, back-end, web content creators, graphic designers) to deliver the best possible product to the client
- developing and proposing the MVP (minimal viable product) to the client
Why Is Tech Stack Important?
There are many reasons why a good tech stack is important, such as high security, functionality or accessibility. However, from a business perspective, there is one that stands out - scalability. This is connected with the ability of your websites and web applications to handle an increasing number of users. After all, this is the purpose of any piece of software used in business: to attract more and more users. The software web developers build needs to be created with growth in mind.
Tech Stack in Mobile Apps and Web Apps
Let's talk a bit more about the components of stack tech. I would like to not only present them from the perspective of web development but also consider mobile apps and web applications.
What Should Web Application Stack Consist Of?
Stacks meaning in web applications is of great importance. What should the tech stack of such apps include? Web app developers should take care of databases, front-end, back-end and perhaps containerization tools. I prepared for you a review of a few most popular components I use in my business:
MariaDB Server
It is an open-source relational database. It was created based on three values: stability, openness and performance. It is compatible with other types of databases, such as Oracle. MariaDB is used by such websites as Google, WordPress.com or Wikipedia.
NoSQL Databases
No SQL, or not only SQL, are non-relational databases. There can be various types of such databases. The most popular are graphs, documents, key-value, or wide-column. NoSQL databases are perfect for scaling. They are also easy to use and have flexible schemas. Non-relational databases are used by such giants as Microsoft, Meta, and Amazon.
ReactJS
This library was created to enable the building of component-based user interfaces. It is open-source, free and written in JavaScript. ReactJS was developed by Meta, however, it is not only used by Facebook and Instagram but also by Dropbox, Airbnb and Skype
VueJS
VueJS is another example of a model that helps build user interfaces based on the components. VueJS uses the extension of HTML, JavaScript and CSS to maximize the software functionality. VueJS enhances software development processes of such companies as Nintendo, Adobe or GitLab
Laravel
It is an open-source application framework that uses PHP. Many back-end code writers choose Laravel because it is highly logical, easy to use and results in a highly scalable product.
Docker
Docker is a software platform used to build, run, test and manage applications. It uses lightweight containers to deploy applications. Such an approach ensures efficient application functionality in various environments.
Kubernetes
Kubernetes automates the deployment of any app and helps to perform any kind of changes to it. Monitoring and managing apps are extremely easy thanks to the many functions Kubernetes automates.
What Should Mobile Application Stack Consist Of?
In mobile application projects, stacks meaning is slightly different. Mobile app developers will take care of databases, engines and front-end development. Below are a few pieces of technology I use in tech stacks for mobile applications I create:
MariaDB, NoSQL or Firebase
Firebase is a development platform that offers fast app building, releasing and monitoring. It offers a variety of useful features, such as push messages, authentication, or file storage.
Firebase or Laravel with scalability mechanisms
Firebase and Laravel work extremely well for mobile app deployment and management purposes.
React or Flutter
Flutter is a framework that allows for the creation of apps from a single codebase. The products are easy to navigate, clear and pleasing to the eye. The choice between React and Flutter is not always straightforward. That is because both are very good technologies for mobile app creation.
Other Popular Tech Stacks in Software Development
Just because I use certain tech stacks in Sailing Byte, it does not mean there are no other decent stacks on the market. Let me mention a few other options along with their uses.
The MEAN Stack
The name consists of the first letters of the used technologies: MongoDB, Express.js, AngularJS and Node.js. However, I like to think of this stack in a more informal meaning of mean (good). The whole stack can be written in JavaScript, and the code can be copied across the whole application. This makes MEAN Stack's use as easy as pie. On top of that, it is also free, and open-source and produces apps characterized by high flexibility and scalability. MEAN is widely used to deliver web applications.
The LAMP Stack
This stack consists of such popular technologies as Linux, Apache, MySQL, and PHP. It is stable, simple and powerful. It has been on a market for a while and has been trusted by many web app developers. Because it is an open-source solution, it allows for the change of the technologies and selecting the best course of action for the development of your web app.
Sailing Byte - Your Expert In App, Web and Website Development
If stacks meaning, site technicalities or website development seem a little too much, the Sailing Byte can give you a hand. Book a call to talk about your project or an already-existing website or app. We have decades of experience and practice in developing software for our clients. Contact us, let us do our magic, and we assure you - you will not regret it.