BPF로 리눅스 관측 가능성 향상하기

  • 이 책은 한빛미디어의 «나는 리뷰어다» 이벤트로 받은 서적입니다.

책표지!

1

혼자서 집에 있으면 라즈베리파이 커널 모듈, 리눅스 커널 모듈 등을 만지면서 여전히 리눅스 커널에 대해서 관심을 가지고 있어서, 잘 모르지만 ‘BPF’ 관련 서적 리뷰를 신청했다. 이 책은 단점과 장점이 공존하는데, 이 책의 장점 중 하나로 번역을 ‘류광’님이 해주셔서 읽는데 전혀 문제가 없다. 하지만 BPF 자체가 리눅스 커널과 관련된 내용이 많다보니 아무래도 책의 난이도가 높다.

프로젝트에서 Docker를 사용할 때, 모니터링 때문에 애를 먹었는데 이 기사를 참고하면서 처음으로 BPF에 대해서 알게되었다. BPF는 Berkeley Packet filter 의 약자로 이름에서 알 수 있듯이 네트워크 분석을 위해 사용되던 툴인데 지금은 마개조 되어서 어플리케이션 분석 및 프로파일링을 지원하는 툴로 발전하였다.

아마 이 책의 서평을 읽으시는 분들은 위에 기술한 내용은 대부분 알것으로 생각된다. 나도 BPF에 대해서 관심을 가지고 책을 찾아봤는데, 대부분 영문 서적이라서 약간 실망한 기억이 있고 국내에 BPF 관련 교재는 이 책이 처음이지 싶다.

2

이 책을 읽으면서 제일 기대했던 것은 Python 코드와 Go 코드를 사용해서 BPF를 활용할 수 있는 방법을 소개한다는 점이다. 제4장 BPF를 이용한 실행 추적을 보면 Python과 Go 코드를 사용하는 예제들이 많아서, BPF를 처음 시작할 때 오는 부담감을 조금 덜 수 있다. 그리고 실무적으로 사용하기엔 너무 간단하지만 기본적으로 C를 사용해서 프로젝트를 진행하기 힘든 환경의 경우 많은 참고가 된다. 예제를 참고해서 책을 구매하기 전에 확인해봐도 좋을 듯 싶다.

3

얼마만에 보는 C 코드인가?!

하지만 제8장 리눅스 커널 보안, 능력, seccomp에서 와 같이 실무에서 사용할 수 있는 예제는 C로 만들어져 있어서 C 언어가 익숙하지 않으면 약간의 부담감이 있다. 하지만 로우-레벨에서 작업하기 때문에 C언어 뿐만 아니라 커널에 관한 기본적인 지식이 필요해서 해당 교재만 가지고 쉽사리 접근하기 쉽진 않다. 하지만 BPF가 리눅스 프로파일링 분야에서 다양하게 사용되고 있기 때문에 기능이 엄청나게 확장되고 있다. Go언어도 적절히 사용할 수 있다는 점이 BPF의 또 다른 장점인 듯 싶다.

4

가격이 저렴하고, 번역이 잘 되어있기 때문에 커널이나 프로파일링 혹은 로우 레벨에 관심이 있으시면 한 번 질러봐도 좋을 듯 싶습니다.

Written on June 25, 2020