관찰 가능성 엔지니어링 - 오픈 소스를 활용한 분산 애플리케이션 계측부터 오류 추적과 분석까지 / OpenTelemetry 사용법 수록
알렉스 보텐 지음, 노승헌 옮김 / 한빛미디어 / 2023년 7월
평점 :
장바구니담기


관찰가능 엔지니어링


간단한 프로그램을 작성하는 일에서부터, 여러 복잡한 프로그램들을 한데 묶어 시스템을 구성하는 것까지, 프로그램들이 어떻게 동작하는 지 아는 것은 가장 중요한 일이 아닐 수 없다 생각한다. 하나의 프로그램의 경우라면 문제점 발생 시, 그나마 로그 파일을 로컬에서 분석하는 것으로 어느정도 문제점의 실마리를 파악할 수 있겠지만, 요즘같은 복잡한 분산 시스템 환경에서 동작하는 규모가 아주 큰 시스템의 경우라면, 복잡성은 차원이 다른 문제일 것이다. 문제점의 트리거링 포인트가 어떠한 메시지나 이벤트인지 확인하는 것도 쉽지 않으며, 해당 이벤트가 바로 영향을 주는 것이 아니라 여러가지 메시지 전송 단계를 거쳐 최종적으로 현재 문제를 만든 것인지 확인하는 것은 더더욱 쉽지 않다. 그래서 이러한 문제점이 발생하는 것을 대비하여, 특히 규모가 큰 프로그램들의 경우, 각 구성 프로그램별로 로그 메시지를 저장하는 것은 물론, 이벤트나 메시지의 흐름을 구분가능한 정보(메시지 ID 또는 5 tuple정보 등)을 이용하여 기록하는 것은 물론, 상세한 통계 및 에러 시 알람, 폴트 등 많은 추적가능한 방법들을 고민해 시스템 설치 및 테스트 그리고 운용 중 언제라도 파악할 수 있도록 하려고 많은 노력을 하고 있다.

관찰 가능성 엔지니어링은 이러한 복잡한 문제점 파악을 위한 노력들에 대한 결과를 좀 더 쉽게 이용할 수 있도록 만들어 놓은 OpenTelemetry를 어떻게 기존 시스템에서 이용할 수 있을 지, 특히 CNF 환경에서 잘 이용할 수 있을 지에 대해 기본 개념부터 시작해, 어떻게 사용하는 지 하나하나 설명하고, 실제 k8s 현장 배포 및 분석 방법에 대해서 설명해 주는 책이다. 책의 표지에 그려진 그림이 사실 위에서 기술한 내용 모두를 설명하고 있다고 생각한다. 우리가 단순히 눈으로 보는(monitoring) 내용은 정말 일부분에 불과한 현상으로 그 아래에서 돌아가는 복잡하고 거대한 시스템의 흔적에 대한 확인(observability)는 가려져 있다. 


이 책은 총 3부에 걸쳐, OpenTelemetry가 무엇인지, 어떻게 사용하고 응용할 지에 대해 단계별로 설명을 하고 있다. 1부에서a는 기존 레거시 시스템들에서 사용했던 툴들 및 연동 시 문제 등에 대해 간략하게 설명하고 OpenTelemetry가 왜 나오게 되었는 지에 대해 간단히 설명한다. 또 관련 용어 및 개념에 대해 예시를 이용하여 설명한다. 2부에서는 1장에서 설명한 개념들에 대해, 실제 구현을 해 보면서 개념을 명확히 하고, OpenTelemetry를 이용해서 어떻게 사용할 수 있는지 설명한다. OpenTelemetry가 제공하는 기능 중 대표적인 기능인 추적, 메트릭, 로그에 대해 각 기능이 어떻게 동작하는 지에 대해 Python script를 이용하여 환경 구성 및 사용 방법에 대해 설명한다. 또 단순히 기본 제공 기능 뿐만 아니라, 응용 프로그램에서 추가적으로 원하는 데이터를 활용 시 어떻게 해야하는 지에 대한 예시를 제공하여, 단순한 tutorial이 아닌 언제든 개발시 참고가능한 레퍼런스 역할을 할 수 있도록 하였다.

  - 마지막으로 3부에서는, 2부에 설명한 기능들을 어떻게 활용하는 것이 좋은지에 대해 설명한다. 당연한 이야기겠지만, 잔뜩 설명을 해 두고 이를 실제 CNF 환경에 대해 어떻게 배포를 하고, 어떻게 백엔드 환경을 구성하여야 할지 알 수 없다면, 큰 의미가 없게 된다. K8s 환경에서 여러가지 시나리오 별로 배포 시 어떻게 설정 및 구성을 해야하는 지에 대한 방법을 설명한다. 그리고 수집한 데이터를 쉽게 분석할 수 있도록, 오픈 소스 툴들(집킨, 예거, 프로메테우스, 그라파나)을 백엔드로 활용하는 방법도 하나하나 상세히 설명한다.


