DigitalOcean Community Glossary
Ansible is a configuration management system used to set up and manage infrastructure and applications in varied environments. It allows users to deploy and update applications in approachable language, using SSH, without needing to install an agent on a remote system.
The Apache HTTP Server is an open-source web server popular for its flexibility, power, and widespread support. It is extensible through a dynamically loadable module system and can process a large number of interpreted languages without connecting out to separate software.
An application programming interface (API) is a set of routines, definitions, and protocols that allow developers to build application software. APIs abstract implementation and expose only necessary objects and actions to the developer. Within cloud computing, developers use APIs to manage servers and other resources through conventional HTTP requests.
- A complete list of resources on APIs.
- How to get started with the DigitalOcean API.
- The DigitalOcean API resource homepage.
- The DigitalOcean API documentation library.
Backups are copies or archives of data used for recovery after loss, deletion, or corruption. Developers can create backups in a number of ways, including manual implementation, cloud hosting services, or backup programs (such as Bacula).
- A complete list of resources on backups.
- An introduction to web application backups in a production context.
Big data is a blanket term for the non-traditional strategies and technologies needed to organize, process, and gather insights from large datasets. Many users and organizations are turning to big data for certain types of work loads, and using it to supplement their existing analysis and business tools. Tools that exist in this space offer different options for interpolating data into a system, storing it, analyzing it, and working with it through visualizations.
A block storage service functions as a hard drive provided over the network. Developers can use block storage services to store files, combine multiple devices into a RAID array, or configure a database to write directly to the block storage device. Block storage offers a different set of capacities than object storage, which allows developers to store unstructured data using an HTTP API. Developers working on complex applications often take advantage of both options.
- A complete list of resources on block storage.
- An introduction to block storage and to the differences between block and object storage.
A Boolean is a data type which has one of only two possible values: true or false. Booleans represent the truth values that are associated with the logic branch of mathematics, which informs algorithms in computer science. In programming, Booleans are used to make comparisons and to control the flow of a program.
C is an imperative, high-level programming language known for its modularity, static typing, variety of data types and operators, recursion, and structured approach to tasks. Unlike many other early programming languages, C is machine independent and highly portable. For these reasons, developers have used it to build a variety of programs and systems, including the Linux kernel.
Caching refers to the process by which reusable responses are stored to make subsequent requests faster.
- A complete list of resources on caching.
- An introduction to web caching terminology, HTTP headers, and caching strategies.
A CDN (short for Content Delivery Network) is a distributed network of proxy servers and their data centers. The purpose of a CDN is to distribute content to end-users through geographically nearby intermediary servers, thereby ensuring high performance and minimal latency.
Chef is a configuration management tool that automates infrastructure as code. It uses Ruby and groups configuration details into what it calls “recipes.”
Continuous integration focuses on integrating work from individual developers into a main repository multiple times a day to catch integration bugs early and accelerate collaborative development. Continuous delivery is concerned with reducing friction in the deployment or release process, automating the steps required to deploy a build so that code can be released safely at any time. Continuous deployment takes this one step further by automatically deploying each time a code change is made.
- A complete list of resources on CI/CD.
- A general introduction to CI/CD concepts, and more about various open-source CI/CD projects.
Clustered computing is the practice of pooling the resources of multiple machines and managing their collective capabilities to complete tasks. Developers can use clusters to increase processing power and storage.
- A complete list of resources on clustering.
- An introduction to configuring a Galera cluster with MariaDB 10.1 on Ubuntu 16.04 servers.
A container is an isolated user-space instance that abstracts applications from both the underlying operating system and other applications. Containers take advantage of the host operating system by using its kernel and resources, which are abstracted into layers and shared between containers. In this way, containers differ from virtual machines: they run their own init processes, filesystems, and network stacks, making them quicker to start and more lightweight than virtual machines.
Content Management System
A content management system is an application used to support the creation and revision of web content. Popular CMS tools include WordPress, Joomla, and Drupal.
- A complete list of resources on CMS topics and tools.
- An introduction to installing WordPress with LAMP on Ubuntu 16.04.
Configuration management refers to the processes by which administrators and operations teams control large numbers of servers. Automation is at the heart of most configuration management tools, which allow developers to quickly provision new servers, recover from critical events, manage version control, and replicate environments. Popular CM tools include Puppet, Ansible, Chef, and Salt.
- A complete list of resources on CM topics and tools.
- An introduction to configuration management and popular CM tools.
A control panel allows users to manage system settings and features in a single place. The nature and function of a control panel depends on its environment: in web hosting, for example, users can navigate the control panel offered by their web hosting provider for an external or global view of their servers and resources. Users can also install control panels on these servers to manage their internal aspects.
- A complete list of resources on control panels.
- An introduction to installing Webmin on Ubuntu 16.04.
Data analysis refers to activity, across a range of fields, that investigates the structure of data and uses it to identify patterns and possible solutions to problems. Within this domain, data science draws on methodologies from statistics, mathematics, and computer science to both analyze events using data and predict possible outcomes. One important trend within data science is machine learning, which uses algorithmic data inputs and statistical analysis to train computers to output values within a certain range. In this way, machine learning enables practices such as automated decision-making.
Deployment refers to the process of readying something for use . Depending on what is being deployed (software system, hardware, etc.), this process can include installing scripts or commands for software execution, activating executable software elements, and updating older software systems, among other things.
- A complete list of resources on deployment.
- An introduction to building a Node.js application on CentOS 7.
Development can refer to a range of programming activities and routines involved in the creation and maintenance of programs. Within software development, these activities can include writing and revising code, prototyping, researching, testing, and modifying problematic components.
- A complete list of resources on development.
Django is a high-level Python framework for developing web applications rapidly. Its core principles are scalability, re-usability, and rapid development.
Short for Document Object Model, the DOM is a cross-platform and language-independent application programming interface. Frequently used by web browsers to parse and display website content, the DOM treats an HTML, XHTML, or XML document as a tree structure where each node is an object representing a part of the document which can be manipulated programmatically.
The Domain Name System is a decentralized naming system that translates memorable and accessible domain names to numerical IP addresses within underlying network protocols. Users can establish greater control over hosted domains by managing their DNS servers, opting for caching servers, forwarding servers, authoritative-only servers, or a combination of different types.
- A complete list of resources on DNS topics and issues.
- An introduction to managing DNS resources and how to set up a hostname with DigitalOcean.
Docker is a popular containerization tool used to provide software applications with a filesystem that contains everything they need to run. Using Docker containers ensures that the software will behave the same way, regardless of where it is deployed, because its run-time environment is consistent.
Drupal is a popular content management system (CMS) used to run some of the largest blogs and websites across the internet. Due to the stability of the base, the adaptability of the platform, and its active community, Drupal remains a popular choice among users after more than a decade on the scene.
Elasticsearch is an open-source full-text search and analytics engine used to store, search, and analyze data.
Fedora is an operating system based on the Linux kernel and GNU programs. It is maintained by the Fedora Project and sponsored by Red Hat. Fedora’s popularity stems from both its upstream relationship with Red Hat Enterprise Linux and its community of developers, who ensure that application versions stay current.
A firewall is a network-based service that blocks all unpermitted traffic, following a set of configurable rules.
- A complete list of resources on firewalls.
- An introduction to DigitalOcean cloud firewalls, a discussion of firewall fundamentals, and a guide to creating your first DigitalOcean cloud firewall.
Free software is any program released with a license approved by the Free Software Foundation which allows users to view, modify, and share the source code without risk of legal repercussions. Similarly to the open-source movement, the goal behind free software is to promote and support community-driven development methods and to curb the spread of proprietary software licenses.
- For an in-depth explanation of the free software movement, read DigitalOcean’s tutorial on The Difference Between Free and Open-Source Software.
- A complete list of resources on Ghost.
- An introduction to installing and configuring Ghost on Ubuntu 16.04.
Git is a widely-used version control system, originally developed by Linus Torvalds to track changes in the Linux kernel. In Git, every developer’s environment contains a copy of the repository with a full history of changes, allowing for nonlinear development workflows.
- A complete list of resources on Git.
- An introductory series on working with open-source projects through Git.
Go (or GoLang) is a modern programming language originally developed by Google that uses high-level syntax similar to scripting languages. It is popular for its minimal syntax and straightforward handling of concurrency, as well as for the ease it provides in building native binaries on foreign platforms.
Short for GNU GRand Unified Bootloader, GRUB is a second-stage boot loader that loads and transfers program execution to an operating system during the boot process. Originally developed as part of the GNU Project, it is widely used as the boot loader for most Linux distributions.
High availability describes the quality of a system or component that assures a high level of operational performance over a given period of time. Scenarios where high availability matters include decreasing downtime and eliminating single points of failure.
- A complete list of resources on high availability.
- An introduction to high availability and strategies for minimizing downtime.
Infrastructure as a Service is a category of cloud computing in which infrastructure is provided as a product over the Internet. Users provision processing, storage, networking, and other computing tools, which can include operating systems and applications. Though an IaaS user does not manage the underlying infrastructure, they do have control over operating systems, storage, deployed applications, and certain networking components (such as firewalls).
- An Introduction to Cloud Hosting.
- An Introduction to DigitalOcean Spaces.
- An Introduction to DigitalOcean Cloud Firewalls.
Integrated Development Environment
An integrated development environment (IDE) is a software application which provides a comprehensive set of resources (such as a text editor, debugger, analysis tools, a compiler, and/or an interpreter) to aid computer programmers with software development. The boundary between an IDE and other parts of the broader software development environment is fuzzy, and the features offered by IDEs can vary greatly between programs.
IPv6 is the most recent version of the Internet Protocol, which identifies computers on networks and routes traffic across the Internet. IPv6 addresses provide more address space than their IPv4 counterparts, and are part of an effort to sustain the growth and deployment of Internet-ready devices.
Java is a concurrent, class-based, object-oriented programming language designed to run with as few implementation dependencies as possible. Developers use Java because of its robust community of programmers, relative stability, and ubiquity.
Joomla is a widely-used, highly customizable, free and open-source web content management system written in PHP.
A kernel is a computer program that mediates access to system resources. As the core component of an operating system, it's responsible for enabling multiple applications to share hardware resources by controlling access to CPU, memory, disk I/O, and networking.
Kubernetes is a cloud platform for automating the deployment, scaling, and management of containerized applications.
A LAMP Stack is a set of software that can be used to create dynamic websites and web applications. LAMP is an acronym for the software that comprises the stack: the Linux operating system, the Apache HTTP Server, the MySQL relational database management system, and the PHP programming language. Note that some components are interchangeable, and a LAMP Stack may include MariaDB instead of MySQL, or Perl or Python instead of PHP.
- A complete list of resources on LAMP Stacks.
- For a basic introduction to LAMP Stacks, check out this tutorial on how to assemble a LAMP Stack on Ubuntu 16.04.
LEMP (also known as LNMP) is a software stack used for creating dynamic websites and web applications. It consists of the Linux operating system, the (E)Nginx web server, the MySQL relational database management system, and the PHP programming language. Like LAMP Stacks, some of these components are interchangeable with others.
- A complete list of resources on LEMP Stacks.
- For a basic introduction LEMP stacks, check out this tutorial on how to assemble a LEMP Stack on Ubuntu 16.04.
Let’s Encrypt is a certificate authority that provides free TLS/SSL certificates. Let’s Encrypt focuses on simplicity and ease-of-use, with the ultimate goal of making encrypted connections to the World Wide Web ubiquitous.
Load balancing refers to the distribution of work among a pool of homogeneous backend servers in order to optimize the use of computing resources and prevent the overload of any single resource.
- A complete list of resources on load balancing.
- For a basic introduction to load balancing-related concepts and practices, check out our article “What is Load Balancing?”.
Logging refers to the recording of all the events that occur in a computer’s operating system. This information is usually stored for review in the system’s log file.
Machine learning is a subfield of artificial intelligence focused on understanding the structure of data. By training computers to use data inputs and statistical analysis to output values that fall within a specific range, machine learning research aims to build models from sample data in order to automate decision-making processes.
MariaDB is a free and open-source relational database management system. MariaDB was originally built as a fork of MySQL, and is thus highly compatible with its source code.
MEAN is a free and open-source software stack for creating dynamic websites and web applications. The software stack typically includes MongoDB, Express, Node.js, and AngularJS.
Messaging is the act of passing content or controls between users, computers, programs, and/or components of a single system. Message queuing refers to the management of messages between software users or components for a given process.
MongoDB is a free and open-source document-oriented database platform which uses JSON-like documents with schemas.
- A complete list of resources on MongoDB.
- For a general introduction to working with MongoDB, check out this tutorial on How to Install and Secure MongoDB on Ubuntu 16.04.
MySQL is an open-source relational database management system. An incredibly flexible and powerful program, MySQL is used to store and retrieve data for a wide variety of popular applications.
Nginx (pronounced like ‘engine-x’) is an open-source web server capable of reverse proxying, load balancing, and more. Nginx is one of the most popular web servers in the world and is used to host some of the largest and most highly-trafficked sites on the internet.
A NoSQL database is any non-relational database environment that allows for the fast organization and analysis of disparate and high-volume data types. By using an unstructured (or structured-on-the-go) approach, NoSQL databases aim to eliminate the limitations of strict relations and offer many different types of ways to keep and work with the data for specific use cases (e.g. full-text document storage).
- A complete list of resources relating to NoSQL.
- Our tutorial, A Comparison Of NoSQL Database Management Systems And Models, can be helpful for understanding the differences between various kinds of NoSQL databases.
Object storage is a data storage architecture that manages data as objects (unstructured blobs of data and metadata) using an HTTP API, instead of as blocks or a file hierarchy.
- A complete list of resources on Object Storage.
- For a basic introduction to object storage, check out DigitalOcean’s comparison between Object Storage vs. Block Storage Services.
Open-source software is any program released with a license approved by the Open Source Initiative which allows users to view, modify, and share the source code without risk of legal repercussions. Similarly to the free software movement, the goal behind open-source software is to promote and support community-driven software development methods.
- A complete list of resources related to open-source concepts.
- For an in-depth explanation of open-source practices, read DigitalOcean’s tutorial on The Difference Between Free and Open-Source Software.
An operating system is system software that manages hardware and software resources while providing common services for computer programs. Aside from firmware, all computer programs require an operating system to function.
Platform as a Service is a category of cloud computing in which developers can provision deployment platforms to build applications. The underlying infrastructure of each platform is abstracted, meaning that users can expect pre-configured runtime environments and predictable scaling, storage, and security options. They also have access to languages, libraries, tools, and services for application development, as well as a certain degree of control over configuration settings; however, they do not have the ability to modify the underlying operating system or network settings.
Perl is a family of programming languages, popular for their extreme versatility and their use as a glue language between software components.
PHP is a scripting language designed primarily for web development, but it’s also become widely-used as a general-purpose programming language.
PostgreSQL is a free and open-source object-relational database management system which emphasizes extensibility and standards compliance.
- A complete list of resources relating to PostgreSQL.
- A basic introduction to working with PostgreSQL.
Python is a high-level, interpreted programming language which prioritizes the clarity and readability of code.
Redis is a scalable, in-memory key-value data store which excels at caching. A non-relational database, Redis known for its flexibility, performance, and wide language support.
A reverse proxy is a type of proxy server that handles and redistributes client requests to a server. In addition to balancing workloads between servers, reverse proxy servers can provide services not necessarily offered by application servers, such as caching, compression, and SSL encryption.
- Understanding Nginx HTTP Proxying, Load Balancing, Buffering, and Caching.
- How To Use Apache as a Reverse Proxy with mod_proxy on Ubuntu 16.04.
Ruby is a dynamic, reflective, object-oriented, general-purpose programming language which supports multiple programming paradigms. Ruby was designed to be very programmer-friendly and boost productivity, and includes features like dynamic typing and automatic memory management.
Ruby on Rails
Ruby on Rails (also known as RoR, or simply as Rails) is a server side model-view-controller web application framework written in Ruby. Rails includes tools that make common development tasks easier, like scaffolding which can automatically construct some of the models and views needed for a basic website.
Software as a Service is a category of cloud computing in which software is provided as a product over the Internet. With an SaaS, users have access to software provided by third party vendors, though they are not in charge of the production, maintenance, or modification of that software.
Scaling is the process of adapting a server setup to accommodate for growth. Methods for scaling can be broadly categorized as either horizontal or vertical. Horizontal scaling is usually done by harnessing additional servers to fulfill the workload of a single web application, while vertical scaling typically involves adding resources (like CPUs or memory) to a single server as a means of improving efficiency.
Security involves the protection of a computer system from theft or damage of its hardware, software, or data. Typical security tools include firewalls, VPNs, SSH, and SSL certificates.
Security-Enhanced Linux is a set of kernel modifications and tools in user space that provide enhanced access control for Linux distributions. It is built into the Linux kernel and enabled by default on Fedora, CentOS, and RHEL distributions, among others.
A server is a computer program or device that provides a network or data service for other programs or devices, known as clients. Servers can offer a variety of functions, ranging from website and web application hosting, to providing shared disk access, printer connections, and database services. The word “server” can refer to either a physical machine or to the services being provided to clients.
Similar to Apache’s virtual hosts, server blocks are websites or web applications that are hosted on the same Nginx server, but are otherwise distinct.
Sinatra is a free and open-source web application library and domain-specific language written in Ruby, designed for the speedy creation of web applications.
A shell is a user interface used to access services provided by a computer’s operating system. Shells are usually either command-line interfaces (CLIs) or graphical user interfaces (GUIs). The name comes from the fact that the interface represents the outermost layer (or shell) of an operating system.
Storage includes any hardware, software, or computer systems that allow for the retention of data and information. There are many different types of storage and architectures for managing stored data, such as file systems, block storage, and object storage.
Systemd is an init system used in many Linux distributions to boot user space and manage system processes. In addition to managing the booting process,
systemd controls numerous system resources and logging functions.
- Systemd Essentials: Working with Services, Units, and the Journal.
- Understanding Systemd Units and Unit Files.
Version Control Software
Version control software (also known as VCS) includes any revision control system used by developers to maintain current and historical versions of source code, documentation, and web pages.
Virtual hosts are websites or web applications that run on the same Apache server but are otherwise completely separate. The concept of virtual hosts on an Apache server is analogous to that of server blocks on an Nginx server.
A virtual private cloud is a configurable pool of resources, provisioned within a cloud hosting environment, that are isolated to and managed by a single individual or organization. Within a VPC, users can often create private subnets, configure routing tables, network gateways, and security settings, and connect securely to corporate datacenters and other VPCs.
A VPN, or virtual private network, is a means of establishing secure connections between remote computers. A VPN presents its connection as if it were a local private network, allowing for secure communications between servers.
WordPress is a free and open-source web content management system based on PHP and MySQL. The most popular CMS in the world, WordPress boasts an expansive library of plugins and a large, active community of developers.