Computer appliance



A computer appliance is a computer system with a combination of hardware, software, or firmware that is specifically designed to provide a particular computing resource. Such devices became known as appliances because of the similarity in role or management to a home appliance, which are generally closed and sealed, and are not serviceable by the user or owner. The hardware and software are delivered as an integrated product and may even be pre-configured before delivery to a customer, to provide a turn-key solution for a particular application. Unlike general purpose computers, appliances are generally not designed to allow the customers to change the software and the underlying operating system, or to flexibly reconfigure the hardware.

Another form of appliance is the virtual appliance, which has similar functionality to a dedicated hardware appliance, but is distributed as a software virtual machine image for a hypervisor-equipped device.

Overview
Traditionally, software applications run on top of a general-purpose operating system, which uses the hardware resources of the computer (primarily memory, disk storage, processing power, and networking bandwidth) to meet the computing needs of the user. The main issue with the traditional model is related to complexity. It is complex to integrate the operating system and applications with a hardware platform, and complex to support it afterwards.

By tightly constraining the variations of the hardware and software, the appliance becomes easily deployable, and can be used without nearly as wide (or deep) IT knowledge. Additionally, when problems and errors appear, the supporting staff very rarely needs to explore them deeply to understand the matter thoroughly. The staff needs merely training on the appliance management software to be able to resolve most of problems.

In all forms of the computer appliance model, customers benefit from easy operations. The appliance has exactly one combination of hardware and operating system and application software, which has been pre-installed at the factory. This prevents customers from needing to perform complex integration work, and dramatically simplifies troubleshooting. In fact, this "turnkey operation" characteristic is the driving benefit that customers seek when purchasing appliances.

To be considered an appliance, the (hardware) device needs to be integrated with software, and both are supplied as a package. This distinguishes appliances from "home grown" solutions, or solutions requiring complex implementations by integrators or Value-added resellers (VARs).

The appliance approach helps to decouple the various systems and applications, for example in the data center. Once a resource is decoupled, in theory it can be also centralized to become shared among many systems, centrally managed and optimized, all without requiring changes to any other system.

Tradeoffs of the computer appliance approach
The major disadvantage of deploying a computer appliance is that since they are designed to supply a specific resource, they most often include a customized operating system running over specialized hardware, neither of which are likely to be compatible with the other systems previously deployed. Customers lose flexibility.

One may believe that a proprietary embedded operating system, or operating system within an application, can make the appliance much more secure from common cyber attacks. However, the opposite is true. Security by obscurity is a poor security decision, and appliances are often plagued by security issues as evidenced by the proliferation of IoT devices.

Types of appliances
The variety of computer appliances reflects the wide range of computing resources they provide to applications. Some examples:
 * Storage appliances: provide massive amounts of storage and additional higher level functionality (ex: Disk mirroring and Data striping) for multiple attached systems using the transparent local storage area networks computer paradigm.
 * Network appliances: are general purpose routers which provide firewall protection, Transport Layer Security (TLS), messaging, access to specialized networking protocols (like the ebXML Message Service) and bandwidth multiplexing for the multiple systems they front-end.
 * Backup and disaster recovery appliances: computer appliances that are integrated backup software and backup targets, sometimes with hypervisors to support local DR of protected servers. They are often a gateway to a full DRaaS solution.
 * Firewall- and Security appliances: computer appliances that are designed to protect computer networks from unwanted traffic.
 * IIoT and MES Gateway appliances: Computer appliances that are designed to translate data bidirectionally between control systems and enterprise systems. Proprietary, embedded, firmware applications running on the appliance use point-to-point connections to translate data between field devices in their native automation protocols and MES systems through their APIs, ODBC, or RESTful interfaces.
 * Anti-spam appliances: for e-mail spam
 * Software appliances: a software application that might be combined with just enough operating system (JeOS) for it to run on industry standard hardware or in a virtual machine. In essence, the software distribution or the firmware that is running a computer appliance.
 * Virtual machine appliances: consist of a "hypervisor style" embedded operating system running on appliance hardware. The hypervisor layer is matched to the hardware of the appliance, and cannot be varied by the customer, but the customer may load other operating systems and applications onto the appliance in the form of virtual machines.

Consumer appliances
Aside from its deployment within data centers, many computer appliances are directly used by the general public. These include:


 * Digital video recorder
 * Residential gateway
 * Network-attached storage (NAS)
 * Video game console

Consumer uses stress the need for an appliance to have easy installation, configuration, and operation, with little or no technical knowledge being necessary.