보통 이러한 책들의 경우, 책의 내용이 늘어나는 부담도 있고, 저자가 모든 경우의 응용 환경에 대해 고려하기가 쉽지 않아, 설명하고자 하는 부분을 위주로 상세 설명을 하는 경우가 많다. 그래서 특정 챕터를 보려할 때, 해당 챕터를 보다가 다시 앞으로 돌아가 차근차근 책을 읽어 나가야 하는 경우가 많이 있다. 하지만 이 책은 그각 챕터별로 해당 챕터만 보고도 관련 내용을 쉽게 확인할 수 있도록 구성되어 있다. 테스트 환경 구성을 쉽게 하기 위해 처음부터 하나씩 툴 설정 방법을 설명하고, 설명하는 기능이 늘어감에 따라 하나씩 하나씩 코드가 추가되는 내용을 쉽게 확인할 수 있도록 해 두었다. 간단히 관련 내용을 설명하자면, 먼저 다음과 같이 챕터에서 설명할 내용의 구성에 대해 전체적으로 설명을 하며 필요 시, 이해하기 쉽도록 개발 환경 또는 스크립트 구성에 대해 도식화를 해 둔다.



그리고나서 기본 베이스가되는 script에 대해 설명을 하고 해당 스크립트 동작 결과를 보여준다. 설명이 진행되면서 기능을 추가되는 과정을 반복하는데, script가 어느 부분이 어떻게 추가되는 지 변경 내용을 다른 색으로 구분해 눈에 변경 사항이 쉽게 들어올 수 있게 하여, 코드 확인을 쉽게 해 준다.



script 실행 결과의 역시 마찬가지이다.




어찌보면 사소할 수 있지만, 책의 내용과는 별개로 이런 부분은 필요한 챕터만 선택적으로 읽어 가나가는 데 있어 시간도 절약되고 빠른 이해에도 도움이 되어, 다른 책과 차별적인 포인트라 생각한다.


끝으로 이 책의 대상독자를 짚으며 리뷰를 마치려 한다. 책의 제일 처음 부분에 있는 대상 독자에 기술되어 있는 것처럼 (중급이라 기술되어 있음), 내용을 무리없이 이해하는데는 어느 정도의 시스템 지식, CNF 환경에 대한 지식 그리고 Python script에 대한 지식이 필요할 것으로 생각한다. 개발을 해보지 않은 분이나, 이제 막 개발을 시작하는 분들의 경우, 이 책에서 언급하는 내용들을 충분히 이해하고 필요성을 느끼기 어려울 수도 있기 때문이다. 또 CNF 시스템 및 k8s 나 docker 환경에 대한 익숙함, 기본적인 Python 스크립트 지식이 역시 책에 제공된 코드를 테스트해보는데 중요할 것으로 생각한다. 하지만, 반대로 생각해보면 이 책을 천천히 읽으며, 필요한 내용들을 하나씩 공부하면서 책을 익혀나간다면, 책을 다 읽고났을 때, 또 다른 분야에 대한 접근을 하는데 많은 도움이 되는 지식들을 이미 지니고 있을 것이라 생각된다.



"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
행동 데이터 분석 - R과 파이썬으로 시작하는 행동 데이터 분석 가이드
플로랑 뷔송 지음, 시진 옮김 / 한빛미디어 / 2023년 5월
평점 :
장바구니담기



