6 minutes read
Tech Tools for Software Developers - Part 1: Infrastructure and Backend Components

Tech Tools for Software Developers - Part 1: Infrastructure and Backend Components

In the world of software development, there are hundreds of tools that developers use to make their jobs easier, to build better software, and to make projects and collaboration run more smoothly. In this series, we will examine three categories of tools used by software developers that you should be familiar with as you launch your coding career.

The first category we’ll look at is infrastructure and backend components. These are the operating systems, server software, and platforms that actually run the software that developers build. Being familiar with the capabilities of these tools will help you as you design and build apps and software.

Linux: The Operating System That Runs the Web

Linux remains the most popular operating system for server applications on the Internet. It was created in 1991 by Finnish software engineer Linus Torvalds as an open-source implementation of UNIX. Since then, the Linux kernel has been incorporated into dozens of distributions, as well as other projects such as Android.

While many developers no longer have a need to interact directly with the operating system, there is still value in understanding how the underlying technology running your application works. Additionally, many developer tools are built on Linux, so many developers choose to run Linux as their desktop environment as well.


Web Server Software: Apache and Nginx

A web server is the software that delivers web pages in response to HTTP requests from web browsers. Two of the most popular web servers are Apache and Nginx. First released in 1995, Apache is one of the oldest web server packages available, and boasts a large number of features. 

Nginx is a newer web server package, and quickly gained popularity as a lighter-weight option compared to Apache. Nginx can also be configured as a load-balanced, distributed server that runs across multiple servers (or virtual machine instances).

Both packages support the Common Gateway Interface (CGI), which allows server-side scripts written in Perl, PHP, or other languages to be executed. The output of these scripts is then passed to the client as HTML output. This allows for the creation of dynamic web pages.

More recently, scalable web applications have used backend frameworks like Node.js to directly implement HTTP servers without needing to use a separate software package. But for most web sites, Nginx and Apache remain the leaders with 85% market share between the two of them. 

Node.js and NPM: Bringing Javascript to the Server Side

Javascript was developed in the 1990s by Netscape to make web pages more dynamic. It stayed mostly in the browser until 2009, when Node.js was initially released. Node.js brings Javascript’s event-driven architecture to web servers. Rather than running a web server as a monolithic, threaded application, Node.js uses callbacks to signal that a task has been completed. As a result, much more scalable web applications can be built using Node.js, with many more features than those supported by traditional HTTP servers.

Additionally, Node.js has a built-in package manager and repository called npm. The official repository hosts thousands of packages that add features and extend Node.js for other uses. For example, backend frameworks for Node can be used to quickly develop web applications. These include Express.js, Socket.IO, Sails, and others. Other plugins help to connect Node.js with other software packages and runtime environments, such as ASP.NET.

Node.js has gained popularity as a lightweight and scalable alternative to traditional web servers, and is now used by dozens of companies and thousands of other apps and software projects. If you are interested in web frontend or backend development, Node.js is a must-know tech.

SSL: The Key to the Secure Web

Secure Sockets Layer, or SSL, is the technology that makes it possible to securely exchange data on the Web. When you connect to a secure website, your browser first makes sure that you’re talking to the right place -- that no one else has impersonated the server to intercept your data. Then it sets up a secure session that no one else can eavesdrop on. 

SSL is what makes secure online transactions possible. Credit card numbers and other personal info can be securely exchanged without fear of compromise. Passwords too can be kept private. Recently, it’s come to be expected that all sites use SSL -- most browsers now warn you if a site does not use it.

While SSL will likely be handled by server software, developers still need to be familiar with the technology and how it’s used. This will help you to make sure that you implement it correctly and know when it absolutely needs to be used in your app.

Docker: The Developer’s Virtual Environment

Docker is a relative newcomer to the development world, having been released in 2010. However, it is becoming a must-use tool for developers, especially those who are focusing on DevOps. 

Docker is a lightweight virtualization platform that allows developers to create isolated virtual machines called “containers”. Pre-made containers for a variety of uses can be found in Docker’s repository, and custom containers can be easily created as well.

Docker containers are designed to be created and destroyed quickly. This allows for applications that use containers to be scaled quickly. Docker containers can be used in public and private cloud environments to be able to create scalable infrastructure for applications via the docker-compose function. All of the containers necessary to run an application can be specified in a YAML file, and then the containers along with their settings can be automatically created with a single command. This allows app environments to be built, destroyed, and scaled quickly.

XAMPP: An Easy-to-Use Web Testing Platform

If you’re developing a web application that uses the traditional web stack -- Apache HTTP server, MariaDB or MySQL, and Perl or PHP for scripting -- then you need a quick and easy way to test your applications on your local machine. That’s where XAMPP comes in.

XAMPP is a self-contained, cross-platform package that allows you to quickly deploy these web application components for testing. It also includes a number of other common development tools, such as PHPMyAdmin for SQL database manipulation.

Since XAMPP was designed as a development tool, many important security features are disabled by default. So it shouldn’t be used to host a site on the public Internet. Still, it is a useful tool for learning to code web applications, development, testing, and otherwise learning the key parts of the LAMP stack.

Cordova: Mobile App Development Simplified

The final infrastructure tool that we’ll cover in this article is the Cordova mobile app framework from the Apache Foundation. Cordova provides a way to build native mobile apps using HTML5, CSS3 and JavaScript. This simplifies and speeds up the development process for apps targeting multiple mobile device platforms.

One issue with mobile app development is the fact that many on-device functions, such as the camera and the accelerometer, are hidden behind device- or OS-specific APIs. Because of this, a lot of work is required to port apps between different devices -- and even to older versions of the same OS.

Cordova solves this problem by wrapping native HTML5, CSS and JavaScript in a custom browser wrapper. The framework then provides a consistent way to access these on-device functions across different platforms, while providing good performance. It has the added benefit of allowing web developers who are familiar with these languages to transition easily into app development.

Conclusion: Infrastructure and Backend Tools

This is just a small sampling of the tools used every day by software developers. These tools provide the foundation for thousands of applications in use around the world, and by becoming familiar with them, you’ll be on your way to becoming a better software developer.

In the next article in this series, we will look at some of the tools used by developers to manage their code and to track work on their projects. This includes code management tools like Git, as well as project management tools like Trello.