In this post series we’ll be talking about the nuts and bolts that make web development easier, but there’s a catch…
The catch is that, at first, you will be overwhelmed by the myriad of tools out there that you can use for different purposes.
There are such tools that do one thing and then there are the ones that serve two or more jobs thus needing you to make decisions about what you’ll be using in order to streamline you project.
I went through such overwhelming situations, quite frankly I still am, but the good news is that if you press on you’ll get the hang of it.
These tools can help you in more than one way. For example there are tools that help you write simpler and better code and tools that transform the code you write into code with maximum compatibility.
We’ll be breaking down the web development tools into 3 categories in order to better grasp what exact purposes they serve.
The Three Main Categories Of Web Development Tools Are:
- Back – End Tools
- Front – End Tools
- Miscellaneous Tools
Let’s look at the first category and see what web development tools come in handy for those jobs. Two more posts will follow for the other categories.
Back – End Web Development Tools & Terminology
- Apache, NGINX
- NoSQL, GraphQL
- Node JS, Express JS, Typescript
- MEAN Stack
- REST, SOAP
- Composer & npm
The term “web server” refers to both a physical computer and a piece of software. The goal of both is to get the requested files to the end user. The web server software is, of course, hosted on the web server computer.
So, when a user requests a page from a website, the DNS and IP system forwards that request to the right computer which “serves” that page back to the user’s browser.
In order to achieve this task, the server computer needs a server application. Such programs are Apache and NGINX which analyze the requests and send back the right files that make up the requested content.
Depending on your configuration, Apache & NGINX can be used together or interchangeably as they both have strong and weak points.
NoSQL stands for “not only SQL” and is a move away from the classic structured design of relational databases due to more complex storage needs.
NoSQL is used for storing unstructured data which is growing rapidly in today’s modern web applications. Such unstructured data can be: user data, product data, chat and messaging, videos and images.
Some popular NoSQL databases include MongoDB and CouchDB.
GraphQL is a powerful and flexible language for interrogating data. It can be thought of as a query language for APIs, not databases thus making it database agnostic.
Node JS, Express JS, Typescript
Express.js is a web framework for Node.js. It is built on top of Node.js and allows for creating web applications, manage a server and routs and respond to HTTP requests, among others.
It consists of key – value pairs and array structures and it is a language independent data format.
Nowadays it is used as an XML replacement for transporting serializable data.
A full stack web developer is someone who can develop both client and server software.
The MEAN Stack consists of four technologies:
- MongoDB – A NoSQL database system
- Express JS – A Node JS based web framework for developing web applications
CRUD is the acronym for Create, Read, Update, Delete and represents the four most basic operations that can be performed on data.
These four operations are used in APIs and relational database systems as applications need to perform these operations on the requested data.
API stands for Application Programming Interface.
Let’s take the “interface” and think of a book catalog in a library.
The catalog shows you a list of books with certain information about each book like the field of study, author, number of pages, the shelf number you find it on and maybe a little description.
In order to get the book you want you may need to provide some details about your request like an author or field of study.
From here you know exactly where to find the book you are looking for as well as some details about it.
You don’t need to know where the books came from, how they got there, how much it cost the library to purchase the books or how they take care to keep the books in good shape.
Another good example is a restaurant menu.
Such is an API for web application development. It is a “catalog” of things you need or “operations” you can get from another application and use to build your own functionality.
I like to think of APIs as a form of communication. Like the things you say in a conversation.
There is a lot of communication going on the internet that is done through APIs. Basically, devices and application communicate with each other for different purposes.
This communication can be categorized into two types:
- Representational State Transfer or REST, which is an architectural style
- Simple Object Access Protocol or SOAP, which is obviously a protocol
REST being a “style” is more liberal than SOAP which is a “protocol”. REST APIs can use multiple standards like HTTP, JSON, URI, and XML while SOAP APIs are based on HTTP and XML
In fact, a REST API (communication) can be accessed (made) using the SOAP protocol.
I like to think of them as a painting and a technical drawing. They both convey their content really well but they employ different means of doing it.
To take it even further the painter can use a “protocol” (SOAP) to achieve the end result.
Also, if you need to alter the communication, it is much easier to so with a REST API than a SOAP API.
Nowadays, the internet is largely based on REST communication.
MVC stands for Model – View – Controller and is a software design pattern in which the data, the presentation and the functionality are kept separate in order to have better control over the whole process of creating applications.
For a better understanding let’s think of the following scenario: ordering a cocktail.
What are the most important parts of that process?
- the ingredients – this is the model, also known as data
- the bartender – this is the controller which handles the logic or functionality
- the cocktail itself – this is the view or what the end user sees
I think you’re starting to get it.
The bartender (controller) takes the order from the customer (user), takes care of the assembling (functionality, logic) of ingredients (model, pieces of data) and presents back the customer with the cocktail (view).
Composer and npm are package managers or dependency managers.
They are tools that automate the process of installing, upgrading, configuring, and removing other helper tools that your application may depend on.
Composer is a manager of PHP packages.
npm is a manager of Node JS packages.
As an example, let’s take jQuery. You can include it the old way by pasting the links in your applications or by using npm which can also take care of updating the included packages.
Each package manager has it’s own repository where you can find the tools you need.
OAuth is an internet protocol that allows secure authorization for applications.
So, when an application needs to use another to perform some sort of task, instead of providing a password to the requesting app, you provide it with a token through the OAuth protocol.
A simple example is an app that uses PayPal to make a payment to a third party. Instead of giving that app your PayPal password, the OAuth protocol provides a safer way of achieving the task.
Another scenario would be an app that requests access to your Facebook account to post some updates. You don’t give it your Facebook password. Instead, the OAuth protocol uses authorization tokens between the your Facebook account and whatever service requests authorization.
At The End
These, I think, are the most relevant back – end web development tools and terms.
I’ll be updating the list along the way as I find more useful tools.
In the meantime, feel free to comment with your thoughts on the matter or web development tools and terminology.