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.
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).
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 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 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.
Cloud computing is a model for sharing computer resources via the internet in which users can run their own workloads using scalable, abstracted resources. Cloud computing services typically fall into one of three categories: Infrastructure as a Services (IaaS), Platform as a Service (PaaS), or Software as a Service (SaaS).
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.
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 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.
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 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.
The central processing unit, more commonly known as a CPU, is a vital component of a computer system. Often referred to as the “brain” of a computer, the CPU receives instructions provided by a software program or connected hardware and performs the mathematical and logical operations required to produce the desired output.
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.
A Distributed Denial of Service (or DDoS) attack is a malicious attempt to deny traffic to a targeted server by flooding it with spurious requests. The attacker accomplishes this by infecting a fleet of servers and internet-connected devices (a botnet) with malware. This botnet is then instructed by the attacker to repeatedly send requests to the targeted server, overwhelming its available resources. This results in a denial of service to normal traffic.
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.
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.
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.
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.
DRY, standing for do not repeat yourself, is a principle of software development that aims at reducing the repetition of patterns in favor of abstractions and avoiding redundancy.
Elasticsearch is an open-source full-text search and analytics engine used to store, search, and analyze data.
Encryption encodes information for safe transmission or storage. All encryption involves an algorithmic transformation of plaintext, and can be separated into two main categories: symmetrical and asymmetrical.
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.
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.
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.
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 hypervisor is computer software, hardware, or firmware that creates, runs, and monitors virtual machines on a host machine. The hypervisor provides a virtual operating platform and manages the execution of the guest operating systems, allowing multiple instances of different operating systems to share the same hardware resources.
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).
In cloud computing, an instance refers to provisioned computing services such as virtual machines or containers. A cloud instance extends and abstracts the hardware typically associated with the services it provides, offering reliability, flexibility, and scalability for development projects.
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.
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.
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.
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.
Logical Volume Management (LVM) is a storage device management technology that gives users the power to pool and abstract the physical layout of component storage devices for more flexible administration and greater control. LVM also offers advanced features like snapshotting, striping, and mirroring.
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.
Monitoring is the process of gathering and evaluating performance data to assess a system’s behavior and attributes. This process can be broken down into three parts: gathering system data through usage metrics, analyzing these metrics, and using analysis of this data to establish alerts for particular behaviors.
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).
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.
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.
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.
Packets are the basic data units transmitted through a TCP/IP network. Originally conceived as a way to transmit data without a pre-established connection, packets make dynamic data transference possible. Data in a packet falls into two categories: control information (source and destination network addresses, sequence information, and error detection codes), and user data (the content of the message itself).
A partition is a share of a hard disk or other secondary storage device, allowing an operating system to manage data and information in each partition separately. This can be advantageous for data security, as it simplifies data backups and reduces the risk of losing data. Partitioning also provides a convenient means for storing multiple operating systems on the same drive.
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.
Public Key Infrastructure is the set of roles, policies, and procedures involved in creating and managing digital certificates and public-key encryption. There are multiple operators within the PKI umbrella: A Certificate Authority (CA) that stores, issues, and signs SSL certificates for domains; a Registration Authority (RA) that verifies the identities of hosts making requests for SSL certificates; a central directory that houses private key information for disaster recovery; and a certificate management system that oversees access to certificates.
PostgreSQL is a free and open-source object-relational database management system which emphasizes extensibility and standards compliance.
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 Read-Eval-Print Loop, or REPL, is a basic computer environment in which user inputs are read, evaluated, and results are returned to the user. Examples include command line shells and various tools provided for specific programming languages.
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.
Root—also known as the root user, root account, or superuser—is a user account on a computer system with access to all commands and files on that system. Root privileges evolved out of early UNIX systems, in which multiple users shared a single mainframe computer.
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 (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.
SFTP, which stands for SSH File Transfer Protocol or Secure File Transfer Protocol, is a protocol packaged with SSH used to transfer files between computers via an internet connection. Unlike the earlier FTP, SFTP allows users to transfer files and traverse the filesystem on both the local and remote systems over a secure connection.
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.
The most common types of sockets on a Linux machine are IP sockets and Unix sockets. An IP socket is a communication interface on a network that allows for two-way communication between two nodes. Each node is identifiable by a socket address, which includes an IP address and a port number associated with that node. A Unix socket is a communication endpoint for processes within a single-host operating system. Processes use filesystem inodes to refer to Unix sockets within the system, allowing for the transmission of data.
A solid-state drive is a non-volatile computer storage device that uses electronic circuits to store and retrieve information. Most SSD devices use flash memory, which retains data even when power is lost or removed, but some use battery-powered RAM. SSDs are known for their low access times and latency when compared to hard disk drives.
Secure Shell is a network protocol used to cryptographically secure communication to a remote server. By building a secure channel for communication on top of an unsecure connection, SSH allows users to communicate with and administer commands to remote servers. Common functions associated with SSH include remote command-line login, command execution, and configuration of services.
A stack is a set of software components that together create a complete platform for running applications or programs. Stacks differ based on the needs of the developer and include the components necessary for the task at hand. A LAMP (Linux, Apache, MySQL, PHP) or LEMP (Linux, Nginx, MySQL, PHP) stack can serve dynamic web pages and applications, while an Elastic/ELK (Elasticsearch, Logstash, Kibana) stack can collect, store, and search log files.
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.
Swap is a partition on a hard drive or a special file created in a regular file system that has been designated as a place where the operating system can temporarily store data that it can no longer hold in RAM. Swap space gives users the ability to increase the amount of information that their server can keep in its working memory.
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.
Unix is a family of multitasking, multiuser operating systems which derive from the original AT&T Unix, developed in the early 1970s. Unix’s core principles of clarity, portability, and simultaneity have led to the development of the “Unix philosophy,” which has influenced many later operating systems (such as numerous BSD and Linux distributions, as well as MacOS).
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 machine is an individual emulation of a computer system, typically achieved through the use of a hypervisor.
Volatile memory depends on power for the storage and maintenance of information, and is used to process data from open programs and applications.
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.
If you’ve enjoyed this tutorial and our broader community, consider checking out our DigitalOcean products which can also help you achieve your development goals.