온라인에서 어떤 제품을 구입하기 위해 여러 가지 상품들을 비교 분석하다보면, 언젠가부터 '이 상품을 구입한 분이 추가로 구입한 상품' 또는 'xxx님이 관심을 가질만한 상품을 추천해 드립니다' 와 같은, 사용자의 행동 패턴 또는 관련 데이터를 기준으로 추가적인 상품을 추천하는 것을 쉽게 볼 수 있다. 그럴 때면 이러한 방식의 시스템은 어떻게 데이터를 분석을 해서 이러한 결과를 가져올까 하고 늘 궁금해 했었다. 단순히 통계 데이터만 가지고 이런 내용을 추천하는 것일까? 그렇다면 특이한 결과가 반영되어 통계가 왜곡이 된다면 이런 것은 어떻게 보정을 하는 것일까? 이런 생각들을 가지고 데이터 사이언스 관련 책들을 보다보면, 알고리즘 측면에서는 이런 식으로 하는 것 같구나... 와 같이 너무 쉽게 생각하고 넘어가게 된다. 하지만 여기에는 왜 이런 식의 접근을 하는 지, 그리고 사람들의 행동이 이러한 판단에 어떠한 영향을 미치는지, 잘못된 영향을 줄 만한 요소가 많을텐데 이런 것들은 어떻게 접근을 해서 문제를 해결할 것인지에 대한 부분은 빠져있다. 어찌 보면 그게 당연할 수도 있겠지만, 좀 더 호기심을 가지고 바라볼 때, 관련 설명이 친절하게 나와 있는 자료가 있었으면 할 때가 있다.


이 책은 이러한 '무엇이 왜 어떠한 행동을 유발하는가? 이런 경우 어떤 결과가 도출될 것인가?'라는 인과 관계에 초점을 두고 '인과관계 다이어그램'과 '인과 행동 프레임워크'라는 툴을 이용해, 단순히 겉으로 보이는 현상이 아니라 사람의 '심리와 행동'과 여러 요인들 사이의 관계성을 분석하고 이를 실험하여 결론을 도출하는 일련의 과정을 다루고 있다. 이러한 방식의 접근에 익숙치 않은 독자를 위해 다음과 같은 순서로 차근 차근 설명을 해 나갑니다.

 - 1부 '행동의 이해'에서 이러한 접근법을 적용하는 이유를 설명

 - 2부 '인과관계 다이어그램과 교란 해소'에서는 책의 전반에 사용되는 툴인 '인과관계 다이어그램'을 작성하는 방법 및 잘못된 분석을 유도할 수 있는 교란 해소 방법을 간단히 연습

 - 3부 '견고한 데이터분석'에서는 결측 데이터를 핸들링하는 방식에 대해 설명하고, 부트스트랩에 대한 설명 및 사용방법을 소개

 - 4부 '실험 설계와 분석'에서는 전통적인 A/B 테스트 방식이 아닌, 부트스트랩과 신뢰구간을 이용하여 분석하는 방법을 연습하되, 실험 시 어떠한 순서로 어떠한 부분에 중점을 두어야 하는지 유의하면서 상세한 예제를 제공

 - 5부 '행동 데이터 분석을 위한 고급 도구'에서 실험 데이터 분석을 더 깊고 상세하게 할 수 있는 방법을 설명


아무래도 책 자체가 관련 분야에 대한 지식이 있지 않은 분들에게는 어렵게 다가올 수 있기 때문에, 책의 내용에는 수식을 활용한 설명은 찾기 힘들다. 또 예시를 위해 가상의 하지만 일상적으로 있음직한 상황을 예를 들어(상품 구매, 고객 만족도, 고객 예약 시스템 등) 독자가 이해를 쉽게 할 수 있도록 한 것은 이 책의 장점이라 생각한다. 


근래 출간되는 데이터 사이언스 관련한 기본 내용 및 툴 사용법을 친절히 작성해 놓은 책들과 달리, 행동 과학, 행동 경제학 과 같은 IT 관련 지식은 알고 있지만, 좀 더 근본적인 이론에 대해 설명을 하면서 이를 Python과 R 이라는 언어를 사용하여 설명을 하고 있기 때문에, 먼저 Python이나 R 언어 중 하나의 언어에는 어느 정도 지식이 필요하며, 통계학 관련 지식도 최소한의 지식이 필요하다고 생각한다. 그냥 이런 내용이 있구나 라는 정도가 아니라 책에서 설명하는 코드를 쫓아가면서 실습해보기 위해서는 Python 사용자의 경우 Jupyter-Notebook을 이용할 수 있으면 더욱 좋다(예제도 ipynb 파일로 배포가 된다). 또 예시에 따라 두 언어 중 하나의 예시만을 책에서 보여주는 경우도 있어, 가능한한 github 사이트에서 예제를 다운받아 책과 함께 체크해보는 것이 좋다. 언제나 그렇듯 이러한 부분들은 단점이자 장점이라 생각하는데, 시간은 많이 들겠지만 책에서 언급한 참고자료를 보거나 인터넷 자료 등을 참고하면서 공부해나간다면 많은 내용을 배울 수 있다.


