코틀린에서는 부록 B에서 설명한 함수 타입을 사용해 HttpHandler의 타입을 (Request) -> Response라고 아주 명확하게 기술할 수 있다.
참고로 마리우스 에릭센(Marius Eriksen)이 쓴 <함수로서의 서버(Your Server as a Function)>라는 유명한 논문이 있다. 이 논문은 트위터가 웹 서버를 개발할 때 따라 한 함수형 접근 방법을 설명한다3.
시스템 경계는 서비스라고 부르는 비동기 함수로 표현된다. 서비스는 대칭적이고 균일한 API를 제공한다. 이 API는 클라이언트와 서버를 표현할 때 함께 사용하는 동일한 추상화다. 애플리케이션과 무관한 관심사(예 타임아웃, 재시도, 인가)는 여러 독립적인 모듈로부터 서비스를 구축할 때 합성할 수 있는 필터에 캡슐화된다.
- 마리우스 에릭센
핵심 개념은 우리가 방금 발견한 것, 즉 각각의 웹 서버를, HTTP 요청을 HTTP 응답으로 변환하는 함수로 간주하자는 것과 같다. 마리우스는 이 구체적인 함수를 서비스(우리의 경우 HttpHandler)라고 불렀다. 마찬가지로 필터는 서비스를 파라미터로 취하고, 다른 서비스를 반환하는 함수다.