티스토리 뷰

Sorry Architecture

Poka-Yoke

Quill. 2022. 5. 10. 14:02

포카요케(Poka-yoke)는 일본어이며, 실수를 사전에 방지한다는 의미를 갖고 있다. 이 단어를 처음 들었던 곳은 지속적 전달(Continuous Delivery) 저자인 Jez Humble의 워크샵이었다. 지속적 전달의 개념과 파이프라인, 검증 자동화, 버전 관리, 인프라스트럭처 관리, 안전한 배포방법, 모니터링[각주:1]에 대한 이야기를 들었다. 워크샵이 거의 끝날 때 쯤, 강사였던 Jez는 ATM기기에서 카드 리더기 방향이 한쪽으로만 가능하도록 설계된 그림을 보여주었다. 그림을 설명하면서 소프트웨어 엔지니어링에도 비슷한 설계가 필요하다고 강조했다. 소프트웨어를 개발하고 운영하는 과정에서 시스템이 문제를 일으키는 경우 보다는 사람의 실수에 의해 일어나는 문제들이 많다고 말했다. 그래서 사람이 실수하지 않는 시스템이 중요하다는 이야기를 하였다. 그러면서 포카요케라는 용어를 설명했다.

포카요케는 특정 조각을 같은 모양의 구멍에 맞추어 통과 시키는 장난감 이름이다. 어릴 적에 한 번 쯤 해봤을 수 있다. 게임을 해보면 규칙을 금방 이해할 수 있는데, 예를 들어, 별 모양의 조각을 선택하고 네모나 세모 모양의 구멍에 끼우면 들어가지 않는다. 대신 별 모양의 구멍에 맞추면 자연스럽게 통과한다. 일반적으로 이런 게임을 하게 된다면 모양을 잘 맞추는 것에 관심을 가질 것이다. 그러나 다른 관점에서 해석해 보자면, 포카요케는 같은 모양을 빨리 찾는 것이기도 하지만, 다른 모양이 통과하는 것을 허용하지 않는 것이기도 하다. 여기에 시사점이 있다.

어른이라면  모양이 다르다는 것을 바로 인식할 수 있고 무리없이 정답을 맞출 것이다. 그러나 사물의 모양을 구분할 수 있는 인지능력이 발달하지 않은 어린이의 경우에는 여러 시도 끝에 정답을 맞출 수 있을 것이다. 소프트웨어 개발과 운영에 이 과정을 대입해 보면 다음과 같은 상황을 상상해 볼 수 있다. 인지 능력이 있는 어른은 이미 프로젝트에 익숙한 기존 개발자들이고, 인지 능력이 부족한 어린아이는 아직 시스템에 익숙하지 않은 신규 개발자라고 생각해 보자. 포카요케가 제대로 자리 잡지 못한 시스템이라면, 언제나 신규 개발자만 사고를 치게 되고 시니어는 사고 수습을 하느라 바쁠 것이다. 이러한 과정에서 주니어 개발자가 서비스 장애 경험을 통해 성장한다면 그나마 다행이겠지만, 위험부담이 큰 실수의 반복은 서비스 품질과 고객만족도를 떨어뜨리고, 주니어 개발자의 자존감도 낮추게 된다. 비록 개발자가 성장할 수 있다 하더라도 치뤄야 하는 비용이 너무 크다.

그래서 소프트웨어 개발 팀은 안정적으로 서비스 운영을 위해서 안전장치를 늘 고민해야 한다. 문제가 생겼을 때 더 똑똑하지 못함을 탓하거나 미리 작업을 전파하지 않음[각주:2]을 나무라지 않아야 한다. 예상 가능한 문제들은 최선을 다해서 사전 테스트를 통해서 문제가 생기지 않도록 해야 하며, 예상하지 못했던 문제가 발생했다면 포스트모텀(사후 부검, Post-mortem)이나 오류 분석(CoE)을 통해 원인을 찾고 재발 방지 방안을 마련해야 한다. 재발 방지 방안은 플랫폼이나 시스템을 개선해서 애초에 실수가 일어나지 않도록 만드는 작업이 되어야 한다. 다시 말해서 포스트모텀에서 분석한 결과는 백로그(Backlog)에 넣어서 시스템 설계에 반영해야 하며, 당장 백로그에 넣기 어렵다면 런북(Runbook)에 추가해서 운영 할 때 주의할 수 있도록 만들어야 한다. 런북에 추가하는 것인 임시방편이어야 하며, 최종적으로는 런북의 내용들도 지속적으로 백로그에 넣어 플랫폼 개선 계획에 반영해야 한다.[각주:3] 사용자 실수를 방지하기 위해서 위험 요소를 미리 제거하고 사용자 개입을 원칙적으로 최소화 하는 것은 가장 좋은 재발 방지 방법이다.

다음은 위키피디아에 있는 포카요케관련 설명이다.

Poka-yoke  (ポカヨケ, [poka joke]) is a Japanese term that means "mistake-proofing" or "inadvertent error prevention". A poka-yoke is any mechanism in a process that helps an equipment operator avoid (yokeru) mistakes (poka) and defects by preventing, correcting, or drawing attention to human errors as they occur. The concept was formalized, and the term adopted, by Shigeo Shingo as part of the Toyota Production System.[각주:4]

 

https://www.poka.io/en/blog/expanding-the-meaning-of-poka-yoke-in-lean-manufacturing
https://www.poka.io/en/blog/expanding-the-meaning-of-poka-yoke-in-lean-manufacturing


 

  1. 솔직하게 말하자면, 모니터링에 대한 부분은 시간이 부족해서 짧게 넘어갔다 [본문으로]
  2. 슬랙에 작업을 미리 알리지 않는 것을 소통 부족으로 생각하는 경우가 많다. 그러나 경험적으로 볼 때 그건 소통 부족도 아닐뿐더러 좋은 엔지니어링 습관이 아니다. 모두가 각자의 책임아래 오류 예산(Error Budgets) 범위 안에서 배포하고 롤백하는 것이 진짜 마이크로서비스이며 클라우드 네이티브이기 때문이다 [본문으로]
  3. https://youngookkim.tistory.com/94 [본문으로]
  4. https://en.m.wikipedia.org/wiki/Poka-yoke [본문으로]

'Sorry Architecture' 카테고리의 다른 글

On-calls  (0) 2023.03.14
Sixth Man  (0) 2022.05.16
Sorry Architecture  (0) 2021.10.08
Runbook  (0) 2020.12.05
RBAC with AWS IAM  (0) 2020.02.16
공지사항