이 책은 행동 데이터를 기반으로 인과 관계 분석하여 왜? 라고 하는 부분에 대한 근본적인 이해를 돕는데 도움을 줄 수 있는 책이라 생각한다. 반드시 책에서 제시하는 '인과 관계 분석'이 이러한 분야에 대한 정답 이라 말할 수는 없겠지만, 관련 분야에 대한 호기심을 가진 분들이나 더 많은 인사이트를 얻고 싶어하시는 분들에게 좋은 참고자료가 될 것으로 생각한다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
직장인을 위한 챗GPT - 업무 스킬업부터 자기 계발까지! 694개 ChatGPT 파워 프롬프트 가이드 | 추가 프롬프트 치트시트 부록 제공
이안 클레이턴 지음, 김상규 옮김 / 한빛미디어 / 2023년 5월
평점 :
장바구니담기


직장인을 위한 챗GPT


라떼를 언급하는 분들에게는 대학교에서 AI를 공부하던 시절, 이 지루하고 재미없는 수업이 뭔가 라는 생각을 하시는 분들이 있었을 것이라 생각한다. 당시만 해도 어디에 어떻게 활용을 한다는 것인지 잘 모르고 책에 있는 어려운 수식을 이해하고 암기하고 시험보고… 사실 AI 보다 컴파일러나 오토마타 수업이 더 재미있게 느껴졌었다. 하지만 AI의 겨울이 몇번 지나고 나서 이제는 영화나 SF 소설에서 나오던 인간의 일을 대신해주고 풍요롭게 만들어 주는 AI 가 곧 등장할 것 같은 기대감과 터미네이터의 스카이넷과 같은 위험한 AI가 나올 것 같은 두려움이 눈앞에 와 있는 듯하다. 그 중 chatGTP는 가장 유명해진 기술 중 하나라고 생각한다. 기술적으로 접근하려면 대부분의 사람들은 AI에 접근을 하기 힘들겠지만, 누구나 사용할 수 있는 chatting 만으로 이를 이용할 수 있다고 하니 기술에 대한 장벽이 사라진 듯한 느낌을 받는다.


chatGTP가 유명해 지면서, 아무 생각없이 그냥 물어보기만 하면 답을 주는 마법상자다 보니, 별 생각없이 몇 가지 질문을 해 보고 실망을 했었다. 언론에서는 찬사를 보내는 데, 왜 내가 질문을 하면 답을 이렇게 줄까? 영어가 아닌 한국어로 질문을 해서 일까? 라고 생각해서 영어로 질문을 해 보기도 했지만 해결책이 아니었다. 그 후 얼마 지나지 않아 chatGTP를 제대로 사용 즉 제대로 질문하는 방법인 프롬프트 엔지니어링이라는 것이 중요하다는 기사가 나왔다. 그 때만 해도 무언가 컴퓨터 언어같은 것을 배워야하나? 라고 생각하면서 여러가지 자료를 찾아보았으나 대부분 영어로 된 자료들이 많았고, 한글로 쉽게 설명이 나온 자료들이 얼마 없어, 일반인들이 접근하는 데 또 하나의 걸림목이 생긴 것 같았다.


‘직장인을 위한 ChatGTP’는 책 앞부분에 나오는 박태웅 의장의 추천사에서와 같이, 어떻게 하면 AI에게 질문을 잘 해서 답을 잘 얻어내는 맥락 학습에 대한 구조 설명 및 어떻게 질문을 해야 좋은 답을 얻을까에 대한 전략 그리고 그에 대한 예시들로 가득한(600개가 넘는 예제… 일일이 다 나열하여 책으로 내려한 저자가 정말 대단하다는 생각이 든다) ‘프롬프트 엔지니어링’ 사전과 같은 느낌이 든다.




