A DevOps Glossary

Defining the Cloud

Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes the availability


Resource Pooling

Measured Service

Rapid Elasticity


Common Characteristics:

Massive Scale

Resilient Computing

Homogeneity

Geographic Distribution

Virtualization

Service Orientation

Low-Cost Software

Advanced Security


Infrastructure as a Service (IaaS)

infrastructure as a service (IaaS) vendors provides computing resources to customers via a public connection over the Internet in a virtualized environment. 

These resources include storage, bandwidth, virtual servers, load balancers, network connections, and IP addresses.

IaaS is the delivery of technology infrastructure as an on-demand scalable service

Usually billed based on usage

Usually, a multi-tenant virtualized environment

Can be coupled with Managed Services for OS and application support

Traditional managed hosting is a form of web hosting where a user chooses to lease the entire server(s) housed in an off-site data center.

Term based contracts based on projected resource requirements

Examples of vendors and tools: AWS, GCP, Azure, IBM SoftLayer, Digital Ocean


Platform as a Service (PaaS)

Platform as a service (PaaS) enables developers to build applications and services on a cloud-based platform. PaaS offerings may require little to no client-side hosting expertise and include preconfigured features in a simple framework. 

PaaS provides all of the facilities required to support the complete life cycle of building and delivering web applications and services entirely from the Internet.

Typically applications must be developed with a particular platform in mind

Multi-tenant environments

Highly scalable multi-tier architecture

Examples of vendors and tools: Heroku, Google App Engine, AWS Elastic Beanstalk


Software as a Service? (SaaS)

If you’re familiar with Google and Facebook, you’ve already been exposed to software as a service (SaaS). These cloud-hosted software applications have multiple uses for both individuals or organizations such as instant messaging, email, performance monitoring, accounting, and communications, and the tools can easily be accessed online. As opposed to purchasing traditional software applications that include licensing limitations, SaaS is subscription-based and applications are used online and hosted in the cloud.

SaaS is a software delivery methodology that provides licensed multi-tenant access to software and its functions remotely as a Web-based service.

Usually billed based on usage

Usually multi-tenant environment

Highly scalable architecture

The ASP model concentrated on providing an organization with the ability to move certain application processing duties to leased third-party managed servers.

ASPs were not necessarily concerned about providing shared services to multiple tenants, but rather hosting a dedicated application on behalf of the customer.

Most ASPs did not possess the required amount of application and business knowledge regarding the applications they were running.


Integration and Delivery

Continuous Integration (CI) – Developers integrate code into a shared repository multiple times a day and each isolated change to the code is tested immediately in order to detect and prevent integration problems.

Examples of vendors and tools: Jenkins, Teamcity, TravisCI, CircleCI


Continuous Delivery (CD) – As an extension of CI and the next step in incremental software delivery, continuous delivery (CD) ensures that every version of the code that is tested in the CI repository can be released at any moment.

Examples of vendors and tools: Jenkins, Teamcity, TravisCI, Electric Cloud, Go, Codeship, AWS CodeDeploy


Continuous Deployment – Continuous deployment can be thought of as an extension of continuous integration, aiming to have a new code deployed in production to be used by live users. Supported by CI, when tests meet the release criteria, it is released immediately.


Configuration Management (CM)

In a nutshell, the process of maintaining up-to-date, detailed records of hardware and software — including versions, requirements, network addresses, and design and operational information — is known as configuration management (CM). You can use CM tools such as Chef, Puppet, or Ansible to aid the process. You can also use Bash and Python to build your own configuration management automation.

Examples of vendors and tools: Chef, Puppet, Ansible, Saltstack, Vagrant, CFEngine


Resource Orchestration: When it comes to micro-services, service-oriented architecture, converged infrastructures, virtualization, and provisioning, the coordination, and integration between computer systems is known as orchestration. By leveraging defined automated workflows, orchestration makes sure that business needs are aligned with your IT infrastructure resources.


Containers

Linux containers are lightweight virtualization components that run isolated application workloads. They run their own processes, file systems, and network stacks, which are all virtualized using the root operating system (OS) running on the hardware.

Examples of vendors and related tools: Docker, CoreOs, Kubernetes, Mesos, ElasticBox


Source (Version) Control

Version control includes practices and tools that help R&D organizations maintain and control changes within their source code repository. R&D members use source control tools to document and track system configuration files as well.

Examples of vendors and tools: GitHub, Bitbucket, JFrog, Artifactory


Bug Tracking

A bug tracker is a system that aggregates and reports software bugs and defects. It helps R&D organizations with task management and is part of the consistent feedback loop that the DevOps methodology requires.

Examples of vendors and tools: BUGtrack, JIRA, GitHub


Test Automation

Test automation facilitates test engineer work by supporting multiple tests that run continuously. It enhances test coverage while supporting efficient release cycles. For example, test automation tools help manage, execute, and measure functional tests and load tests.

Examples of vendors and tools: Selenium, Cucumber, JUnit, TestNG, JMeter


Unit Test – Unit testing is a process that allows testers to examine small parts of an application, such as a specific code or module. This test is usually automated and reused in order to support continuous testing and integration.


Monitoring

Monitoring is a primary element of IT performance management and is one of the most important aspects when operating online services. Monitoring tools are essential and provide crucial information that helps to ensure service robustness in terms of availability, security, and performance.


Application Performance Monitoring (APM) – APM allows you to automatically detect and be alerted about hotspots in your application framework that include the application and database layers.

Examples of vendors and tools: New Relic, AppDynamics, DataDog


Infrastructure Monitoring – Tools in this category automatically detect and alert about degradations in underlying physical or virtual resource performance and availability.

Examples of vendors and tools: AWS CloudWatch, Nagios, Zabbix, Sensu, Icynga


Log Management

Log management (or log analytics) is the practice of dealing with large volumes of computer-generated messages. They can be operational messages (e.g., when tracking service performance or security) or for BI purposes (e.g., when tracking online user behavior).


Vendors and tools: Logz.io (ELK), Splunk, Sumo Logic

Recent Comments

No comments

Leave a Comment