If you are a non-tech entrepreneur you may experience communication issues with your product development team. You are not alone, even I have experienced similar problems as a computer engineer. So, I started to prepare a glossary that can help to avoid miscommunication.
Modern web applications consist of a backend and a frontend. Backend provides actual functionality and stores permanent data and frontend generates user interface based on user inputs and data provided by the backend.
A web page or a mobile app are most common types of frontends. Frontend operations run in your device.
Users don’t see the backend, their interaction is limited with the frontend. After the user input, frontend interacts with the backend in order to commit a certain task and receive the result.
For example, you want to go through the followers of a specific user on Twitter. Twitter frontend provides a ‘FOLLOWERS’ link but does not actually have any idea who the followers are. Whenever a user clicks on the “FOLLOWERS” link, frontend interacts with the backend and sends back a request for the followers of a specific Twitter user. The backend runs a complex computing on the database and prepares a list of followers. Backend itself doesn’t show followers list, but it provides the data to the frontend. Then it’s the frontend’s job to show the follower list and stylize the view.
A backend consists of at least 2 parts: a server application and a database. Backend should run on a server available for users all around the world as it feeds the application. Then application processes the data stored on the database and delivers it to the frontend.
Normally you should hire separate developers for each side. There are some ‘super’ developers around who called ‘fullstack developer’ and can handle both sides.
Normally, a user initiates a request by clicking or touching on the user interface (UI). That’s OK! But, what happens if two applications need to communicate with each other? How can one of them initiate a request and the other one can respond? API makes it possible, it’s a communication interface between applications. An application become capable to start a request through another application by using an API.
You may have another question in your mind. So, how does frontend and backend communicate with each other? As you may guess, frontend also uses APIs provided by the backend in order to start requests through the backend.
REST is the acronym for REpresentational State Transfer. It is a data exchange method over an API. And JSON is a data format. So, two applications use the REST method in order to exchange JSON data over an API.
Here is Stripe’s API: https://stripe.com/docs/api
Stripe is an online payment gateway for applications. Below, you can see the JSON data for an order:
JSON is a flexible data format, so you can add any kind of data without any provision. For example you may add a Color field for a certain set of data while others don’t have that field.
Backend provides the API and performs certain tasks on certain URLs. To access any backend functionality, applications use the corresponding URLs. Actually developers use URI instead.
A sample API URL for orders would be like that: https://api.example.com/v1/orders
And when someone gets connected to that URI, backend performs a certain task.
Let’s make it clear first. There is no YesSQL :-)
NoSQL is developed as a response to SQL (Structured Query Language) which is the traditional database querying language.
A sample SQL query:
SELECT * FROM Customers WHERE Country=’Mexico’;
We are using RDBMS (Relational Database Management System) for SQL supported databases. RDBMSs are working on structured and predefined data sets. But modern internet has tremendous amount of data as structured, unstructured, semi-structured or polymorphic. So, due to the dramatic increase on the number of internet users we need scale-out databases.
NoSQL databases can store complex documents, data in graph format and key-pair formatted simple data. Besides that, NoSQL databases are flexible and there is no predefined data format. You can extend data-format on-the-fly when needed. Remember, JSON data format was also extensible. So, NoSQL is a native database for JSON data format.
Oracle, Microsoft SQL and MySQL are well-known SQL databases and MongoDB, Cassandra, Redis are the popular NoSQL databases.
Modern developers collaborate. They use remote and shared code repositories to collaborate with their colleagues on their codes. Git is one type of code repository developed by Linus Torvals — the creator of Linux.
There are several code repository services available on the cloud. Github, Bitbucket and Gitlab are among the famous ones.
Code repositories keep track of code changes in order to answer questions like who, what and when. You can compare two different versions of the same code and track the changes. Developers can also pull the codes developed by others.
To learn more about features of a code repository you can check this: https://github.com/features
You should be hearing these words from your development team so often.
Build: Mostly, it is not possible to run an application with only one piece of code. Indeed, it does include several parts such as backend, frontend, scripts etc… It requires a set of jobs in order to bring all those parts together and have them run smoothly. We call that process ‘build’. Developers make that in almost every hour, sometimes every 10 minutes. They create some build scripts in order to perform those jobs.
Deploy: Deployment requires packaging up your web application and putting it on a production or test environment that can run the app.
There are some options for deploying and hosting a web application:
- “Bare metal” physical servers in the datacenter (HP, Dell)
- Virtualized servers on your premise or from a service provider (Amazon AWS, Digital Ocean)
- Platform-as-a-Service Cloud (Amazon AWS, Heroku)
I think most people already heard about HTML. It is a markup language used to generate web interfaces.
Better codes are built with better communication and so better businesses…