The following are the terms and tools within the overall principles described above that successful DevOps engineers need to know
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 availability
Low Cost Software
Infrastructure as a Service (IaaS)
infrastructure as a service (IaaS) vendors provide 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 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 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) enable 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 simple frameworks.
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 meets 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
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.
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
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 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 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 (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