// Module included in the following assemblies:
//
// * cli_reference/developer_cli_odo/understanding-odo.adoc

:_mod-docs-content-type: CONCEPT
[id="odo-core-concepts_{context}"]

= odo core concepts

`odo` abstracts Kubernetes concepts into terminology that is familiar to developers:

Application::
A typical application, developed with a link:https://www.redhat.com/en/topics/cloud-native-apps[cloud-native approach], that is used to perform a particular task.
+
Examples of _applications_ include online video streaming, online shopping, and hotel reservation systems.

Component::
A set of Kubernetes resources that can run and be deployed separately. A cloud-native application is a collection of small, independent, loosely coupled _components_.
+
Examples of _components_ include an API back-end, a web interface, and a payment back-end.

Project::
A single unit containing your source code, tests, and libraries.

Context::
A directory that contains the source code, tests, libraries, and `odo` config files for a single component.

URL::
A mechanism to expose a component for access from outside the cluster.

Storage::
Persistent storage in the cluster. It persists the data across restarts and component rebuilds.

Service::
An external application that provides additional functionality to a component.
+
Examples of _services_ include PostgreSQL, MySQL, Redis, and RabbitMQ.
+
In `{odo-title}`, services are provisioned from the OpenShift Service Catalog and must be enabled within your cluster.

devfile::
An open standard for defining containerized development environments that enables developer tools to simplify and accelerate workflows. For more information, see the documentation at link:https://devfile.io[].
+
You can connect to publicly available _devfile_ registries, or you can install a Secure Registry.