by Jurgen Hoffman (Red Hat)
OpenShift is great! Developers can quickly start development on a new project. Just log into the web console, create a new application, select a gear and start coding. When you are done implementing a feature you push to OpenShift and after a few seconds you can admire and share your work with the whole world.
But there is more to consider when working with OpenShift. What if you develop in teams? Usually applications are not directly deployed into production. How can I implement a staging process harnessing the OpenShift Infrastructure? How do I know if my changes passed an Acceptance Test or failed it? How does a test team know which features have been implemented?
The answer to these questions are usually not easy, and every company has implemented their own set of processes to address these problems. Although some Organizations have automated some of their IT Infrastructure, there are still a lot of manual processes and changes involved when it comes down to taking a particular software release from development into production. On the other hand, the business stakeholders have a high interest into a fast and efficient Release process, because every day that my feature is not in production and available to my users, is lowering my ROI.
The industry has responded to that problem by establishing a process called DevOps. DevOps is a philosophy that stresses the communication, integration and collaboration between software developers and IT operations. DevOps is focussing on the Delivery of Software. DevOps makes everybody involved in the process of releasing software responsible for the success of the delivery. It promotes an agile software development process and tries to reduce the handover delays and communication barriers of siloed teams. By making everybody responsible for a successful Software Release, there is a greater willingness to transfer configuration responsibility from IT Operations to Developers and Developers on the other hand have a better understanding of how their applications are operated in production.
Now wait a minute, isn't that what OpenShift provides? I as a developer have the possibility to change the configuration of my EAP 6 Instance. Do I have access to other parts of the Runtime Environment? Yes, but only to things that are important for my project for example which JDK Version to use or whether or not to run maven. The other complexities of the Runtime are hidden from me. The underlying Cartridges that provide the functionality are provided through the IT Operations Department. If I need access to change a certain configuration file, IT Operations can make use of the cartridge build lifecycle and decide whether they want to copy the file from my application to its destination or whether they want to merge it with other changes. OpenShift has a well defined Application Lifecycle that is easily extendable.
The cartridge System allows IT Operations to provide mocked service instances to the developer. This enables the IT Operations Department to provide the developer predefined production environments making it easy and fast to reproduce production errors in the developer environment. Wouldn't it be nice to be handed over an exact replica of the production environment configuration in case you have to troubleshoot a production problem?
Usually it is considered good practice to create a binary application release only once[1]. Then take this binary release and deploy it into your different stages. Everything that is different between the stages should only be configuration files. Adhering to this practice unfolds deployment errors early and give builds confidence that if a deployment fails, that the failure should be in the configuration and not in the binary release.
OpenShift integrates well with jenkins and maven. If you want to adhere to the above principle you can leverage jenkins to create software releases for you and release them to nexus. The OpenShifts RESTful API enables you to implement your staging process deploying only that binary release.
DevOps implementation is no longer a long, complex to implement and a long and cumbersome journey. If DevOps is a Process Description of an Agile and Efficient Enterprise, OpenShift is its Implementation.
[1] This is actually one of the key principles of Continuous Delivery. I do not want to delve into Continuous Delivery here, that will follow in the next article, I just use it as it applies to some extent to DevOps as well.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
저자 소개
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.