비동기 프로그래밍의 문제점 중 '전염성' 혹은 '함수의 색 문제' 라고 표현되는게 있는데, 동기 함수는 비동기 함수의 결과를 받는게 쉽지 않기 때문에 상호 연동이 어렵고 이로 인해 특정 패러다임을
비동기 프로그래밍의 문제점 중 '전염성' 혹은 '함수의 색 문제' 라고 표현되는게 있는데, 동기 함수는 비동기 함수의 결과를 받는게 쉽지 않기 때문에 상호 연동이 어렵고 이로 인해 특정 패러다임을 강제하게 되는 문제점을 말한다. 실제로 Java 에서 제공하는 Future 를 반환하는 함수가 있다면 이를 사용하는 함수도 Future 를 반환하도록 구현해야 한다. Spring Webflux 를 쓰게 되면 이 현상이 더 극단적으로 나타난다. 모든 함수를 Mono 와 Flux 가 반환되도록 작성해야하며 다른 솔루션과 연동하기 위해서는 이런 형태의 Interface 가 필수가 되어버린다. 이러한 '함수의 색 문제' 를 해결한 대표적인 언어는 Go 로 알고 있고 Java 에서 열심히 진행중인 'Project Loom' 도 이를 해결할 솔루션으로 알고 있다. (참고로 Project Loom 은 '함수의 색 문제' 뿐 아니라 비동기 프로그래밍에서 언급된 몇가지 단점을 극복할것으로 예상되기 때문에 기대가 매우 크다) 동기, 비동기 함수와 관련되서 주로 이런 말들이 많지만 argument 나 return type 이 특정 값으로 정의되어있는 솔루션이나 라이브러리를 쓸 때도 이런 현상을 접해보았으리라 생각된다. 즉, 프로그래밍을 하다보면 Bob Nystrom 이 정의한 동기/비동기 함수의 blue, red 뿐만 아니라 수많은 색상이 나올 수 있다고 생각된다. 자신이 현재 개발중인 함수가 어떤색깔인지 정의해보는것도 프로그래밍의 소소한 재미가 될 수 있지 않을까? 하는 생각을 끝으로 오늘 글을 마쳐본다.