IT 이론

Devops 이론

Yonggyu 2023. 6. 24. 16:10
반응형
반응형

지속적인 전달방법

 

생산 가치 흐름

 

가치 흐름 (value stream)

  • 조직이 고객의 요구에 맞춰 출시에 착수하는 일련의 활동
  • 정보와 자재의 이중 흐름을 포함하는 상품이나 서비스를 설계하고 생산해
    고객에게 전달하는 일련의 활동

 

빠르고 예측가능한 리드타임

  • 전체 프로세스를 시각화 및 개선하도록 지원, 부가 가치 단계와 낭비 단계를
    식별하고 구별하여 프로세스를 간소화하여 고객 가치를 높일 수 있음
  • 작은 배치 크기
  • WIP (work in progress) 축소
  • 다운스트림 워크센터로 결함 전달 않음
  • 전체 목표를 향한 지속적인 시스템 최적화를 통한 부드럽고 균형 잡힌 작업 흐름 생성

 

낭비의 종류

  • 과잉 생산: 불필요한 것을 불필요한 때에 불필요한 만큼 만드는 것
  • 재고의 낭비: 원재료, 부품, 조립품 등이 정체되어 있는 상태
  • 운반의 낭비: 비합리적인 설비 배치 및 과잉생산에 의한 운반도구의 부족에 의해 발생
  • 대기의 낭비: 재료 대기, 작업 대기, 운반 대기, 검사 대기, 리드타임과 관련
  • 가공의 낭비: 원래 필요하지 않은 작업을 마치 필요한 것처럼 생각하고 작업
  • 동작의 낭비: 표준 작업이 아닌 자신만의 작업 방법, 과거의 작업 방법 고수
  • 불량의 낭비: 재료의 불량, 가공의 불량, 수정 작업

 

리드타임 (Lead Time)

  • 프로세스가 작업을 수락한 시점부터 해당 작업이 다음 다운스트림 프로세스에
    전달되는 시점까지의 시간

 

프로세스 타임 (Process Time)

  • 작업을 완료하는 데 필요한 모든 정보와 리소스가 있고 중단 없이 수행할 수 있는 경우,
    단일 작업 항목을 완료하는 데 걸리는 시간

 

완전하고 정확한 비율 (Percent complete and accurate)

  • 프로세스가 업스트림 프로세스로부터 다시 작업하지 않고 사용할 수 있는 무언가를
    수신하는 횟수의 비율

 

DevOps의 3가지 방법

- 흐름원칙

- 피드백원칙

- 지속적인 학습과 실험 원칙

 

흐름 원칙의 목표

변경 사항을 프로덕션 환경에 배포하는 데 필요한 시간을 단축하고
해당 서비스의 신뢰성과 품질을 높히는 것이다.

업무 시각화

  • 기술 가치 흐름과 생산 가치 흐름의 중요한 차이점은 기술 가치 흐름에서는
    업무가 눈에 보이지 않는다.
  • 작업 이동이 매우 쉽기에 불완전한 정보로 인한 팀들 사이의 업무 미루기가
    끊임없이 계속 될수 있다.
  • 프로덕션 환경에서 애플리케이션이 실패할 때까지 문제점이 완전히 보이지 않는
    상태로 다운스트림 워크센터로 전달되기도 한다

 

시각적인 작업보드

  • 칸반보드
  • 스프린트 계획 보드

 

진행중인 작업(WIP) 제한  : 기술 분야에서의 업무는 더 역동적이다.

  • 티켓 시스템, 서비스 중단 알림, 이메일, 전화 통화, 채팅방, 경영층의 업무 조정 등
  • 기술 근로자는 방해 받기 쉽다.
  • 멀티태스킹 상태일 때는 많은 시간이 걸린다.
  • WIP 한도 제한 (3 장)
  • WIP를 제한하면 다른 누군가의 작업을 기다리고 있기 때문에 아무런 작업도 하지
    못하는 부분을 알 수 있다.

 

배치 작업의 크기 줄이기

  • 큰 규모의 배치 작업은 WIP가 급격히 높아지고,
    전체 생산 공정 흐름의 가변성이 매우 커진다.
  • 그 결과 리드타임이 길어지고 품질이 하락한다.
  • 리드타임을 단축시키고 품질을 높이기 위해서는 배치 크기를 줄이는 노력을
    지속적으로 기울여야 한다.
  • 개발 팀이 한 해동안 작업한 1년치의 코드를 프로덕션 환경에 배포한다면?*
  • 갑작스럽고 높은 수준의 WIP, 다운스트림의 막대한 혼란을 야기한다.
  • 프로덕션 오류 진단과 수정이 어렵고, 오류를 해결하는 시간이 오래 걸린다.
  • 지속적인 배포, 버전 관리 시스템에 커밋과 동시에 통합 및 테스트, 프로덕션 환경에
    배포된다.

 

핸드오프(Handoff) 횟수 줄이기

 

• 버전 관리 시스템에서 프로덕션 환경으로 코드를 이동 시킬 때 수백 개에서 수천 개의 작업이 필요하다.

  • 기능테스트, 통합테스트
  • 환경 생성
  • 서버 관리
  • 스토리지 관리
  • 네트워킹, 로드 밸런싱
  • 정보 보안

 

