The Little Elixir & OTP Guidebook (Benjamin Tan Wei Hao, 2016) 독후감
elixir 기본을 익히기엔 <#book Programming Elixir 1.3 / Dave Thomas> 책으로 충분했다. 책에서 맛만 보여주고 만 OTP(Open Telecom Platform)를 더 보고 싶어서 고른 책이다. 만족. 두 번째 elixir 책으로 부족함이 없다.
OTP 행동(behavior)인 GenServer, Supervisor, Application을 사용해서 애플리케이션을 만드는 방법을 보여준다. OTP를 바로 안 쓴다. 한땀한땀 대충이지만 직접 구현한다. 다음 챕터에선 똑같은 동작을 하는 애플리케이션을 OTP로 구현한다. 보폭이 짧아서 이해가 잘 된다. 6장, 7장이 가장 재미있었다. Pool 서버를 구현하는데, 구성이 독특했다. Supervisor 자식으로 Server 모듈을 만든다. 두뇌 역할을 하는 모듈이다. Worker Supervisor를 부모인 Supervisor가 만드는 게 아니라 형제인 Server 모듈이 Supervisor를 통해 만든다. 처음엔 독특하다 생각했지만, 책임에 따라 모듈을 잘게 나누면 Supervisor는 자식 프로세스 실행만 책임지는 게 맞겠다는 생각이 들었다. 이렇게 나눠야 감당 안 되면 죽게 놔두라는 “Let It Crash” 철학에 맞출 수 있겠단 생각도 들었다.
속성 기반 테스트(property-based testing)가 필요하면 책에서 설명하는 QuickCheck 대신 elixir 창시자 Jose Valim이 참여한 StreamData를 사용하면 된다. 그럼 낡은 라이브러리를 설명한 11장은 패스? 노노. Patterns for designing properties 색션처럼 라이브러리가 바뀌어도 도움이 되는 지식이 있다. 속성 기반 테스트를 어떻게 짤지 막막할 때, 도움이 되는 패턴을 소개한다.
아쉬운 건 버전. elixir 1.3을 기준으로 한다. 낡았을 뿐이지 읽는데 문제없다. 이 책을 읽는 지금 버전은 1.6. 빠르다. <#book Programming Elixir 1.3 / Dave Thomas> 책 읽을 때는 1.5였는데. 책 한 권 읽을 때마다 마이너 버전 하나씩 올라가는구나.
기억에 남는 문장
- If you’ve done any object-oriented programming, you’ll find that processes resemble objects in many ways. You could even argue that this is a purer form of object-orientation.
- Destructuring allows you to bind a set of variables to a corresponding set of values anywhere that you can normally bind a value to a single variable. - Common Lisp: The Language
- OTP is sometimes referred to as a framework, but that doesn’t give it due credit. Instead, think of OTP as a complete development environment for concurrent programming.