A software stack, or solution stack, is a set of technologies that work together to create a software application. Software Applications are anything functional made from computer code.
The technology required to run an application depends on the type of application. Coding Commanders focuses on web development (because it has the most jobs), so let's look at a web software stack.
Web Software Stacks include:
1) Operating System
2) Web Server
3) Data Storage
4) Programming Language
Being a full stack web developer does not just mean you can write server and client code.
A true full stack developer understand and can operate all of the nessicary components.
It takes a long time to be a complete full stack developer. Contrary to popular
belief, you can not learn everything in a 3-6 month program.
However, 3 to 6 months of hard work can make you a competent web developer.
Coding bootcamps use the term "full stack" very loosely.
An operating system (OS) manages the interaction between a device's hardware and software, including monitoring and allocating the hardware's resources. On a computer, some of the key hardware resources are:
- Processors: A CPU (central processing unit) is like the brain of the computer.
- RAM: RAM stands for Random Access Memory. It is much faster to randomly access memory bytes, than using a particular order or pattern to access it. Applicartions use RAM to perform tasks.
- Hard Disk Space: Inside your computer there are spinning magnetic disks the store your computer's data. This is the hard disk, where files and applications are stored. The greater a computer's hard disk space, the more data it is able to store.
- Graphics Card: If you are a gamer, you are probable pretty versed on graphics cards. The graphics card is a circuit board and it controls what you see on a device.
Windows, OS X, and Linux are computer operating systems. Most personal computers come standard with Windows (PCs) or OS X (Mac). However, programming tends to be done on Unix Family Operating Systems.
Unix is a multitasking operating system that is designed to be used by multiple users. Businesses often need several users, with different permissions, working on the same operating system. Programmers and system admins tend to prefer Unix Family Operating Systems for many reasons, including:
- Software Projects are created by teams, which translates nicely into the Unix multi-user infrastructure.
- Unix Family OS usually assume the user will be using the terminal application.
- Consumer type operating systems, such as Windows, try to hide internal processes that system admins must access.
- It is easier to control privacy and security on Unix systems.
- Heavy GUI operating systems, such as Windows, slow down hardware. There are lightweight GUIs and command line Unix family OS. A faster computer means you can get more done in less time.
Linux is the most popular Unix Family Operating Systems. There are many flavors of Linux. Coding Commanders uses
Ubuntu.
A web server stores and transfers the data used to make websites. It has two parts: Hardware and Software. Both are simple called "servers".
Web server hardware are the actually computers, normally contained in secure data centers, that are used to store website data. This data includes HTML, CSS and image files. These files are called "static data". Linux is the most popular OS used by web servers.
Hardware is good for storage, but it needs software to make it work. Web server software makes the web work by using HTTP (Hypertext Transfer Protocol) to serve web pages to clients.
When a client types a web address, it sends a request to the web server. The web server software will process that request, fetch the page data and serve it to the client. The client's web browser (e.g. Firefox, Google Chrome, Dolphin) translate the data and displays the web page.
Most websites have data stored in static files such as HTML, CSS, media, and client-side JavaScript. But many also have data stored in databases. A database is an organized and secure way to store data.
Static files are transferred to the client's computer. This means the client can see all the data. That may be okay for your company logo or a blog article, but it isn't okay for private data. For example, you wouldn't store passwords in a static file.
In contrast, databases store data on a server. This makes it a lot harder for members of the general public to access the information.
It is also much more efficient to use a database for large or complicated sets of data.
Learn PostgreSQL: Intro to SQL with PostgreSQL
Just like a web server needs web software to interact and perform functions, a database needs a server-side programming language to do the same. Programming languages are used to write the code that actually makes applications work!
Coding Commanders Server-Side Programming Lanuage Tutorials:
PHP
NodeJS
LAMP is the most popular web development software stack. It includes: Linux, Apache, MySQL, and PHP. Check out Coding Commanders' LAMP TUTORIALS.