책은 크게 4부로 나뉘어지지만, 각각 조금씩 주제가 달라질 뿐 구성과 내용은 유사하다. 처음에는 파워 프롬프트가 무엇인지, 어떻게 효율적이고 효과적인 프롬프트를 만들지에 대해 설명한 후 다양한 프롬프트 예제들을 이용해서 설명을 해 나간다. 사실 처음 설명부분을 읽었을 때는 머릿속에 바로 내용이 들어오지 않았지만, 반복되는 예시를 읽다보면 어떤 의미인지 금방 파악할 수 있다. 처음 설명한 것을 대한 예시 및 변형 예시들을 나열하고 그에 대해 프롬프트를 보여주는 형태가 되는데, 그에 대한 내용은 다음과 같은 형태이다.




1부에서 파워프롬프트가 무엇인지, 어떻게 구성을 하고 어떻게 작성하는 지 구체적인 예들을 보고, 2부 부터 각 산업별로 여러 비지니스에서 있을 법한 각 역할들에 대한 프롬프트를 알아본다. 3부에서 자기 계발에 대한 프롬프트에 대한 예시 그리고 4부에서는 좀 더 프롬프트를 활용할 수 있는 내용을 좀 더 언급하게 된다. 


요약하자면, 기술적인 내용보다는, 어떻게하면 chatGPT에게 잘 질문하고 원하는 답을 이끌어 낼 지를 일반인이 잘 활용할 수 있게 작성되어 있다. chatGTP 초보자로서 chatGTP를 잘 활용하기 위한 입문서로서 읽어보기에 좋은 책이라 생각한다.


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
전문가를 위한 C - 동시성, OOP부터 최신 C, 고급 기능까지! 극한의 C를 마주하려는 여행자를 위한 가이드북
캄란 아미니 지음, 박지윤 옮김 / 한빛미디어 / 2022년 10월
평점 :
장바구니담기





프로그래밍 책들을 보면, 많은 책들이 입문자 또는 초보자를 위한 책들이 많다보니, 특정 언어에 어느 정도 익숙해 진 중급자 이상에게 맞는 책들을 쉽게 찾기는 어렵다. 특히 C 언어는 나온지 40년이 넘었었지만 여전히 많이 사용되고 있다. 하지만 깊이 있는 내용들은 여러 분야의 내용들에 내용들이 흩어져 있어 하나의 C 책에 내용들이 집약된 책을 찾아보기는 어렵다. 그래서 “전문가 위한 C”를 보았을 때, 이 책은 어떨까 하는 기대를 가지고 책을 읽기 시작했다.

우선 책 목차를 먼저 보았을 때, 웬지 시스템 프로그래밍과 유사하지만 또 좀 다른 구성으로 되어 있어 어디부터 먼저 읽어볼까 하는 감이 서지 않아 처음부터 정독을 해 나갔다. 책을 다 읽고 나서(900페이지가 넘는 전문 서적을 다 읽어내는 게 쉽지 않았다) 이 책에 대해서 생각이 드는 건 다양한 주제들을 조금씩이나마 하나씩 건드려보는 책 같은 느낌이었다. 그러다보니 책을 읽는 분들의 대상이 좀 애매하다는 느낌이 든다. 책의 내용이 C 언어를 전혀 모르고서는 읽을 수 없는 책이면서, 또 여러 분야를 어느 정도 접해본 독자에게는 한번쯤은 접했을 법한 내용들로 이루어져 있어, 어떤 독자가 대상인지 잘 모르겠다는 것이 솔직한 심정이다.

그렇다고 이 책의 내용이 안 좋거나 번역 수준이 나쁘다는 의미는 아니다. 책을 읽어보면 알겠지만 책의 저자는 다양한 분야에서 많은 경험을 하였다는 느낌이 들었드며, 책 번역 역시 읽는 데 부자연스러운 부분을 찾기 힘들정도로 잘 되어 있다. 

C 언어를 처음 배울 때 멋모르고 hello world 부터 출력하면서 감을 익혀나가면서 하나 하나 더 많은 내용을 배운 것처럼 이 책의 내용도 그런 식으로 설명이 되어 있어 꼼꼼히 책을 읽어나가면, 충분히 이해할 수 있도록 설명이 차근차근 되어 있다. 하지만 다양한 내용이 있다보니, 이게 나에게 필요한 건가? 이게 실제 업무에 사용될까? 하는 생각을 책을 읽으면서 하게 된다는 점이다.





