다시 선택하기

DevOps

DevOps란?

DevOps란 개발과 운영의 합성어로 개발팀과 운영팀이 협업하여 개발부터 배포까지의 과정을 자동화하고, 사용자에게 빠르고 안전하게 서비스를 제공하는 프로세스, 방법, 문화 등을 의미

DevOps를 구현하는 것에 정답은 없으며, DevOps를 목표로 자동화, 협업 등을 진행했다면 DevOps라 부를 수 있다.




DevOps 등장 배경

기존에는 개발팀과 운영팀이 명확히 분리되어 개발팀이 개발을 진행한 후 운영팀에 보내면 운영팀 담당자가 수동으로 배포를 진행하였다.

이러한 방식의 단점은?

1. 인적 의존도가 높기에 담당자의 사정에 따라 배포가 느려지거나 문제가 발생할 수 있다.

2. 수동적인 작업이기에 빠른 배포 주기로 운영되기 어렵다. 때문에 느린 배포 주기로 운영된다.

3. 개발팀과 운영팀의 역할이 명확히 분리되기 때문에 서로의 사정을 이해하기 어려우며 갈등이 발생할 확률이 높다.

기존 방식의 단점은 DevOps를 통해 완화 가능하다.

1. 인적 의존도 ⇒ 첫 설정만 사람이 해두면 개발부터 배포까지 모두 자동화가 되기 때문에 인적 의존도가 기존 방식에 비해 낮아질 수 있다.

2. 느린 배포 주기 ⇒ 자동화로 진행되기 때문에 정해진 주기를 지속적으로 반복하며 빠르게 배포가 가능하다.

3. 개발팀과 운영팀의 갈등 ⇒ 개발부터 배포까지의 과정이 하나의 프로세스로 진행되기 때문에 개발팀과 운영팀이 지속적으로 커뮤니케이션 및 협업이 가능하다.

DevOps는 2000년대 후반 IT 업계에 등장하였으며, 소프트웨어 개발과 운영의 분리로 인한 여러 문제를 해결하기 위해 애자일(Agile) 방법론과 함께 발전하였다.

애자일(Agile) 방법론이란, 본래 소프트웨어 개발 방법론 중 하나로 서비스 기능 테스트-릴리즈-피드백-기능 추가 및 개선사항 반영 과 같은 짧은 주기를 빠르게 반복하는 방식이다.

이러한 애자일(Agile) 방법론의 빠른 피드백과 유연한 개발 프로세스 강조를 바탕으로 DevOps가 등장하게 된다.




DevOps의 Life Cycle

DevOps Lifecycle은 구현하고자 하는 DevOps에 따라 달라진다. 이 또한 정답은 없지만 아래와 같은 단계들이 대표적으로 포함된다.

  • Plan : 계획하는 단계
  • Code : 계획한 내용을 토대로 개발하는 단계
  • Build : 개발된 코드의 결과물(빌드 아티팩트)을 생성하는 단계
  • Test : 코드 또는 빌드 아티팩트에 문제점이 있는지 확인하고 점검하는 단계
  • Release : 테스트 완료 후 빌드 아티팩트 등을 배포하기 위한 상태로 준비하는 단계
  • Deploy : 실제 배포 환경에 배포를 진행하는 단계
  • Operate : 배포된 서비스를 운영하고 관리하는 단계
  • Monitor : 배포된 서비스에서 발생하는 모든 내용을 확인하는 단계



DevOps의 CI/CD

DevOps에서 중요한 키워드는 Continuou(지속적인)이다.

지속적으로 개발하고, 지속적으로 통합하고, 지속적으로 테스트하고, 지속적으로 배포하고, 지속적으로 피드백하고, 지속적으로 모니터링하고, 지속적으로 운영하는 과정을 반복하게 된다.

이러한 과정에서 지속적인 통합(CI)과 지속적인 배포(CD)는 중요하게 여겨진다.

⇒ 그 이유는? : 개발이 완료되면 지속적으로 통합하는 과정부터 통합된 결과물들이 지속적으로 배포되는 과정이 자동화되어 빠르고 안정적으로 진행되는 것을 통해 서비스의 가용성을 보장할 수 있기 때문이다.

때문에 CI와 CD를 CI/CD라고 칭하며 DevOps를 구현하는 데 많이 사용된다.

지속적인 통합 (Continuous Integration)

Code 작성 후 commit ⇒ commit 된 코드로 build ⇒ build 결과물을 Test

이를 통해 새로운 코드들이 지속적으로 통합되고, 코드의 품질이 향상될 수 있다.

지속적인 배포 (Continuous Deployment)

Test에서 문제가 없었다면 Deploy를 진행

이 때 무중단 배포가 많이 사용되는데, 이러한 배포를 통해 서비스의 가용성이 올라간다.