»
S
I
D
E
B
A
R
«
7. 자가적응과 피드백은 다르다(Self-Adaptive is Not The Same as Feedback)
February 25th, 2014 by Wegra Lee

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


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


이전까지의 글에서 불규칙하게 변화하는 환경에서 시스템을 일정하게 유지하는 방법인 피드백 제어의 개념을 열심히 소개했다.

그런데 조금 의문인 건 피드백이란 것도 결국 변화하는 환경에 자신의 동작을 맞추는 “반응형 시스템”이 아닌가 하는 점이다. 하지만 꼭 그렇지는 않다. 이 둘은 관찰하는 대상이 서로 다르다. 피드백 시스템은 환경의 변화가 아니라, 자신의 동작 변화에 반응한다. 이는 커다란 차이점이다.

시스템을 제어하는 상황을 가정해보자. 이 시스템은 입력과 출력이 있다. 피드백의 경우 제어 행동을 결정짓는 건 바로 자신의 출력이다. 즉, 시스템의 실제 동작에 반응한다. 반면 주변 환경(시스템 입력 포함)을 관찰하여 제어하는 전략은 “피드포워드(feedforward)”에 해당한다.

더 명확히 알아보자. 웹 요청을 처리하는 서버 팜(server farm)이 있다. 이 경우 많이 쓰이는 서비스 품질 지표는 평균 응답 시간이다. 즉 요청이 아무리 많아도 평균 응답 시간은 일정하게 유지되길 원한다.

피드백 제어에서라면 (실제 서비스 품질 지표인) 응답 시간 모니터링은 필수이며, 이를 기반으로 제어 행동을 결정한다. 즉, 응답 시간이 늘어지기 시작하면 서버 개수를 늘릴 것이다. 하지만 서버로 들어오는 요청의 트래픽만 고려하여 제어한다면 이는 피드백이 아니라 피드포워드다. 왜냐고? 시스템의 실제 동작이 아닌 환경 요인만을 고려했기 때문이다.

피드백 방식은 시스템에 대한 깊은 지식이 없어도 된다는 커다란 장점이 있다. 응답 시간이 길어지면 서버를 늘린다는 단순한 사실만으로 충분하다. 반면 피드포워드 방식에서는 증가한 트래픽을 처리하려면 몇 대의 서버가 필요한지 구해야 하는데, 그 정확한 값을 계산하기 우해 필요한 정보를 다 얻기 불가능한 상황이 적지 않다. 이는 피드포워드 방식에서는 큰 난관이지만, 피드백 방식에는 전혀 문제가 되지 않는다. 처음 조치로 해결되지 않으면 다시 한 번 늘려주면 그만이다.

하지만 피드백에도 단점은 있다. 언제나 피드포워드 시스템의 동작이 더 간결하다. 반면 피드백 시스템의 행동은 그리 간단하지 않을 수 있다. 피드백은 시스템의 출력에 기반하여 동작하기 때문에 다소의 지연은 피할 수 없다. 그 사이에 상황이 변하면 피드백 시스템은 완전히 잘못된 순간에 완전히 잘못된 조처를 해버린다. 이리되면 시스템은 잠시 휘청이거나(서버를 추가했다고 곧이어 다시 줄인다.) 완전히 오동작할 수 있다.

불행하게도 어설프게 만들어진 피드백 컨트롤러는 이러한 악몽을 안겨줄 가능성이 높다. 이런 일을 겪고 싶지 않다면 피드백 루프의 동작을 제대로 이해하고 대상 애플리케이션용 컨트롤러에 적합하게 튜닝해야 한다. (이에 대한 내용은 바로 앞 글에서 설명했다.)

정리하면, 피드백은 자가적응 시스템의 특수한 형태지만, 모든 자가적응 시스템이 피드백 원칙을 따르지는 않는다. 피드백 원칙을 따르는 시스템은 환경 요소에만 의존하는 시스템보다 안정적이지만, 동작 측면에서는 더 복잡하고 적절한 튜닝을 가해줘야 제대로 동작한다.

그렇다면 피드백의 목적은 “최적의” 동작을 보장하기 위함일까? 그 대답은 다음 글에서 밝혀질 것이다. (역자주: 이렇게 끝내놓고 저자가 다음 글을 쓰지 않고 있다.)


»  Substance: WordPress   »  Style: Ahren Ahimsa