본문 바로가기
Work/책 정리

[리뷰] Go 언어를 활용한 네트워크 프로그래밍

by ★용호★ 2022. 2. 1.

Go 언어를 3년간 사용해왔지만 아직도 익숙하게 잘 다루고 있는지 의문이 들 때가 많았고, 네트워크는 대학교 때부터 공부 했었지만 아직도 어렵게만 느껴졌다. 게다가 클라우드를 사용하게 되면서 네트워크의 중요성이 더 커지게 되었고, 운영 중 문제가 발생하는 대부분이 네트워크에서 발생했었다. 그럴 때마다 트러블슈팅에 많은 시간을 할애하게 되었기 때문에 네트워크는 마음 한켠에 언제나 숙제로 남아있었다.

 

 

“Go 언어를 활용한 네트워크 프로그래밍”이라는 책 제목을 봤을 때부터 흥미가 생겼고, 목차를 보는 순간 큰 도움이 될 것이라는 확신이 들었다. 예전에도 네트워크 프로그래밍 책을 본적은 있었지만 예제와 실행 결과 위주다보니 동작을 확인해도 이게 왜 된 건지 이해가 안될 때가 많았는데 이 책에서는 이론 설명을 충분히 다루고 나서 코드를 보여주기 때문에 클라우드 환경에서 너무나 익숙하게 사용하고 있던 네트워크의 기본 개념들이지만 긴가민가 했던 부분들과 어렴풋이 알고 있던 부분들이 조금 더 뚜렷해지는 느낌이 들었다.

 

 

네트워크는 광범위하고 깊게 들어갈 수록 공부할 것들이 너무 많아서 막막한 느낌을 받을 때가 많은데 책에서는 네트워크 프로그래밍을 위해 필요한 부분들을 잘 짚어서 설명해주고 있다. 예를들어 유니캐스트, 멀티캐스트, 브로드캐스트와 같은 개념들은 개인적으로 용어는 들어서 알고 있지만 설명하려고 하면 막히는 것들 중 하나였다. (실제로 면접 질문으로 받았던 적이 있었는데 제대로 답변을 못한 기억이 있다.) 오픈소스 도구를 활용하거나 클라우드를 활용할 때 종종 사용 되기 때문에 책을 읽으며 이런 개념들을 머릿속에 정리하는데 큰 도움이 되었다.

 

 

네트워크 프로그래밍에 대한 코드를 살펴볼 때는 대학교 때 C++로 배웠던 소켓 프로그래밍이 떠올랐다. 역시 기본 지식은 예전이나 지금이나 크게 변한 것이 없고 그만큼 중요하다는 의미라고 생각한다. 신기술이 나오더라도 파고 들다보면 결국엔 기본에서 막히게 되기 때문에 기본기가 잘 갖춰져 있어야 새로운 것들도 빠르게 받아 들일 수 있는 것 같다. 이런 기본이 되는 네트워크, 스토리지, 데이터베이스, 파일시스템 등에 대해서는 항상 간과하고 넘어가게 되는데 올해 나의 목표는 기본기를 조금 더 강화하는 것이었다. 그런 면에서 올해 이 책으로 시작한 것은 좋은 선택이었다.

 

 

아직 이해하지 못한 내용들이 많지만 조급해하지 않고 천천히 반복해서 읽어볼 생각이다. Docker와 Kubernetes가 Go언어를 채택하여 개발이 되었고 사용자도 점점 더 많아지고 있기 때문에 Go 언어는 충분히 큰 메리트를 가지고 있다고 생각한다. Go 언어와 네트워크라는 어렵지만 매력적인 이 두가지를 잡고 싶은 독자들에게 이 책을 추천한다.

댓글