DevOps!

YangJiWon·2020년 6월 13일
0

DevOps란?

  • DevOps는 개발자와 운영자가 상호 협력해가면서 비즈니스의 가치를 실현하는 개념을 가리킵니다.
  • '10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1일 10회 이상의 배포: Flickr에 의한 개발과 운용의 협력 관계)'라는 제목의 ppt에서 비즈니스 가치를 계속해서 전달하기 위해 개발자(Dev)와 운영자(Ops)가 집중해야 하는 것에 대해 조직의 문화와 도구 관점에서 다음과 같이 제시하고 있습니다.

조직의 문화

  1. 상호 존중(Respect)
  2. 상호 신뢰(Trust)
  3. 실패에 대한 건전한 태도(Healthy attitude about failure)
  4. 상대를 비난하지 않기(Avoiding Blame)

도구

  1. 자동화된 인프라(Automated Infrastructure)
  2. 버전 관리 시스템의 공유(Shared vesion control)
  3. 원스텝 빌드와 배포(One step build and deploy)
  4. 피처 플래그(Feature flags) - SW 내에 새로운 기능을 넣었지만 이를 활성화할지는 설정 파일의 값에 따라 정해지는 방식을 말합니다.
  5. 지표 데이터의 공유(Shared mertics) - 서버의 부하나 접속 수와 같은 다양한 수치 데이터를 말합니다.
  6. IRC와 인스턴트 메신저 봇(IRC and IM robots) - 자동으로 IRC나 인스턴스 메신저에 글을 올리는 장치를 말합니다. Slack(슬랙)과 같은 채팅 도구도 포함됩니다.
  • 비즈니스의 목적을 달성하기 위해서는 조직과 도구 양면에서 개선해나가야 합니다. 이러한 활동 전반을 DevOps라고 합니다.

조직에서 DevOps

Dev와 Ops의 관계에 따른 과제의 예

  • Dev 측에서는 요구 분석, 개발, 테스트까지를 시행하고, Ops 측에서는 품질 검사와 배포를 합니다.
  • Dev 측은 동시에 여러 기능을 개발할 수 있어 각각의 공정을 며칠 만에 끝마칠 수 있는 반면에, Ops 측의 품질 검사와 배포는 동시에 복수로 처리될 수 없고, 게다가 시간도 상당히 소요됩니다.
  • 비즈니스의 병목이 되는 것은 Ops 측의 품질 검사와 배포 프로세스라는 것을 알 수 있습니다. 따라서 먼저 개선되어야 할 항목은 프로세스입니다.

DevOps 적용

  • 먼저 비즈니스와 IT의 관계에서 과제를 도출합니다.
  • 과제에 대해 해결 우선순위를 설정합니다.
  • 각각의 과제에 대해 향후 모습, 해결했는지를 확인하기 위한 지표 데이터(metric), 달성 목표 시기, 그리고 과제 해결을 진척시키키 위한 체제를 정합니다.
  • 현재 상황이 어덯게 될지를 지표 데이터를 보면서 확인합니다.
  • 해결한 과제와 미해결 과제를 명확히 합니다. 새로운 과제가 나온 경우에는 이 또한 관리합니다.
  • 필요에 다라 과제의 우선순위를 수정합니다.
  • 이것은 말하자면 DevOps의 적용 및 추진을 애자일 방식으로 진행하는 것입니다.

DevOps에서의 도구 도입

도구 도입의 흐름은 다음과 같이 이루어집니다.

  • 우선 전체 모습이나 목표를 명확히 합니다.
  • 현재 어떤 상태인지, 목표보다 무엇이 부족한지를 분석합니다.
  • 도구 도입 계획을 생각해보고 그에 따라 단계적으로 도입합니다.
  • 도구 도입 후에 애초 생각했던 전체 모습이나 목표에 가까워졌는지, 과제가 없는지를 확인해서 대응합니다.

DevOps를 실현했을 때의 작업들

  • 커뮤니케이션 도구를 사용해서 관련자 간 커뮤니케이션을 원활히 합니다.
  • 개발팀이나 운영팀은 버전 관리 시스템에 시스템 소스코드나 설정 정보를 저장합니다.
  • 다양한 요건이나 과제, 작업이나 오류를 프로젝트 관리 도구로 관리합니다.
  • 소프트웨어 테스트를 자동화합니다.
  • 지속적 통합(Continuous Integraion, CI) 도구를 사용해서 빌드와 테스트를 상시 실시합니다.
  • 배포 도구를 사용해서 다양한 환경에 소프트웨어를 배치합니다.
  • 개발이나 검증에는 가상화 도구를 사용해서 모두 같은 환경을 이용합니다.
  • 프로비저닝 도구나 구성 관리 도구를 사용해서 환경 구축을 자동화합니다.
  • 모니터링 도구를 사용해서 운영 환경을 모니터링하고 그 결과를 받아서 문제를 발견하거나 프로세스를 개선합니다.
  • 다양한 지표 데이터를 집약한 대시보드를 통해 모두가 정보를 볼 수 있게 합니다.
    DevOps 도구의 전체 모습

도구 도입 순서

  1. 모든 시작점은 버전 관리
  2. 프로젝트 관리 도구(github, redmine)
  3. 테스트 자동화(JUnit, PHPUnit, Selenium)
  4. 지속적 통합 도구 도입(Jenkins, CircleCI)
  5. 가상 환경 구축 도구 도입(Vagrant)
  6. 프로비저닝 도구 도입(Chef, Ansible)
  7. 모니터링 도구 도입(Sensu, Zabbix, Nagios)

도구 도입의 올바른 접근 방법

  • 도입 이유를 명확히 한다.
  • 도구는 사실상 표준인 것을 선택한다.
  • 한 번에 많은 도구를 도입하지 말고 교육과 정착을 확인한다.
  • 유지보수는 스스로 한다.
profile
데이터데이터데이터!!

0개의 댓글