728x90

 이러다가 연구하는 사람이 아닌 개발하는 사람이 될 것 같아 이론 공부를 위한 간만의 포스팅. 블로그 안 쓰면 공부 안 하는 사람.. 나.. 어떤 프로세스에서 bottleneck을 찾으라고 하면 어떤 방법을 사용하는가? 많은 사람들이 특정 작업의 평균 작업시간, 혹은 좀 더 발전한다면 작업시간의 중앙값을 찾고, 이 값이 높은 작업(단계)에 대해 bottleneck이라고 결론내릴 것이다. 하지만 하나의 작업 직전 단계가 갑자기 고장이 나서 평균 작업 시간이 엄청 길어졌고, 정작 프로세스의 bottleneck은 다른 것이었는데 해당 작업을 bottleneck으로 도출한다면? 혹은 프로세스가 진행됨에 따라 bottleneck이 계속 변화한다면? 이런 상황에서는 평균 작업시간 등으로 bottleneck을 도출하는 방법이 적절하지 않을것이다. 이번 포스팅에서는 이러한 실수에 빠지지 않기 위해 도출된 개념인 dynamic bottleneck이 무엇인지에 대해 알아보겠다.

Bottleneck

 우선, bottleneck의 정의가 무엇인지에 대해 간단히 짚고 넘어가겠다. bottleneck은 다음과 같이 정의된다.a bottleneck occurs when the capacity of an application or a computer system is limited by a single component즉, 특정 한 부분에 의해 전체 시스템의 capacity가 제한되었을 때, 이 문제가 되는 부분을 bottleneck이라고 하는 것이다. 이렇게 bottleneck이 일어남으로써 해당 작업의 작업 시간이 길어지고, 이에 따라 전체 cycle time이 길어지는 등의 현상이 나타날 수 있다.

Static bottleneck과 Dynamic bottleneck

 이러한 bottleneck의 종류에는 static system으로부터 도출되는 static bottleneck과 dynamic bottleneck으로부터 도출되는 dynamic bottleneck이 있다. 

static system과 dynamic system

Static system과 static bottleneck

 Static system해당 시스템으로부터 도출되는 프로세스는 일정한 cycle time을 가진다고 가정한다. 그러므로 이러한 시스템은 고장도 없고, 수리도 없고, 시간이 흐름에 따라 변화하지도 않는다. 이런 static system으로부터 도출되는 bottleneck을 static bottleneck이라고 한다. Static bottleneck 또한 시간에 따라 이동하거나 변하지 않기 때문에 단순히 가장 평균 작업시간이 긴 작업 등을 골라서 이를 bottleneck이라고 정의할 수 있다. 하지만 이러한 static system은 현실적으로 존재하지 않는, 이론적으로만 존재하는 시스템이라고 할 수 있다.

Dynamic system과 dynamic bottleneck

 Dynamic systemcycle time이 일정한 것이 아닌, 랜덤하게 분포되어 있다고 가정한다. 이에 따라 고장도 일어나고, 수리도 일어나기 때문에 시간이 흐름에 따라 시스템이 변화한다. 이런 dynamic system으로부터 도출되는 bottleneck을 dynamic bottleneck이라고 한다. Dynamic bottleneck은 항상 bottleneck인 것이 아닌, 특정 시점에 정의되는 momentary bottleneck으로, 이 bottleneck은 시간에 따라 변화하기도 하고, 이동하기도 한다. 이러한 dynamic system이 현실적으로 존재하는 system이라고 할 수 있다.

Static bottleneck과 Dynamic bottleneck

 설명만으로는 직관적인 이해가 되지 않기 때문에, 예시를 들어 설명하도록 하겠다. 다음과 같은 시스템이 있다고 하자.

예시 프로세스. P2는 bottleneck이 된 적이 없다.

이 프로세스에서는, 앞의 50%의 시간 동안에는 P1이 bottleneck이었고, 뒤의 50%의 시간 동안에는 P3가 bottleneck이었다. 이렇게 이동하는 bottleneck을 찾았기 때문에 우리는 dynamic bottleneck을 찾았다고 할 수 있다. 하지만 같은 시스템에 대해 static bottleneck을 찾으면 어떻게 될까? 평균 작업시간을 이용하여 bottleneck을 찾는다고 가정하자. 그러면 다음과 같은 결과가 나올 것이다. 

예시 프로세스의 static bottleneck. P2가 bottleneck이 되었다.

P2는 dynamic bottleneck 관점에서 보았을 때 bottleneck이 된 적이 없는데, 평균 작업시간이 가장 긴 P2가 bottleneck이 되었다. 이것이 바로 static bottleneck의 한계점이자 dynamic bottleneck이 필요한 이유이다. 

 이번 포스팅에서는 static bottleneck과 dynamic bottleneck에 대해 알아보았다. 다음 포스팅에서는 프로세스 마이닝에서 dynamic bottleneck을 도출하는 방법에 대해 알아보겠다. 

References

  1. en.wikipedia.org/wiki/Bottleneck_(software)
  2. www.allaboutlean.com/failed-bottleneck-detection-methods/<- 추천!
300x250
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기