»
S
I
D
E
B
A
R
«
4. 피드백은 다르다(Feedback is Different)
February 25th, 2014 by Wegra Lee

이 글은 한국의 소프트웨어 개발자에게 피드백 제어(Feedback Control)란 개념을 소개하고자 Phillip Janert의 글을 번역한 것이다.


1부 – 피드백이란
2부 – 피드백 원칙
3부 – 피드백이 필요한 이유
4부 – 피드백은 다르다
5부 – 피드백 컨트롤러
6부 – 피드백 컨트롤러 튜닝
7부 – 자가적응과 피드백은 다르다


이전 글에서 우리는 피드백이 일반적인 알고리즘 방식과는 다르다고 주장했다. 그럼 이제 어떻게 다른지 자세히 알아보자.

보통의 알고리즘은 결정적이고 가능한 모든 결과를 나열할 수 있다는 가정을 가지고 있다. 예를 들어 “배열의 중간 원소를 취해라. 피봇(pivot)보다 작거나 같으면 이것을 하고, 아니면 저것을 하라.”는 식이다. 이런 방식으로 만들어진 제어 시스템은 규칙 기반이거나 휴리스틱(heuristic)에 의존한다. 즉 “매일 아침 10시에 서버 15대를 늘리고, 오후 4시에 다시 줄여라.’처럼 말이다.

이러한 시스템은 컨트롤러가 고정되어 있고(결정적이고) 시스템의 정확한 상태를 반영하지 못한다는 두 가지 문제에 봉착하기 쉽다. 사실 이 둘의 원인은 한 가지다.

첫 번째 문제는 휴리스틱 상수에 의한 문제다. 솔직히 휴리스틱은 ‘임기응변’의 완곡한 표현일 뿐이다. 왜 하필 15대지? 16대는 안 되나? 10시인 이유는 뭐야? 10분 일찍 늘리면 더 낫지 않을까? 사실 조금 바꿔도 상관없거나 오히려 더 잘 맞을 수도 있다. 비즈니스가 커가고 변화하며 이런 고정된 값은 심각한 레거시 문제가 되기도 한다.

시간이 지날수록 그 규칙이 점점 복잡해진다는 문제도 있다. 평상시에는 새로운 서버 15대만으로 충분하다가도 크리스마스 시즌이 되면 35대쯤이 필요할 수 있다. 누군가 주말에는 서버가 그다지 많이 필요하지 않다는 사실을 발견할 수도 있다. 그리고 주중엔 8시 30분부터 주문이 늘기 시작하니 8시 30분에 5대, 9시에 다시 5대, 10시에 나머지 5대를 차례로 늘리는 것이 최적일 수 있다.

근본적인 문제는 바로 “현실”은 전통적인 데이터 구조보다 훨씬 복잡하고 예측하기 어렵다는 점이다. 그러니 언제 어떻게 하라고 기술하는 피드포워드(feedforward) 방식은 실패하기 쉽다. 강건한 시스템이 되려면 시스템의 실 상태를 반영하여 적절히 대응해야 한다.

이것이 바로 피드백 루프가 하는 일이다. 서비스 품질 지표를 상시 관찰하여, 원하는 행동과 차이를 보이면, 원하는 방향으로 되돌리게끔 시스템에 수정을 가한다. 이 방식은 모든 것을 단 하나의 행위로 요약하기 때문에 룰엔진(rule-engine)을 극히 단순하게 만든다. “응답 시간이 길어지면, 서버 수를 늘려라. 그리고 역으로…” 문제의 휴리스틱 상수를 완전히 배제하고 낮이건 밤이건 주말이건 상관없이 모든 상황에 적용된다. 컨트롤러는 언제건 시스템을 빠릿하게 유지해줄 것이다.

이러한 시스템을 설계하려면 사고의 전환이 필요하다. 어떤 경우에 어떠한 조치를 해야 하는지 명확하기 기술하려는 생각은 완전히 버려야 한다. 대신 시스템의 동작을 고민하고 시스템을 원하는 방향으로 몰고 가기 위해 취해야 할 적절한 변화(조작)가 무엇인지 설계해야 한다.

또한, 피드백 제어는 운전대를 조종하는 손의 움직임처럼 미묘해서 이런 시스템은 굉장히 신경 써서 설계해야 한다. 실제도 (마치 마법처럼) 동작하는 모습을 보기 전까지는 명시적인 제어를 완전히 포기하기란 절대 쉽지 않을 것이다.

끝으로, 지식과 기술이 뒷받침되어야 이런 시스템을 구축할 수 있다. 섣불리 시도했다가는 실패의 쓴맛과 함께 룰엔진에 계속해서 새로운 예외를 더해줘야 하는 악마의 방법에 머무르게 될 것이다. 가장 중요한 도전은 환경 변화에 충분히 빠르게 반응하면서 동시에 너무 지나쳐서 오히려 비정상적인 상황이 발생하지 않도록 균형을 잡는 일이다. 즉, 웹 트래픽이 증가할 때 재깍 서버의 수를 늘려 반응 속도가 느려지지 않게 해야 함과 동시에 필요 이상으로 많이 늘려서도 안 된다.

컨트롤러 튜닝을 이야기하기에 앞서, 전형적인 피드백 컨트롤러의 모습부터 이해해 두는 것이 좋을 것이다. 그럼 이 주제로 곧 찾아뵙도록 하겠다.


»  Substance: WordPress   »  Style: Ahren Ahimsa