데브옵스(DevOps) 란

비즈니스 요구사항 및 고객의 요구사항에 민감한 소프트웨어 개발 환경을 제공하기 위해 개발과 운영을 통합하는 조직 운영 방법이다.

데브옵스를 실현하면 하나의 개발 조직이 엔드투엔드 서비스를 모두 커버하고 서비스 배포주기가 단축된다.

비즈니스의 요구 사항을 전통적인 주기적 배포 방식보다 더 빨리 반영할 수 있어 생산성이나 효율성이 매우 높고 배포 실패 비율도 50% 이상이나 줄일 수 있다.


지속적인 통합과 지속적인 배포 장점

지속적인 통합을 하루에도 몇번씩 개발자가 코드를 공유하여 통합할 것을 요구하는 개발 관행으로 정의.

기능 개발팀은 코드를 작성하고 배포하는 지속적인 과정을 통해 통상적인 작업 주기에 품질 관리 및 테스트를 도입해 수행할수 있어야 한다.

그 결과 더욱 빨리 업데이트 되고 버그가 수정되어 전체 품질을 향상 시킬 수 있다.


하지만 테스트환경과 프로덕환경을 일치시키는 것에 언제나 어려움이 따른다.

이런 환경 불일치는 지속적인 배포의 장점을 이끌어내기 매우 어렵게 한다.


도커는 개발자의 노트북에 배포된 컨테이너를 사내 스테이징 환경에 쉽게 배포 할수 있다.

가능한 이유는 도커가 부모 레이어를 명시하고 있는 빌드 파일을 사용해 컨테이너를 빌드 하기 때문이다.

이는 개발, 스테이징, 운영 환경에서 OS 및 패키지, 애플리케이션 버전의 동일성을 보장하기 때문이다.

모든 의존성의 레이어로 패키징 되고, 호스트 서버는 다양한 OS를 가질수 있기 때문이다.

뿐만 아니라 단일 OS의 가상 머신 처럼 일반적으로 발생하는 의존성 충돌 없이 동일한 호스트 서버에서 

다양한 언어와 프레임워크를 실행 할 수 있다.


CI (Continuous Integration)

개발자가 각각 개발한 소스코드를 모아 한꺼번에 빌드 하는 과정을 말한다.

시스템을 구축하고 배포하는 과정의 통합하는 시간을 줄이기 위한 소프트웨어공학의 한 부분이다.

특정 시점 기준에 상관없이 주기적으로 수행함으로써 빌드에서 발생하는 오류를 사전에 해결하고 

이러한 라이프사이클를 통해 발생하는 시간을 줄이기 위한 하나의 생산성 기법을 말한다.

여러 개발자가 각자 개발한 소스레벨을 주기적으로 수집하여 한번에 빌드 및 테스트를 할 수 있는 가장 큰 장점이 있다.

  • 빌드, 테스트, Inspection, Coverage 분석, 성능분석이 가능.
  • 초기개발부터 빈번한 통합으로 인한 개발자 생산성 향상.
  • 자동테스트를 통한 버그 및 결함을 사전에 발견, 그리고 해결.
  • 통합 시 발생하는 오류 및 결함등 문제점을 주기적으로 확인.
  • 빠른 업데이트를 통한 이해관계자로 더 빠르게 서비스 제공
  • Agile 개발 프로세스 주 방법론 사용.

Integration 단점

다양한 환경, 범위가 큰 조직 내에서 각 개발자들이 개발된 소스를 중앙에서 통합 빌드 진행 시 예상치 못한 문제점이 발생 할 수 있다.

그 예로는 라이브러리 의존성, 중복파일(클래스등), 버전 충돌 및 개인적인 개발환경등이 있다.

이를 해결하기 위해서는 저장소 관리 및 자동화된 빌드 규칙이 필수적 존재 해야하며, 저장소의 브랜치 관리가 명확해야 할 것이다.

큰 규모의 통합 시에 발생하는 문제점을 해결하지 위하여 많은 시간과 비용이 필요할 수 있다.

Integration 장점

여러 개발자들의 개발 소스를 주기적으로 수집하고 중앙에서 관리 및 통합 됨으로 사전에 문제점을 발견할 수 있다.

또한 사전에 발생한 문제점을 파악하고 해결은 통합과정을 위한 완성된 시스템을 기반으로 한다.


CD ( Continuous Delivery)

소프트웨어를 더 빠르게 주기적으로 빌드하고 테스트후 라이브서버로 자동적 배포하는 과정이다.

주기적 배포를 통한 비용적 시간적 위험을 줄일수 있다.

  • 소프트웨어 릴리즈 프로세스 표준 자동화
  • 개발자 생선성 향상
  • 자동테스트를 통한 버그 및 결함을 사전에 발견, 그리고 해결
  • 빠른 업데이트를 통한 이해관계자로 더 빠르게 서비스 제공.
  • No labels

1 Comment

Write a comment...