Explore and discover our latest tutorials
Tech Articles from your friends at Oracle and the developer community.
What is DevOps? Simply put, DevOps is a combination of two functions that are typically treated separately: development and operations. That definition of DevOps is the what. The why is even easier. Standardized development methodology, clear communication, and documented processes supported by a standards-based, proven middleware platform improve application development and management cycles, bring agility, and provide greater availability and security to your IT infrastructure. Clearly, DevOps is about connecting people, products, and processes. Ultimately, DevOps is about connecting IT to business.
The infrastructure necessary to bring together development, from sharing assets to writing code and algorithms for enterprise applications that may leverage advanced capabilities such as artificial intelligence/machine learning, containers, and serverless functions. In addition, testing, archiving, bug-tracking, and other critical tasks are handled in the development phase, all on the road to launch. Some common tools used for development: Git for checking-in code, Github or evolving Bitbucket for managing code repositories.
Once an application is deployed, the operations side takes over with a focus on ensuring the business challenges of cloud platforms are met. Issues such as user security, database management, scalability for production workloads, and application patching are all handled in this function. Some common tools used for operations: Terraform, Ansible, Puppet and Chef for managing infrastructure and configurations.
In many organizations, those two functions exist in different silos. DevOps brings development and operations together to create a unified infrastructure that maximizes productivity. In order to support both sides of the equation, the infrastructure must be agile, flexible, and scalable, with inputs and integrations regarding security and quality assurance shared between developers and operators/systems administrators.
The result is an efficient model that maximizes resources while working with the increasingly fast pace of the software development life cycle, something that has become harder and harder to support under the traditional software development model. Ultimately, a strong DevOps model enables businesses to fix problems, scale user growth, and better serve customers with a path to developing and iterating on software products faster.
In the past twenty years, business has gradually shifted to integrate software into nearly every element —finance, entertainment, consumer usage, supply chain, and everything else. With each of these functions, clear integration of software and data have emerged, and as that integration becomes more prevalent, the stakes in performance and reliability become higher. A single bug or outage in availability could affect countless users, and possible interrupt millions in revenue.
DevOps and DevSecOps provide a means to address the need of the software development life cycle (SDLC) to provide continuous integration and continuous delivery (CI/CD). Integrating development, operations, and security delivers practical benefits to resources while also enabling faster communication and collaboration across the lifecycle. The ability to build a bridge between these groups—all while shortening the overall software development life cycle—gives DevOps meaning and value, regardless of industry.
Adopting DevOps to support the entire software development life cycle—with an emphasis on agility and efficiency regardless of function provides a number of benefits:
Rapid delivery of software is essential for running your applications in the cloud efficiently. Continuous Integration (CI) refers to frequently merging new software using a single line of code. Continuous delivery refers to the production of packaged software out of code in frequent cycles. Likewise, Continuous deployment refers to the deployment of the packaged software to a runtime platform in periodic cycles. The advent of CI/CD has revamped the traditional application development process drastically. The CI/CD-based process involves DevOps—the paradigm shift that brings developers, QA engineers, and operations managers together on one platform.
But can the CI/CD-based application development process be improved even further? The most modern approach is to use containerization to bring even more flexibility and benefits.
The most critical step for continuous delivery of software is continuous integration (CI). CI is a development practice where developers commit their code changes (usually small and incremental) to a centralized source repository, which kicks off a set of automated builds and tests. This repository allows developers to capture the bugs early and automatically before passing them on to production. Continuous Integration pipeline usually involves a series of steps, starting from code commit to performing basic automated linting/static analysis, capturing dependencies, and finally building the software and performing some basic unit tests before creating a build artifact. Source code management systems like Github, Gitlab, etc., offer webhooks integration to which CI tools like Jenkins can subscribe to start running automated builds and tests after each code check-in.
Continuous delivery picks up where our continuous integration story ends. CD automates the delivery of applications to cloud infrastructure environments. Most teams work with multiple development and testing environments other than the primary production server. Continuous delivery will ensure an automated way to push the new and tested code changes across all cloud environments.
Developers are involved with more than just the coding step of the CI/CD software development lifecycle. Using experience, intuition, and previous successes, developers help oversee the CI/CD cycle holistically. Because the particulars of DevOps can depend on the technology stack used, be sure to visit DevOps and Developer to consider which of Oracle’s offerings will work best for your use case.