Google Cloud Selects 3rd Gen AMD EPYC Processors to Launch Tau VM Instance

posted on June 21, 2021

tags:

T2D, the first Tau Virtual Machine (VM) powered by 3rd Gen AMD EPYCTM processors, has been launched AMD and Google Cloud. For scale-out applications, the T2D instance would deliver 56 percent greater absolute performance and more than 40% higher price performance, according to Google Cloud.

The Difference Between an Application Server and a Web Server?

posted on May 6, 2021

tags:

An application server is typically a super-set of a web server, which is to say that an application server can do what a web server does (i.e. answer HTTP socket requests on port 80 and HTTPS socket requests on port 443).

Web servers are generally very expandable, by means of APIs such as CGI, fast-cgi, ISAPI, NSAPI, and a thousand more modern variations of the same. In other words, web servers do support programmatic extension, and as such, are technically capable of hosting almost any application.

While web servers are basically file-centric (they are file servers that happen to support HTTP instead of SMB or CIFS), application servers are application-centric. This tends to imply: Application management (including life-cycle, security, monitoring, etc.), application packaging and (re-)deployment support, and application runtime services.
   
The runtime services dramatically affect the way in which one builds an application. For example, in Java EE, there are standard ways in which application components manage transactions, access data sources (including connection pooling functionality), send and receive messages, handle incoming HTTP requests, manage user sessions, authenticate and authorize access to resources, etc.
   
In Java EE, there is a formal packaging and deployment definition as well, which allows independently- and separately-built server-side components and libraries to be brought together into a single deployment unit. Most application servers support deployment (and subsequent re-deployment) of such an application, even to a running cluster of servers.
   
Organizations have invested heavily in the tooling and automation around application server platforms, including integration with their corporate-wide security standards; auditing and automated log collection; upgrade, back-up, and data retention policies; privacy, internationalization, localization and accessibility efforts; virtualization, provisioning, and scale-out infrastructure; and of course the application development knowledge-base and practices themselves -- which is to say that even when an application server may be technically "over-kill" for a particular application, it may still be more cost-effective and lower risk to use because of the other "sunk" investments.

As with any standardization or "higher level service", everything that is possible with an application server is possible to be built without an application server. The real question is whether the benefits of the built-in capabilities of an application server (and the network effect of the other tooling and infrastructure that organizations have invested in) outweigh the costs; for most businesses, the answer has been "yes".

Top 5 Open Source Web Servers

posted on April 25, 2021

tags:

Statistics show us that well over 80% of web applications and websites are powered by open source web servers. In this article, I look at the most popular open source web servers, and briefly review their history, technology, features, and more. I will also provide some tips so you can easily deploy one of the popular web servers yourself.

According to Wikipedia, a web server is "a computer system that processes requests via HTTP, the basic network protocol used to distribute information on the World Wide Web. The term can refer to the entire system, or specifically to the software that accepts and supervises the HTTP requests." In this article, we address the software which specifically processes web requests from end users.

Apache HTTP Server

The Apache HTTP Server—often referred to as httpd, or simply Apache—was first launched in 1995, and celebrated its 20th birthday in February 2015. Apache powers 52% of all websites globally, and is by far the most popular web server.

While Apache httpd is most often seen running on Linux, you can also deploy Apache on OS X and Windows. Apache is, unsurprisingly, licensed under the Apache License version 2. The web server itself uses a modular architecture, in which extra modules can be loaded to extend its features. For example, loading the mod_proxy will allow for a proxy/gateway on your server, and mod_proxy_balancer will enable load balancing for all supported protocols. As of version 2.4, Apache also supports HTTP/2 through a new module, mod_http2.

As the Apache HTTP Server has been the most popular web server since 1996, it "benefits from great documentation and integrated support from other software projects." You can find more information on the Apache Foundation project page.

NGINX

Igor Sysoev began developing NGINX back in 2002, with its first public release in 2004. NGINX was developed as an answer to the so-called C10K problem, which is shorthand for "how do you design a web server which can handle ten thousand concurrent connections?" NGINX is second on a list of open source web servers by usage, running just over 30% of all websites.

NGINX relies on an asynchronous event-driven architecture to help power its goal of handling massive concurrent sessions. It has become a very popular web server among administrators due to its light resource utilization and its ability to scale easily.

NGINX is released under a BSD-like license, and can not only be deployed as web server, but also as proxy server or load-balancer. You can find more information on the NGINX community site.

Apache Tomcat

Apache Tomcat is an open source Java servlet container that functions as a web server. A Java servlet is a Java program that extends the capabilities of a server. Although servlets can respond to any types of requests, they most commonly implement applications hosted on Web servers. Such web servlets are the Java counterpart to other dynamic web content technologies such as PHP and ASP.NET. Tomcat's code base was donated by Sun Microsystems to the Apache Software Foundation in 1999, and became a top-level Apache project in 2005. It currently powers just under 1% of all websites.

Apache Tomcat, released under the Apache License version 2, is typically used to run Java applications. It can, however, be extended with Coyote, to also perform the role of a normal web server that serves local files as HTTP documents. More information can be found on the project website.

Apache Tomcat is often listed among other open source Java application servers. Some examples are JBoss, Wildfly, and Glassfish.

Node.js

Node.js is a server-side JavaScript environment for network applications such as web servers. With a smaller market position, Node.js powers 0.2% of all websites. Node.js was originally written in 2009 by Ryan Dahl. The Node.js project, governed by the Node.js Foundation, is facilitated by the Linux Foundation's Collaborative Projects program.

The difference between Node.js and other popular web servers is that it is primarily a cross-platform runtime environment to build network applications with. Node.js applies an event-driven architecture capable of asynchronous I/O. These design choices optimize throughput and scalability in web applications allowing to run real-time communication and browser games. Node.js also highlights the difference in web development stacks, where Node.js is clearly part of the HTML, CSS, and JavaScript stack, as opposed to Apache or NGINX which are a part of many different software stacks.

Node.js is released under a mix of licenses; more information is available on the project's website.

Lighttpd

Lighttpd—pronounced "lightly"—saw its initial release in March 2003. It currently powers approximately 0.1% of all websites and is distributed under a BSD license.

Lighttpd distinguishes itself with its low memory footprint, small CPU load, and speed optimizations. It uses an event-driven architecture, is optimized for a large number of parallel connections, and supports FastCGI, SCGI, Auth, Output-compression, URL-rewriting and many more features. Lighttpd is a popular web server for the Catalyst and Ruby on Rails web frameworks. Find more information on the project homepage.
Tips

If you are looking to try one of the popular web servers, I can highly recommend downloading a LAMP (Linux, Apache, MySQL, PHP) or LEMP (Linux, NGINX, MySQL, PHP) stack. There are plenty of such stacks available, providing different flavors in for example Apache and PHP versions. They are usually provided as one-click installers, or available in your package/software manager on Linux.

Once you have successfully gone through the installation process, you can start your web server, and try out a Hello World example. It's a great way to start discovering the ins and outs of your web server, and how web servers work more generally.

Summary

This is by no means an exhaustive list of web servers. I have included some of the most popular web servers and looked at their supported technologies. If you are interested in more detail, particularly with the differences of Apache and NGINX, I recommend reading this article on practical considerations for choosing a web server.

And of course, we are always curious what your choice of web server is, for your web development or hosting needs.