Scarcity - 稀少性
Taegeun Moon
희소성(Scarcity, 稀少性)은 기본적인 경제 문제로, 자원의 공급보다 수요가 더 클 때 발생한다. 이러한 상황에서 사람들은 원하는 바를 충족하기 위해 한정된 자원을 효율적으로 배분해야 한다.
컴퓨터가 프로그램에 공급할 수 있는 자원인 저장 공간(Memory)과 연산 능력(Processor)은 무한하지 않다.
프로그램에 렉이 걸리는 것은 연산 능력의 한계를 넘어선 수준을 사용하고 있을때 나타나는 증상이며, 일반적으로 아래와 같은 선택지가 있다.
- 공급을 늘린다 = 병렬 처리(또는 scaling)를 한다.
- 수요를 줄인다 = 알고리즘을 최적화 해 필요 연산량을 줄인다.
- 다른 자원으로 대체한다 = 저장 공간을 사용해 중복 연산을 캐싱한다.
안타깝게도 세가지 방법 모두 쉽지만은 않다. 특히 3번은 연산이 순수하지 않은경우, 즉 동일한 입력값에 결과값이 일정하지 않은 경우 매우 까다롭다. (대표적 예시로 네트워크 요청이 있는데, 이를 적절히 캐싱하기 위해 캐시 수명과 같은 여러가지 캐싱 전략이 등장했다.)
또한 상황에 따라 가용한 방법이 다르기 때문에, 주어진 상황에서 자원을 어떻게 조절하는것이 가장 효율적인지 잘 판단할 수 있는 역량은 프로그래머에게 매우 중요하다.