지속적인 전달방법
생산 가치 흐름
가치 흐름 (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 부하, 디스크 사용량 - 클라이언트 소프트웨어 수준(예: 클라이언트 브라우저, 모바일 애플리케이션의
자바스크립트): 애플리케이션 오류와 충돌, 사용자 측정 트랜잭션 시간등 - 배포 파이프라인 수준: 파이프라인 상태(다양한 자동화 테스트 스위트 관련 오류
발생상태나 정상 상태, 변경 배포 리드타임, 배포 빈도, 테스트 환경 프로모션, 환
경의 상태등)