When we surf online these days, surprisingly many of the web pages we use are, in fact, web applications. These are applications we use via our web browsers. We read our e-mails, share our holiday photos, congratulate our friends on their birthdays, and share our favorite links online. But what is a web application exactly? And what are the differences between web apps vs conventional websites from a technical perspective?
Web apps have a user interface, a client, which is the part you see and interact with. The client is basically the front-end side of the web app.
To support the front-end, there’s also a back-end part: it’s simply a database on a server where all user data is stored and processed. This client-server environment is what makes all your favourite web apps work.
— See also: Learning Computer Science Basics Before Coding
Personally I first got interested in programming because of the prospect of creating my own web apps in the future. That’s why in this post I’ll share with you a bit of what I’ve learned about web apps, going through the following points:
- What is a web application?
- How do web apps work?
- Typical web app framework structure
- Web applications vs desktop software
So in case you’re interested in how web apps work or perhaps wish to create one of your own, this post is for you. Happy reading!
— See also: Why I Started to Teach Myself to Code
What is a web application?
Basically web applications differ from conventional websites in terms of the content they display to the user. Although the two are far from being mutually exclusive, there are some distinct differences. Hence it’s often impossible to tell where the one ends and the other one starts.
A traditional website is somewhat static. Take a news page, for example. It presents you with articles about the biggest, latest events in the world. There are sub-pages for specific news fields, such as politics or culture, but the content displayed for each reader is more or less the same.
Web applications, on the other hand, can process user input and react to it. The easiest example to think of is pretty much any website where you have a profile and can log in. Once logged in to your account, the website looks different. You see your own profile, your connections on social media, and updates from people in your network. The site’s look and content is unique to your user account.
The ability to process user input is the main characteristic of web applications. They are able to store and retrieve data and present it to the user in a web browser. One could say that conventional websites are for consumption and web apps for interaction. Does that make sense? Cool.
How Do Web Apps Work?
So now we know a web application needs to have a database for storing all the data from its users. This server-side functionality is programmed by back-end developers. The client-side is taken care of front-end programmers. They make sure a web application has an efficient, beautiful, user-friendly interface.
— See also: Back-End Development vs Front-End Development
Let’s think about what exactly is stored in the database. A web application has quite the perfect memory – it doesn’t forget what you’ve done. Every status update, photo upload, or another input on your social media account has its own little spot in the database.
Additionally, the database is aware of every single like, every comment, and every like for a comment, too. Let alone your personal information and your network of friends. And pretty much your every click you made since you first registered.
As you see, the amount of data stored by some of the biggest web apps we use is ginormous! This applies especially to social media, where our behavior is tracked on a particularly detailed level. With a web app like this, constructing an efficient data structure for managing all the data is probably the single most important task for back-end developers.
Typical Web App Framework Structure: Model-view-controller (MVC)
There are of course several solutions and different ways to construct the back-end fundamentals for a web application in terms of programming. So far, I’ve been working with Python and Django to create my own simple web applications. They use one of the most common type of framework architecture called the Model-view-controller (MVC) pattern. It divides the back-end processes into three interconnected parts:
- Model – manages the data and logic of the application
- View – creates the user interface
- Controller – commands the first two parts and coordinates the tasks between them
For a more thorough explanation, check out my post about the Model-view-controller (MVC) design pattern.
When you’re using a web app, for example when you log in to your account in social media, you interact with the view. The view part sends your input to the controller. It knows exactly what to do with your username and password. It then tells the model what to retrieve from the database. Obviously, you eventually want to get onto your landing page when you log in. The model then updates the view, so that the view renders your landing page in your web browser.
All this happens in the blink of an eye – pretty neat!
In fact, a social media web app is a collection of several applications running in the background. One could be responsible for managing user accounts, while another one administrates the photos you post online. A third application could then process and maintain the comments for those photos.
The MVC structure and the interactions between the modules are, of course, open to interpretation.
This video gives one particularly great explanation of the MVC pattern. It compares the view to a pretty sales clerk who has to ask the bossy controller for everything. The controller knows its business and forwards the request to the model, the smart employee in the storage room. The model knows how to find exactly what the customer wants and forwards it to the sales clerk, who in turn presents it to the customer.
Web Applications vs Desktop Software
In addition to adding depth and functionalities to websites, web applications also offer cool opportunities for traditional desktop software developers.
Some time ago, most software was sitting tight on the user’s computer, installed on the hard drive. There was software for e-mails, text processing, spreadsheet work, and so on.
Now, most of us have e-mail accounts that we can access via any web browser.
Furthermore, we can now do our spreadsheets and text processing using web-based applications. That way, not only can we access our documents across several devices and platforms, but we also save the trouble of installing programs on our computers.
This also makes lives easier for programmers: they only need to write the code for one platform instead of several operating systems.
Develop your own web apps!
All in all, web applications have become a huge part of the Web in total. Most of us use some daily, especially in social media. Since I find the field really interesting from a programming perspective, I’m in the process of creating a couple of web apps of my own. I will keep you posted on how my web apps turn out once they’re ready for the public eye to see!
To start learning web development right away, check out this list of beginner level courses in HTML, CSS, and other tools I recommend!
I hope you found some useful information in this post on what web applications are all about. If you’re interested in developing some on your own, go for it!
Even total programming newbies have the chance to create their own web apps with frameworks such as Django for Python or Ruby on Rails fairly quickly. They are both web frameworks, facilitating the process of developing data-driven websites. Pinterest and Instagram use Django, for example. Ruby on Rails powers AirBnb and Hulu, to name a couple.
— See also: 4 Steps to Get You Started With Coding
Thanks for reading! Feel free to share your thoughts in the comments below. And as always, share the post with others if you liked it!