
Development(개발) 와 Operation(운영) 합성어
Dev(개발)과 Ops(운영)을 합쳐 비즈니스(User)의 요구사항을 단기간에 반영할 수 있는 품질 높은 소프트웨어를 만들고자 하는 목적을 갖는 방법론
DevOps를 통하여 팀내 협업 증진
데브옵스는 개발과 운영을 위해 협업할 수 있는 패협업할 수 있는 패러다임이다.
기술이 아니며 경영 방법 중 하나다.
최근 사용자 요구사항이 많이 구체화 되고 많아지며
과거와 같이 운영자와 개발자가 별개가 되어 운영 환경을 유지하면, 소비자 요구를 반영하는데 문제가 있다.
그래서 개발과 운영을 하나의 프로세스. 즉, 조직처럼 운영한다.
방향성을 가지고 조직문화부터 환경구성, 사용자들의 의식전화를 내포하며, 시너지를 기대한다.
그 외에 MLOps(Machine Learning Operations)가 있다.
머신러닝 모델의 개발과 운영을 통합적으로 관리하는 접근 방식이다.
개발 부서에서 개발된 결과물을 운영 부서에 이관하여 배포/운영 하는 방법으로 진행
정확하게 누가 어떤 문제를 해결해야 되는지 정의되진지 않는 상황 발생, 즉 협업이 없어지고 엉뚱한 방향으로 문제 해결이 되는 현상
개발팀이 운영 환경을 잘 모르고, 반대로 운영팀이 개발 환경을 잘 모를 때,
오류가 나면 어떻게 수정하고 어떻게 최적화를 해야하는지를 잘 알 수 없다.
한마디로 협업이 되지 않는 것이다.
문제가 생기면 즉각적으로 사용자 피드백이 안 되고 반영이 되도 버그가 많이 생기는 부분을 개선하고자 한다.
https://aws.amazon.com/ko/devops/what-is-devops/
https://azure.microsoft.com/ko-kr/resources/cloud-computing-dictionary/what-is-devops/
과거에 프로그램을 배포하기 위해서는 배포 서버에 배포된 프로그램을 클라이언트가 다운 받아야 한다.
하지만, 사람마다 사용하는 환경이 다르기 때문에 설치 프로그램에 필요한 라이브러리가 없는 등의 이유로 설치시 문제가 많이 발생한다.
즉, 환경 구축하는 데 오래걸리는 것이다.
이런 부분을 해결하기 위한 기술이 컨테이너 기술이다.
컨테이너는 OS 가상화 기능으로 애플리케이션을 실행시킨다.
VM은 하드웨어 가상화인데, 컨테이너는 OS를 가상화하는 것으로 OS를 가상 환경처럼 사용하는 것이다.
데브옵스가 성공하기 위해서는 협업 분위기가 중요하다.
문제가 생기면 원인을 빠르게 확인할 수 있는 클라우드 환경이 도움이 된다.
소프트웨어 모듈을 바로 바로 통합 하는 방법, 코드 통합 자동화
보통 프로그램 개발 시 단일 프로그램을 합쳐 최종 프로그램으로 만든다.
통합을 수작업을 하면 문제가 생길 수 있기 때문에 코드 통합 자동화를 한다.
소프트웨어 모듈을 바로 바로 고객에게 전달 하는 방법, 코드 전달/배포 자동화
코드를 이용하여 인프라를 일괄적으로 관리, 인프라 구성 자동화
보통 개발 환경 등 인프라 구성을 수동으로 하게 된다.
하지만, 이 과정을 매번 반복하면 시간이 소요되기 때문에 IaC를 통해 인프라를 코드로 정의하여 인프라 구성 작업을 자동화할 수 있다.
인프라를 코드로 관리하여, 설정 및 배포 과정을 일관되게 유지하고,
코드만 변경하면 자오 업데이트가 되어 변경 사항을 신속하고 정확하게 적용할 수 있다.