• 작업이 팀에서 팀으로 넘어갈 때마다 요청, 지정, 신호, 조정 및 우선순위 지정,일정 계획, 분쟁 회피, 테스트, 확인과 같은 유형의 의사소통이 필요하다.

• 최선의 상황이라 하더라도 핸드오프 작업 시에는 필연적으로 일부 지식이 손실된다.
• 해결을 위해 업무의 상당 부분을 자동화하거나 팀을 구성해야 한다

 

 

제약조건을 지속적으로 확인하고 향상시키기

  • 환경 생성
    : 환경 생성에 많은 시간 소요 (test, production)
  • 코드 배포
    : 코드 배포에 많은 시간 소요
  • 테스트 설정 및 실행
    : 테스트 환경 설정, 데이터 설정, 회귀 테스트에 많은 시간 소요
  • 과도하게 타이트한 아키텍쳐
    : 코드 변경에 여러 승인이 필요

 

가치 흐름에서 어려움과 낭비 제거하기

  • 미완성 작업 (Partially done work: check QA process, Server management)
  • 추가 프로세스 (Extra processes: documentation, review, approval)
  • 추가 기능 (Extra features)
  • 작업 전환 (Task switching)
  • 대기 (Waiting)
  • 동작 (Motion: handoff)
  • 결함 (Defects: 결함 발생과 결함 감지 사이의 시간이 길어질수록 결함 해결이 어려움)
  • 비표준 및 수동작업 (Nonstandard or manual work)
  • 용단 (Heroics)

 

피드백원칙

  • 가치 흐름의 모든 단계에서 우측에서 좌측으로 상호 간 신속하고 지속적인 피드백을 가능하게 하는 원칙

 

목표: 더 안전하고 탄력적인 작업 시스템을 만드는 것

  • 가능한 빨리 문제점을 파악
  • 고객이 미처 알기 전에 대처
  • 커다란 실패가 나기 전에 적은 비용으로 쉽게 대처
  • 실패를 학습의 기회로 활용

 

Feedback

  • 행동이나 반응을 그 결과를 참고로 하여 수정하고 더욱 적절한 것으로 해 가는 방법
    Telemetry
  • Device에서 측정되고 수집된 데이터를 중앙 제어 센터로 전송하는 방법
    Metrics
  • 측정된 수치들의 집합

 

복잡한 시스템에서 안전하게 작업하기

  • 복잡한 작업이 관리되어 설계 및 운영상의 문제점이 드러난다.
  • 문제점이 넘쳐나고 해결됨으로써 새로운 지식을 빠르게 구축할 수 있다.
  • 새로운 지역적 지식을 전사적으로 활용한다.
  • 리더는 이런 유형의 역략을 지속적으로 성장시키는 또 다른 리더를 만든다.

 

문제를 발생 시점에 확인하기

  • 목표는 가능한 많은 영역에서 더 빠르고, 적은 비용으로 많은 인과 관계를 밝혀내는 것
  • 제품 관리, 개발, QA, 정보 보안, 운영등의 기술가치 흐름에서 빠른 feedback loop 형성
  • telemetry를 통한 빠른 감지를 통해 목표 달성, 행동에 대한 영향 파악

 

새로운 지식 축적을 위한 문제의 스워밍과 해결

  • 문제의 감지가 되면 스워밍을 하여 문제 해결에 필요한 사람 동원
  • 문제의 다운스트림 전파 방지 - 복구 비용과 노력, 기술부채 감소
  • 새로운 시작의 방지 - 시스템의 새로운 오류 발생 방지
  • 동일한 작업의 방지 - 같은 오류 발생 방지

 

품질 활동을 원천에 더 가깝게 유지하기

  • 비효율적인 품질관리 예

A. 쉽게 자동화 되고 필요한 때에만 수행가능하지만 지루한 형태로 수행되도록 다른 팀에게 미룸

B. 실제 작업과 멀리 떨어져 있거나 지식이 없는 사람에게 승인, 의사 결정을 요구

C. 곧 쓸모가 없어지거나 필요하지 않을 것 같은 대량의 문서를 작성

D. 대규모 배치 작업을 위원회가 승인하고 처리를 강요

  • 비지니스 수준: 판매 거래 수, 판매 거래 수익, 사용자 가입 비율, 해지 비율, A/B
    테스팅 결과
  • 애플리케이션 수준: 트랜잭션 시간, 사용자 응답 시간, 애플리케이션 오류 등
  • 인프라스트럭처 수준(예: 데이터베이스, 운영 체제, 네트워킹, 스토리지): 웹 서버
    트래픽, CPU 부하, 디스크 사용량
  • 클라이언트 소프트웨어 수준(예: 클라이언트 브라우저, 모바일 애플리케이션의
    자바스크립트): 애플리케이션 오류와 충돌, 사용자 측정 트랜잭션 시간등
  • 배포 파이프라인 수준: 파이프라인 상태(다양한 자동화 테스트 스위트 관련 오류
    발생상태나 정상 상태, 변경 배포 리드타임, 배포 빈도, 테스트 환경 프로모션, 환
    경의 상태등)
728x90
반응형