우선 책을 읽으면서 좋았다고 생각하는 부분부터 작성해 보겠다. 이 책에서 저자가 설명하는 내용에 대한 예제나 유틸리티는 챕터마다 조금씩 다르지만 유닉스 기반 환경에서 테스트를 해 볼 수 있도록 되어 있는데, 대부분의 개인 개발자가 요즘 쉽게 접할 수 있는 Linux 환경과 MacOS 환경에서 시험할 수 있도록 되어 있다. 직접 Typing을 해 볼 수도 있겠지만, 저자가 이미 github에 올려둔 예제를 다운로드 받아, cmake와 make를 가지고 컴파일해 쉽게 결과를 체크해 볼 수 있다. 보통 특정 환경 하나만을 가정하여 설명을 하지만, 서로 다른 두 시스템에서 동일하게 동작하는 부분, 서로 다르게 동작하는 부분을 각각 설명하고 있는 부분은 이 책의 장점이라는 생각이 든다. 물론 이 때문에 책이 좀 두꺼운 것은 책의 단점? 이라고 생각을 해야할 지 모르겠지만… ^^

특히 책의 앞쪽에서는 OS간 유틸리티의 차이점, 파일 포맷의 차이점 등에서 차이를 보여주는 부분들이 있지만, 책의 중 후반부에 다다르면 library(예: pthread) 에서 지원하는 기능 유무가 달라져, OS 별로 다르게 동작할 수 있는 부분에 대해 직접 코드를 구현해서 설명을 하고 있어, MacOS 환경에서 이 책을 시험해 보는 독자에 대한 배려도 눈에 띈다.




  또 책의 처음 시작부터 전처리 과정, compile 단계 및 link 처리 과정에 대한 내용을 단계 별로 설명해 둔 부분이 있어, 단순히 언어를 배우고 이용하는 단계에서 잘 들여다볼 일이 없는 부분에 대해서도 다루고 있어, 언어에 대해 조금 더 깊은 이해를 할 수 있다는 점이 마음에 들었다. 단 해당 부분의 내용이 좀 더 깊었으면 했지만 그렇지 못한 부분이 아쉽기는 하다. 

  다른 책에서 찾아보기 힘든 부분 중 하나로 책 후반부에 있는 “다른 언어와의 통합” 부분은 개발자가 C로 모든 프로젝트를 진행하거나 C로 기술된 라이브러리만 사용하는 경우가 아니라면 한번쯤은 마주치는 이슈이다. 특히나 C++과의 통합은 생각보다 많이 이루어진다. 경험이 없는 경우, 컴파일 단계를 넘어가더라도 link 시 문제가 많이 발생하고 또 디버깅 시 C++의 맹글링 특성으로 인해 애를 먹는 경우도 자주 발생하게 된다. 그래서 이러한 일을 해야하는 개발자들에게 많은 도움이 되는 부분인데, C++말고도 다른 언어를 다루어주는 부분이 사실 더 반갑게 여겨졌다. Java나 Python 그리고 Go와 같은 C나 C++의 통합보다 더 많은 작업을 해야하는 언어들에 대해서 쉬운 tutorial 형식으로 내용을 알려주기 때문에 이를 응용해 더 복잡한 내용도 응용할 수 있어 업무에도 도움이 될 것이라 생각한다.

  많은 내용은 아니지만 꼭 필요한 유닛 테스트와 많이 사용되는 일부 framework을 이용한 예제는 개발 시 사용해보지 않은 분들에게는 좋은 도입부가 될 수 있을 것이라 생각한다. 이 책을 읽는 분들의 실력이라면 이미 다 사용하고 계시겠지만, 만약 그렇지 않은 분들이라면 많은 도움이 될 것이라 생각된다. 이 책에서는 분량이 너무 적게 나와있기 때문에 필요시 책에서 소개한 framework site를 참고하면 더 많은 내용을 익힐 수 있을 것이라 생각한다.

  책 마지막에 단순한 부록이 아닌 빌드시스템이 한 챕터로 할당되어 기술되어 있는 부분도 이 책의 장점이라 생각한다 특히 make나 cmake 뿐만이 아닌 ninja나 Bazel도 간단하지만 사용법이 기술되어 있어, 필요한 분들이 쉽게 접근하기에 알맞을 것으로 생각된다.


다음은 개인적으로 아쉽다고 생각한 부분을 한 두가지 뽑아본 것으로 이 부분은 책을 읽으신 분들에 따라 생각이 다를 수 있을 것 같다. 


