Today's web development technologies explained (briefly)

web technologies explainedAlright, this might be another I’ve-already-seen-that-somewhere-on-the-web kind of article, but as we like to do things our own way here at Okoone, we felt like giving a brief, yet up-to-date, overview of some of the most important web technologies out there, cover some of their use cases, and help our readers get a good understanding of today’s web technology landscape.

So first, let’s start with a couple preliminary words on essential concepts...

Definitions

Due to their distributed architecture (client / server), web applications typically combine two major components: a backend - that accesses, manipulates and stores the data (on a server), and a frontend - which is presenting it (on a client’s browser). Things have become a bit more complex recently (we’ll talk about recent trends in another article), but that’s essentially the way things work...

Frontend

The frontend is the part of the web that you can see and interact with through your computer or mobile browser. Simply put, the frontend (or client side) is a user-friendly interface between the user and the backend. In terms of programing languages, everything you see when using the web is a combination of HTML, CSS, and JavaScript.

Backend

The backend usually consists of three parts: a web server, a web application, and a database. The web server is a physical hardware and software bundle that purpose is to host web applications and databases (in-house or in the cloud). The web application is a program that is responsible for providing specific frontend functionalities to the user. It uses a database (relational such as MySQL and PostgreSQL or non-relational such as MongoDB) to store all the data that can be modified. Additionally, other types of software can be installed on the server: caching for faster access, search engines, firewalls, etc... Web application backends are programmed using languages such as PHP, Ruby, Python, Java, JavaScript, etc....

Content Management Systems (CMS)

Content Management Systems (CMS) are a type of web applications (deployed on a server) that are made to easily manage web content. CMS are ready-made web platforms that enable users to publish, edit, delete, organize and maintain content from a centralized web-based back office. CMS offer a lot of features that are ready out-of-the-box.

CMS are perfect for websites that need a whole set of common features: article and content editing and management, blog, forum, contacts, etc… CMS offer management through user-friendly administration panels, sometimes even directly from the frontend. CMS usually require integration, additional web development (to build custom content type and pages) and design (page layouts), but they provide a whole set of common features that are already developed. CMS are made to avoid reinventing the wheel.

There are a few major CMS out there with varying levels of flexibility (and complexity). All major ones are using PHP on the backend:

  • Wordpress is by far the most used CMS out there. It offers a good (and growing) set of functionalities but is probably the least flexible one. Wordpress is fine for blogs, simple company websites, simple magazines, etc…
  • Drupal is the CMS that offer the most flexibility but at the cost of a rather steep learning curve. Drupal is said to have framework-esque tendencies that enables developers to use bits of data in a lot of scenarios. Drupal is perfectly suited for complex corporate websites, magazines, etc...
  • Joomla offers a good balance between Wordpress and Drupal, and proves to be good choice especially for web designers.

Some CMS are dedicated to a particular usage. For example, three CMS are widely used for eCommerce: Magento (PHP), Prestashop (PHP), Shopify (Ruby on Rails). This said, Drupal also has some eCommerce modules that enable that kind of eCommerce features (shopping cart, online payments, inventory management, etc…).

Other less popular CMS using different backend programming language are also available such as Typo3 (PHP), Concrete5 (PHP), Plone (PHP), Mezzanine (Python), LocomotiveCMS (Ruby on Rails), etc… They are also viable alternatives but their community is much smaller. They are nowhere as big as the 3 ones described above.

The drawbacks of CMS is that they can be rather inflexible as soon as you want things that are not supported out-of-the-box or through 3rd party community modules. This is where Web Application Frameworks kick in...

Web Application Frameworks (WAF)

When CMS are not flexible enough to reach the requirements of a final product, or when their whole set of content management features are not needed - so basically when you just need to build a tailored web app - Web Application Frameworks (WAF) are the way to go.

WAFs are software frameworks that are designed to support the development of dynamic websites, web applications, web services and resources. They don’t come with as many pre-developed features as with CMS so the starting point for development is much lower, but it's possible to build just about anything with them.

Web Application Frameworks aim at alleviating the overhead associated with common activities performed in web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and they often promote code reuse. They provide low level modules that guarantee the developers just enough bootstrap not to have to reinvent the wheel every time.

Web Frameworks also represent a great way to build a standard structure of the code following well know practises that allow developers to jump in the project and be proactive quickly. One of these widely adopted practices is the Model-View-Controller (MVC) which separates the data and logic (Model) from the representation of the information (View) and the communication between the two (Controller). However the downside is that Web Frameworks require deeper software development expertise and involve much more coding than CMS.

Web Development Frameworks (WAF) are based on different programing languages: Symfony2, CodeIgniter, Laravel and Yii are coded in PHP, Ruby on Rails in Ruby, Django and Flask in Python and AngularJS, EmberJS, NodeJS and BackboneJS in JavaScript to name only some of the most popular.

A new trend recently is the use of the same programming language (JavaScript) on both front and back ends in order to speed up and simplify the development of web applications. Over the past couple of years, a full-stack Javascript WAF has emerged: Meteor. Meteor enables developers to use the same programing language for both backend frontend for rapid web development. One other big advantage of this type of technology is that it allows developers to build hybrid mobile apps with very little efforts, which is key in a world in which web and mobile are more and more ubiquitous.

Conclusion

The choice between CMS and WAF is relatively obvious. CMS are almost always the way to go if their set of functionalities cover most, if not all, of the requirements for your new website. However, when it comes to specific functionalities that CMS doesn't provide out-of-the-box, WAF will often tend to offer a better suited solution and faster development. In order to make the right choice, the challenge resides in understanding precisely what needs to be done, and what each of the CMS and WAF provides to cover your requirements.

With CMS, things can get a bit tricky as the right candidate will depend on the amount and the quality of the modules available to cover the features you need. Looking at the themes available for each CMS is usually a good start to see which CMS offers the closest integration out-of-the-box. The size and activity of CMS communities is also an important factor to determine the right platform, this is why we’d recommend to stick to proven platforms such as Drupal, Wordpress and Joomla for enterprise websites and Magento or Shopify for eCommerce websites.

With WAFs, the choice is even harder and involves a lot of parameters. The number and quality of available modules, the programing language (Java, PHP, Javascript...), the ease to recruit developers for a given language, the learning curve, the documentation available, etc… are all important factors to take in account when determining the right WAF.

At Okoone, we keep a constant survey of all these different technologies to make sure we always design the most suitable software architecture for our clients. If you’re in doubt, we are here to advise on the right set of technologies for your project.


BLOG COMMENTS POWERED BY DISQUS