DevOps is defined as a software engineering methodology that aims to integrate the work of development and operations teams by facilitating a culture of collaboration and shared responsibility. It includes Continuous Integration and Continuous Deployment (CI/CD). Continuous integration allows users to plan, code, build, and test code frequently, continuously integrating fixes for errors. Continuous Development includes both manual (Continuous Delivery) and automatic (Continuous Deployment) processes.
First of all, there are several differences between containers and Virtual Machines (VMs). Containers have their own single operating system, while VMs have individual operating systems. As a result, containers have faster boot times and are lightweight and portable, whereas VMs have higher resource utilization, greater disk space requirements, and longer boot times. The process of automatically deploying and managing containers is known as container orchestration, and Kubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications. This orchestration simplifies deployment to a large extent and provides self-healing and auto-scaling capabilities.
Oracle Container Engine for Kubernetes (OKE) is a fully managed, scalable, and highly available Kubernetes service based on the open-source Kubernetes system. It offers various features for developers, such as one-click cluster creation, CLI/API support, and the ability to run on ARM-based and GPU-based instances. OKE provides auto-scaling support, automatic Kubernetes cluster upgrades, and self-healing cluster nodes. A node refers to a machine on which Kubernetes is installed, also known as a worker node, where containers are launched by Kubernetes. A group of nodes is called a node pool. A pod is a group of one or more containers with shared storage and network resources, and it is defined by a specification file that determines how the containers should run inside the pod.
Container Registry is a highly available Docker container registry service that stores Docker images in private or public repositories. It runs has a fully managed service on Oracle Cloud Infrastructure. Users can utilize the container registry as both a private and public registry. Oracle Cloud Infrastructure Registry (OCIR) is used to address various issues, such as the difficulty faced by development and operations teams in maintaining a consistent set of images for their containerized application, including Docker images. Users can use the container registry as a private Docker registry for internal use, enabling them to push and pull Docker images from the container registry using the standard Docker CLI. Alternatively, users can use the container registry as a public Docker registry, allowing any user with internet access to pull images from public repositories within the registry. User can push images to the registry and deploy them globally in any region of their choosing.
Functions is a fully managed, multi-tenant, highly scalable, on-demand, and serverless service. It offers various features:
- Functions serve as a service, allowing users to write and execute code.
- Functions run inside a container.
- Functions are powered by the open-source engine called F(n) project.
- Functions follow an event-driven architecture.
The process of utilizing Functions involves the following steps: Users upload their code and configuration, which are packaged as a container image and stored in the OCI Registry. They then set up trigger actions, which can be invoked using CLI, API, or OCI events. Oracle Functions executes the code in response to the trigger or invocation, allowing users to invoke other integrations with OCI services or external systems. Users only pay for the code execution time. Functions can be triggered directly or through OCI events, and they have integrations with other OCI services such as registry, logging, network, identity, etc.
Oracle Resource Manager (ORM) automates the provisioning process of OCI resources. It simplifies the installation, configuration, and management of resources through the infrastructure-as-code model. ORM can be considered as a managed Terraform, which enables infrastructure-as-code practices, improves team collaboration, and facilitates automation. ORM provides a console UI for a user-friendly experience.
Resource Manager allow user to automate the provisioning of OCI resources using Terraform. First, the user uploads a bundled Terraform configuration file, which contains the actual Terraform code organized withing a folder. This file can be stored in a storage bucket, template, compartment, folder, Git, or a .zip file. A stack is then created, defining a distinct set of cloud resources within the compartment. A job refers to a set of Terraform commands that can be executed against a stack. After performing a Terraform action, the refreshed Terraform state file is securely managed by Resource Manager and subsequently updated for each Terraform action coordinated by Resource Manager. By managing the Terraform state file, Resource Manager ensures a single source of truth for the current state of the infrastructure.