1. OOS

  C와 같은 절차적 언어를 이용해 OOP에 대해 다루는 부분은 다른 책들에서는 많이 다루지 않는 부분이라 신선한 부분이라 생각했다. OOP가 가지는 개념적인 부분을 구현하면서 개념을 C를 이용해 구현을 하고, 이를 눈으로 확인함으로써 어떻게 동작하는지 확인을 하는 것은 한번쯤은 배워볼만한 내용이라고 생각이 든다. 하지만 실제 C로 코딩 시 이렇게 사용을 하게 될까? 라는 생각이 관련 챕터를 읽는 동안 든 생각이다. 현재 C로만 코딩을 해야하는 시스템에서는 유용할 수도 있겠지만, 반드시 그런 제약이 아니라면, 굳이 C++을 두고 힘들게 C로 코딩하지는 않을 것 같다. 단순히 이렇게 동작하는구나 정도만 보고 넘어가면 될 것 같다는 생각이 드는 부분인데 생각보다 많은 챕터를 할애할 필요가 있었을까? 하는 생각이 들었다.

2. 유닉스

  리눅스 시스템 프로그래밍 관련 서적들이나 특정 분야에 대해 작성된 책들이 가지고 있는 깊이 있는 주제들과 중복되는 내용이다. 유닉스 시스템의 역사와 C 언어가 무관하지 않으니 이 내용을 다루고 있기는 하지만 굳이 여기서 다루어야 했을까? 라는 생각이 계속 들었다. CPU protection ring, syscall 작성 및 커널 빌드, 커널의 아키텍쳐 구분, kernel module 작성 등은 C 언어 책 보다는 OS 책 특히나 Linux OS 책에서 다루어야 할 부분이라고 생각한다.



가능한한 많은 내용을 독자에게 전달하려고 쓰여진 이 방대한 책에 대해 개인적으로 생각하는 장점 및 단점을 기술했지만, 이 책은 C언어로 많은 내용을 경험해 보지 못한 분들은 반드시 한 번은 읽어볼 내용이라 생각이 든다. 이 책을 읽고나서 정말로 Extream한 내용을 살펴보기 원하는 독자라면 개인적으로 국내서에만 매달리지 말고 해외 원서도 찾아보는 것을 추천하고 싶다.

리뷰 초반에도 언급했지만, 전에는 이러한 책이 별로 없다보니, 각 분야별로 책을 각각 여러 권 사서 읽어야 했고, 그러면서도 설명이 부족한 부분에 많은 시간을 할애해야했지만, 이 책은 그러한 간격을 줄여주는 역할을 충분히 할 수 있다고 생각한다. 


리뷰는 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
혼자 공부하는 데이터 분석 with 파이썬 - 1:1 과외하듯 배우는 데이터 분석 자습서 혼자 공부하는 시리즈
박해선 지음 / 한빛미디어 / 2023년 1월
평점 :
장바구니담기


혼자 공부하는 데이터 분석 with 파이썬


한빛미디어에서 나온 머신러닝, 데이터 사이언스 관련 서적들 중 상당수가 본 책의 저자인 박해선님이 번역한 것들이었다. 책을 읽을 때마다 자연스럽고 읽기 편한 번역 내용 뿐만 아니라 곳곳마다 빽빽이 들어차있는 각주와 미주들을 보면서 도메인 지식을 제대로 가지고 번역을 하셨구나 생각을 했었고, 박해선님이 번역한 책은 믿고 사서 읽었는데, 이 책은 직접 글을 쓰신 책이라 처음부터 기대를 가지고 책을 읽기 시작했다.


책을 다 읽고 나서 느낀 건, 책이 목표로 하는 방향에 딱 맞게 책의 내용과 설명이 되어있다는 생각이 들었다. 간단히 책을 요약해보면 다음과 같다.

 1. 혼자 공부할 때 책이 어떻게 진행될 것이며, 각 챕터마다 어떤 내용을 다루는 지 어떤 순서로 내용이 기술되어 있는지 단순 목차가 아닌 로드맵 형식의 그림으로 한눈에 보기 쉽게 되어있다.

 2. 공부에 필요한 툴에 대해 설명하고, 어디서든 쉽게 공부할 수 있도록 코랩 사용 설명이 나옵니다.

 3. 툴은 있으니, 공부할 때 사용할 데이터는 어디서 어떻게 구하는 지 설명을 해 줍니다. 이 때 웹 스크래핑을 이용하여 데이터를 얻어오는 방법도 함께 알려줍니다.

 4. 데이터를 얻었지만 내가 원하는 형태로 가공이 필요할 수 있으니 그에 맞게 가공하는 기술을 상세히 알려줍니다.

 5. 가공한 데이터를 가지고 원하는 데이터를 어떻게 얻어내는 지, python의 pandas, numpy와 같은 툴로 분석하는 방법을 간단히 설명하고, 분석한 내용들을 시각화 하는 방법을 차근차근 알려줍니다.

 6. 기본적인 통계 내용을 넘어서서, 머신러닝을 이용해 회귀분석을 하는 방법을 배워보고, 가설을 세우고 검정하는 내용까지 진행을 합니다.


