Concurrent Data Processing In Elixir (Svilen Gospodinov, 2021) 독후감
Task 모듈부터 시작해 GenServer, GenStage, Flow, Broadway까지 간다. 동시성 데이터 처리에 관련된 유용한 라이브러리를 망라하고 있다. 마지막으로 나오는 Broadway가 막판 대장이다. 여러 stage를 GenStage로 꾸역꾸역 구현해서 사용하고 있다. 한 번 써봤으니 이제는 stage가 여러 개라면 바로 Broadway로 가는 것도 나쁘지 않겠단 생각을 했다.
예제 코드도 나쁘지 않았지만 꼭 이 책을 사서 읽어야 얻을 수 있는 지식이 있었을까? 그건 없는 것 같다. 하지만 그렇다고 이 책에서 배운 게 없다는 건 아니다. Task.async_stream/3, ConsumerSupervisor를 이 책을 통해서 알았다. 틈날 때마다 표준 라이브러리 함수를 살펴보면 된다. 하지만 그게 어디 쉽겠는가? 스토리가 입혀지지 않은 단순 매뉴얼은 지루하다. 손이 가지 않는다. 스토리가 입혀진 책을 통해 모르고 지나쳤던 함수나 라이브러리를 배울 수 있다.
추가로 대용량 데이터가 필요할 때, 유용한 OurAirports 항공 데이터 사이트가 있다는 것도 배웠다.
링크
- ConsumerSupervisor — gen_stage v1.2.1 - hexdocs.pm(archive)
- GenStage — gen_stage v1.2.1 - hexdocs.pm(archive)
- Open data @ OurAirports - ourairports.com(archive)
- GenServer — Elixir v1.17.3 - hexdocs.pm(archive)
- Task — Elixir v1.17.3 - hexdocs.pm(archive)
- dashbitco/flow - github.com(archive)
- dashbitco/broadway - github.com(archive)