Appliances in industrial automation
The world of industrial automation has been rich in appliances. These appliances have been hardened to withstand temperature and vibration extremes. These appliances are also highly configurable, enabling customization to meet a wide variety of applications. The key benefits of an appliance in automation are:
 * 1) Reduced downtime - a failed appliance is typically replaced with a COTS "commercial off-the-shelf" replacement and its task is quickly and easily reloaded from a backup.
 * 2) Highly scalable - appliances are typically targeted solutions for an area of a plant or process.  As the requirements change, scalability is achieved through the installation of another appliance.  Automation concepts are easily replicated throughout the enterprise by standardizing on appliances to perform the needed tasks, as opposed to the development of custom automation schemes for each task.
 * 3) Low TCO (total cost of ownership) - appliances are developed, tested and supported by automation product vendors and undergo a much broader level of quality testing than custom designed automation solutions.  The use of appliances in automation reduce the level of testing needed in each individual application.
 * 4) Reduced design time - appliances perform specific functions and although they are highly configurable, they are typically self documenting.  This enables appliance based solutions to be transferred from engineer to engineer with minimal need for training and documentation.

Types of automation appliances:
 * 1) PLC (programmable logic controller) - Programmable logic controllers are appliances that are typically used for discrete control and offer a wide range of Input and Output options.  They are configured through standardized programming languages such as IEC-1131.
 * 2) SLC (single loop controller) - Single loop controllers are appliances that monitor an input variable and effect change on a control output (manipulated variable) to hold the input variable to a setpoint.
 * 3) PAC (programmable automation controller) - Programmable automation controllers are appliances that embody properties of both PLCs and SLCs enabling the integration of both analog and discrete control.
 * 4) Universal gateway - A universal gateway appliance has the ability to communicate with a variety of devices through their respective communication protocols, and will affect data transactions between them.  This in increasingly important as manufacturing strives to improve agility, quality, production rates, production costs and reduce downtime through enhanced M2M (machine to machine) communications.
 * 5) EATMs (Enterprise Appliance Transaction Modules) - Enterprise appliance transaction modules are appliances that affect data transactions from plant floor automation systems to enterprise business systems.  They communicate to plant floor equipment through various vendor automation protocols, and communicate to business systems through database communication protocols such as JMS (Java Message Service) and SQL (Structured Query Language).

Internal structure
There are several design patterns adopted by computer appliance vendors, a few of which are shown below. Since the whole concept of an appliance rests on keeping such implementation details away from the end user, it is difficult to match these patterns to specific appliances, particularly since they can and do change without affecting external capabilities or performance.
 * 1) Special chip  - the vendor builds an ASIC, without any separate "software" or operating system.  The appliance has a limited interface, usually terminal console or web-based, to allow some basic configuration by the IT staff.  The manufacturer often provides some way of accessing deeper configuration mechanisms. Azul Systems' Vega 3 Java Compute Appliance is an example; special hardware modifications to the chip enable Java application scaling.
 * 2) Special software kernel  - the vendor uses or creates a general-purpose computer, and designs a new operating system that integrates the application into the operating system. Cisco's IOS is an example; the Unix-like operating system has firewall functions and network/firewall configuration commands built into it. Sometimes, the device is also sealed, so the consumer has no access to reinstall the operating system or replace it with another operating system. The consumer may also be restricted to a small group of configuration commands, while the more detailed and lower level functions of the operating system are only available to the vendor. The more this "locked down" approach is carried out, the closer this type of device comes to appearing like an ASIC device.
 * 3) Specialized application  - off-the-shelf computers and operating systems are used, but the user interface and "box" are designed so the user cannot access anything on the computer, except for the application interface that the vendor has created. Since the underlying computing architecture is locked down and essentially invisible, it becomes difficult to discern that the device really functions on top of general purpose hardware and operating systems. Linux, and BSD to a lesser degree, has become the operating system of choice for this type of appliance. Recently the term software appliance has also been used to describe such a pre-packaged, black-box combination.
 * 4) Virtual appliance - here the hardware itself has disappeared entirely and become a so-called virtual appliance (also known as a virtual software appliance) using any one of a number of virtual machine technologies. Within this virtual machine is essentially the same stack of software plus the operating system as in the "specialized application" alternative.

Sometimes, these techniques are mixed. For example, a VPN appliance might contain a limited access software firewall running on Linux, with an encryption ASIC to speed up VPN access.

Some computer appliances use solid state storage, while others use a hard drive to load an operating system. Again, the two methods might be mixed—an ASIC print server might allow an optional hard drive for job queueing, or a Linux-based device may encode Linux in firmware, so that a hard drive is not needed to load the operating system.