어찌 보면 보통의 책과 별 차이가 없다 느낄 수 있는데, 여러 다른 책들을 볼 때 이 개념을 굳이 왜 써야하지? 이런 건 어디에 적용하지 하는 내용을 회사에서 있을 법한 간단한 이야기들을 풀어나가면서 하나씩 예를 들어가며 설명을 해 주기 때문에, 다양한 적용 예를 알기는 힘들지만, 아.. 이런 때는 이렇게 써 볼 수 있겠구나 하는 감을 익힐 수 있게 해 준다.

그런 면에서 저자분이 많은 고심을 했다는 생각이 들었다. 책을 읽으면서 아 이부분은 좀 더 알려주면 좋을걸… 이라는 아쉬움도 있는 부분들이 있었으나, 사실 처음 이 내용을 접하는 분들의 입장에서는 500페이지가까운 책의 내용도 버거운데 더 넣는다는게… 사실 개인적인 욕심일 뿐… 저자분은 내용을 얼마만큼 넣는 것이 초보자분들이 질리지 않고 책을 끝까지 완주할 수 있을까 하는 부분을 많이 고민하셨을 거라 생각한다. 


개인적으로 이 책이 좀 더 맘에 들었던 것은 다음과 같이 중요한 부분마다 요약한 내용을 말풍선으로 다시 한번 짚어주는 부분이 있다는 것이다.


5.png


그리고 손으로 그린 듯한 예쁜 그림으로 이해하기 쉽게 중요한 부분마다 설명을 해주는 부분도 마음에 든다.


6.png


각 챕터의 끝에는 부분 작성한 코드들을 다시 요약해 재활용 가능한 전체 함수형태로 다시 구현해 두었고, 어떤 내용을 다루었는지 다시 짚어주는 것도 이 책의 장점으로 생각된다.


다만, 책에서 사용된 예제는 책에는 이미 전처리가 완료된 것을 google drive에 올려두고 해당 예제를 필요 시 다운받아 사용할 수 있게 되어있지만, 실제 다운 받아보면, 그렇지 않은 부분들이 간혹 있다. 책 뒷부분에 자주 사용되는 ns_book7 예제는 발행년도에 연도를 나타내는 정수 데이터뿐만 아니라 다른 데이터도 섞여 있는데, 이 부분에 대해서는 앞부터 차근차근 내용을 읽고 따라하기를 했다면 큰 문제없이 불필요한 데이터를 스스로 제거할 수 있을 것이다. 하지만 그게 잘 안되는 분들은 아무래도 책의 예제 따라하는데 어려움을 겪을 수 있을 것이라 생각된다. 필요 시 해당 csv 파일을 엑셀을 이용해 불필요한 데이터를 제거하는 것도 하나의 방법일 수 있다. 여기서 MAC 환경에서 엑셀을 이용하는 분들의 경우 ns_book7.csv를 앍어들이면 글자가 encoding 문제로 깨져버려 이러한 수동 작업도 하기 힘들 수 있다. 그래서 다음 페이지에 처리 내용을 정리해 두었으니 필요 시 참고가 될 수 있을 것으로 생각되어 링크를 달아둔다.


https://manime.tistory.com/entry/pandas에서-저장한-UTF8형식-csv-파일을-MAC-Excel에서-제대로-못-읽을-때-대처방법


퇴근 후 조금씩 시간을 내어 책을 읽느라 책을 다 보는데 시간이 이 주 가까이 걸렸지만, 지루하지 않게 재밌게 책을 읽을 수 있었다. 본 리뷰를 할 수 있는 기회를 준 한빛미디어에 감사하다고 하고 싶다.


본 리뷰는 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo