그림으로 공부하는 IT 인프라 구조 - 개정판 그림으로 공부하는 시리즈
야마자키 야스시 외 지음, 김완섭 옮김, 오다 케이지 감수 / 제이펍 / 2020년 12월
평점 :
장바구니담기


  • PC는 뜯어봐서 알겠는데, 서버 내부는 어떻게 생겼지?
    서버내부

    이 책은 일단 우리가 평소했던 궁금증을 해소시켜 주는 것에서 시작한다. 인프라 구조를 다루는 책들이 대체로 딱딱하고 어려울 수 밖에 없는 이유는 무엇일까?

    • 우리가 아는 지식에서 출발하지 않는다는 것
    • 극히 편협적인 해당 주제만 다뤄 전체 그림이 그려지지 않는다는 것
      크게 두가지 이유에서 비롯된다고 생각한다.

    그런데 이 책은 달랐다.

    독자가 어떻게 하면 복잡하고 거대한 인프라 구조를 쉽게 이해할 수 있게 도울 수 있을지 저자의 진정성 있는 고민이 느껴지는 대목이 많다. 위 질문과 그림은 누구나 한 번쯤 호기심을 가져봤을 법한 질문인데 우리가 아는 PC의 상식을 통해 서버를 설명하려는 접근법을 잘 활용하고 있다.

    우리가 알고 있던 지식에서 출발하여 미지의 영역을 안내하고자 하는 시도가 기본 바탕이 된다. 더불어 모듈별로 친숙하고 만화같은 그림(캡쳐한 그림들을 아래에 차례차례 소개할 예정이다), 가장 쉬운 예시(편의점 고객과 직원수 간 병목 현상)등의 장치는 더욱 이해력을 높혀준다.

    2장을 살펴보면 우리가 궁금했던 서버실 내부의 전경이나 서버랙 구성도 및 실제 부품들의 사진이 등장하기에 PC와의 기능을 대조해보며 서버나 장비에 친숙해질 수 있다.


  • 가장 많이 쓰는 시스템 구조는?
    이 책의 메인 주제는 3계층형 시스템이다. 우리가 오늘날 가장 많이 사용하는 IT 인프라는 대부분 웹 서비스를 위해 구성되어있고, 이를 지탱하는 가장 흔하고 널리 쓰이는 인프라 구조가 바로 3계층형 시스템으로 웹서버 - AP서버 - DB서버로 구성되어 있다.

    3계층1
    3계층2

    위 2장의 그림이 이 책에서 말하고자 하는 핵심주제이다. 처음에는 약간 까다로울 수 있으나 천천히 살펴보면 이 책을 읽지 않아도 대부분 이해할 수 있을 만큼 도식화가 잘 되어 있다.

    만약 이 책의 핵심인 3 ~ 5장을 읽은 후 그림을 다시 보게되면 매우 쉽게 이해될 것이다. 3장은 3계층형 시스템의 개요를 중심으로 인프라의 전체적인 특성과 3계층 시스템의 현위치, 그리고 가상화 등의 기술 트렌드를 조망한다.

    4장은 직렬/병렬, 동기/비동기, 큐, 베타적제어, 상태, 데이터 구조, 탐색 알고리즘 등의 인프라에서 활용하는 IT 기본지식을 다룬다.

    5장에서는 이들을 응용한 이론을 살펴보는데 캐시, 인터럽트, 폴링, IO, 저널링, 복제, 마스터-워커, 압축, 패러티 검출 등의 기술을 다룬다.


  • 서버, 인프라 담당자를 위한 책인가?
    아니다. 개인적으로 이 책은 프로그래머에게 더 적합한 책이라는 생각이 든다. 클라우드, 도커, 쿠버네티스 기반의 데브옵스 환경에서도 프로그래머는 여전히 인프라에서 자유롭지 못하다는 생각이 든다.

    특히 성능 이슈로 들어가면 더욱 그렇다. 현재 구성된 인프라의 기본을 이해하고 있어야 더욱 고성능의 애플리케이션을 개발할 수 있음은 물론 DB서버와 구조를 알아야 데이터 처리를 어떻게 효율적으로 다룰지 어떤 프로그램과 API를 활용해야 할지 정확한 판단이 가능하다.

    프로젝트를 총괄하는 아키텍트나 관리자에게는 필수 지식이다. 더불어 1장에는 인프라 아키텍처를 집약, 분할, 수직, 수평, 지리 등의 유형별로 살펴보고 있어 관리자에게 도움이 된다.

    전체 환경이나 인프라를 직접적으로 알 필요가 없는 말단 개발자라 할지라도 적어도 왜 이 언어를 사용하게 되었고 어떤 특성의 프로토콜이나 API를 활용하는지 이해하고 숙련도를 높이는데 학습적인 측면에서 능률을 높힐 수 있을 것이라 생각한다.

    3계층3

    위 그림은 3계층 시스템의 축소판인데 웹 개발자 특히 백엔드 개발자가 Httpd 프로세스에서 자유로울 수 있을까? 마찬가지로 AP서버에 해당하는 각종 WAS에서 스레드 지식을 모르고는 비즈니스 로직 등의 개발이 어렵다. 마찬가지로 DB서버의 SGA를 이해하지 못하면 쿼리 튜닝에서 자유롭지 못하다.

    그저 국소적으로 이해하고 끝날 것인지 내부 인프라의 전체 그림을 이해하고 이에 종속적인 부분이 정상적으로 수행되도록 고려하며 개발할 것인지의 차이는 아마도 연봉과 커리어 앞날에 큰 영향을 끼칠 것이라 생각한다.

    한 단계 더 깊이 들어가면 탐색 알고리즘이 등장한다. 이 책이 인프라 서적임에도 불구하고 오히려 인프라 담당자가 더 어려울 수도 있는 부분도 상당 부분 존재한다.

    DB에서 SQL을 수행하며 인덱스를 찾아가는 과정이 인프라 내부까지 연결하여 설명한다.B트리

    이 예시와 같이 이 책의 최고 장점은 조각난 분야별 지식들을 하나의 전체 그림으로 그려가는 과정이라 할 수 있겠다.

    인프라 담당자는 인프라를 지탱하는 IT 지식을 익히며 서비스 성능의 향상을 위한 최적의 인프라를 구성하는 노하우를 쌓을 수 있을 것이고, 마찬가지로 프로그래머도 내부 인프라에 대한 종속적인 지식의 이해를 바탕으로 고성능의 서비스를 제공하는 애플리케이션을 개발할 수 있을 것이다.

    개인적으로 15년 정도 여러 직장을 다니며 풀스택 개발자라고 할 수 있을만큼 여러 기술을 섭렵했는데 이 책을 통해 몰랐던 지식들을 보완하고 나니 인프라 구조 및 IT 서비스에 대한 전체적인 시야를 가질 수 있어 매우 만족스러웠다.


  • 네트워크, 무중단, 성능
    6장은 네트워크를 다룬다. 그저 네트워크의 이론 지식만 열거되었다면 또 무슨 소리인지 충분히 이해하지 못한 채 넘어갈 수 있겠으나 OSI 7계층을 중심으로 각 계층을 하나하나씩 뜯어본다. 뜯다보면 왜 프로그램 언어별로 소켓 통신을 위한 API들이 그런 형식으로 호출되고 설계되는지 쉽게 이해가 된다.네트워크

    7장은 무중단 및 이중화 구성에 대해 다룬다. 가용성을 최대한 확보하여 안정성을 유지하기 위한 구성을 꾀하는데 어느 요소 하나 빠짐없이 모두 한 눈에 정리할 수 있도록 연결되어 있어 매우 유익했다. 하나 하나의 가용성을 다루는 책은 많지만 전체를 조망하는 책은 찾기 힘들다.무중단

    마지막 8장은 성능을 다룬다. 응답, 처리량(Throughput), 병목현상의 개념을 정리한 후 병목 현상을 찾는 방법과 저자들의 실전 사례들이 공유된다.병목현상


다루는 내용이 너무도 방대하여 리뷰를 작성하기까지 많은 고민을 했다. 서두에 어떤 책인지 짧게 소개하고 싶었지만 책의 제목이 내용을 너무도 잘 대변하는데다가, 그림을 기반으로 한 전개로 구성되어 있어 글보다는 그림과 사례로 리뷰를 쓰는 것이 책의 특징을 가장 잘 살리는 방법이라 생각했다.

이 책은 이미 5년 전에 베스트셀러 반열에 올랐던 책이다. 난 그때로 꽤 감명깊게 읽었고 당시 IT의 전반적인 실용적인 눈을 키우는데 이 책으로부터 많은 도움을 받았다.

개정판에서 달라진 점은 이제 대세가 된 클라우드 기반의 지식이 대거 포함되었다는 점과 당시에 유행했으나 지금은 필요하지 않은 구닥다리 일부 설명이 삭제되었다는 점 정도이다. 디자인 측면의 변화도 반가웠는데 완전 풀컬러는 아니지만 구판과는 달리 가독성을 위한 색상 구분이 되고 있어 훨씬 읽기 편했다.

이 책은 인프라 담당자나 개발자는 물론 CEO, 마케팅 혹은 비즈니스를 담당하는 실무자까지 IT 직군에 종사하는 사람이라면 반드시 읽어봐야 할 책이다. 실전에서 IT 지식과 제품들이 어떻게 활용되고 엮이는지 거의 모두 다루고 있기 때문이다.




댓글(0) 먼댓글(0) 좋아요(1)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
프로그래머를 위한 파이썬 - 실전 프로젝트로 배우는 소프트웨어 개발의 원리와 정석
데인 힐라드 지음, 황반석 옮김 / 제이펍 / 2020년 11월
평점 :
장바구니담기


Python의 아래와 같은 개념을 어느정도 알고 계시는지?

  • 설계
  • 관심사 분리, 추상화, 캡슐화
  • 성능
  • 테스트
  • 확장성, 상속, 느슨한 결합
  • 개념은 알고 있지만 믹신, 목업 등 Python에 특화된 용어 혹은 스타일
    제너레이터
    메시지

만약 위 개념들이 생소하거나, 들어는 봤지만 익숙치 않다면 이 책이 많은 도움이 될 것이다. 더불어 키워드를 통해 본 도서의 난이도에 대한 감도 어느정도 잡을 수 있을 것이다.

키워드에 해당하는 내용들을 아주 상세하게 깊숙히 다루는 것은 아니다. 약 250p 정도 되는 다소 가벼운 분량에 키워드별 핵심이 되는 중요한 개념 혹은 코드 몇가지를 개괄적으로 소개한다.

분량이 짧다고 해서 깊이가 결코 가벼운 것은 아니다. 저자의 오랜 실전 경험을 바탕으로 학습 시간 투자 대비 가장 효과적으로 지식을 얻을 수 있도록 구성되어 있다는 인상을 받았다. 즉, 실전에 활용할 수 있는 가성비 좋은 내용들을 한 눈에 조망할 수 있게 구성된 점이 큰 장점이다.

실전에 많은 시간이 투입되었으나 전체적인 프로젝트 숲이 보이지 않는 개발자에게는 이 책이 단시간 내 막혔던 부분을 뚫을 수 있게 도와줄 것이다. 또, 반대로 프로젝트 경험이 많고 이미 위 키워드를 능숙할 정도로 알고 있는 이에게는 깊이 측면에서 약간 부족할 수도 있다.

개인적으로 생각하는 이 책의 최고의 백미는 파트3에 해당하는 실전 프로젝트이다. 위에서 열거한 개념들을 어떻게 실전에 적용할지 한가지 일관된 좋은 예제를 개발한다. 바로 브라우저 즐겨찾기 내용을 등록, 관리할 수 있는 커맨드라인용 북마킹 애플리케이션 Bark이다.Bark깃허브

Bark 설계, 구현 단계를 오롯이 따라하는 것만으로도 프로젝트 한 사이클을 경험할 수 있으므로 충분히 가치가 있는 과정인데, 그보다 더 큰 장점은 이 프로젝트를 구현, 개선해 나가며 위에서 배운 관심사 분리, 추상화, 캡슐화, 인터페이스, 커맨드 패턴, 느슨한 결합 등을 적용하도록 구성되어 있다는 점이다.순환복잡도

일반적으로 설계에 대한 책은 각 관점별로 동떨어진 예제들이 열거되어 있어 실전에 돌입하면 메타지식 간 연결고리가 부실하여 바로 적용하기 어렵기 마련인데 저자는 그런 다른 책들의 비효율적인 부분들을 잘 이해하고 있다는 생각이 들었다. 독자들에게 자신과 같은 시행착오를 거치지 않도록 노력하고 있어 인상적이었다.

그 외 다른 파트의 내용은 다음과 같다.

  • 파트1 : 설계와 소프트웨어의 개요를 다루고 있어 가볍게 읽을 수 있다.
  • 파트2 : 맨 앞에서 소개한 주요 키워드들에 대한 개념의 핵심이 사례별로 잘 소개되고 있다.
  • 파트3 : 바로 위에서 언급했던 파트2 개념의 실전 적용 과정이다.
  • 파트4 : 개발자의 경력을 키우기 위한 조언 및 이후 학습 방향에 대한 조언이 담겨있다.

Python의 입문 과정을 마치고 중급 과정 혹은 실전에 돌입하는 이에게는 이 책이 매우 적합하다고 생각한다. 위에서 소개한 바와 같이 설계의 큰 그림을 정말 빠른 시간내에 익힐 수 있기 때문이다.

정리하자면 관심사 분리, 추상화, 캡슐화, 확장성, 상속, 느슨한 결합 등 뛰어난 설계를 위한 기본 개념부터 성능, 테스트, MVC패턴 등의 실전에 필요한 지식까지 즐겨찾기 관리 프로그램을 만들며 각각의 개념을 상호간에 유기적으로 연결해가며 익힐 수 있기에 효용성 측면에서 매우 높은 점수를 주고 싶은 책이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
소프트웨어 스펙의 모든 것 - 프로젝트를 성공으로 이끄는 소프트웨어 스펙(SRS) 작성법
김익환.전규현 지음 / 한빛미디어 / 2021년 1월
평점 :
장바구니담기


개인적으로 프로젝트에 돌입할 때마다 스펙이라는 문서를 읽고 쓸 기회를 접하며, 덕질하는 시간에는 오픈 소스 문서 번역등에 기여해 본 경험이 있기에 언제고 기회가 되면 소프트웨어 스펙 작성법에 대해 진지하게 배우고 고민해봐야 겠다는 생각을 했는데 마침 적합한 책이 등장하여 리뷰를 남긴다.

본 책의 메인 주제인 SRS란 소프트웨어 요구 명세를 의미하며 스펙이라고도 부른다. 구체적인 실체를 알고 싶다면 아래 링크를 클릭하여 저자가 소개하는 템플릿을 다운로드 하여 확인하기 바란다.

SRS Template 다운로드SRS1
SRS2

이 책은 SRS를 작성하는 방법을 다루는 책으로 Who, What, How 등 다각도에서 고민해보며 기업 문화까지 스펙에 녹이고자 노력하는 진솔함이 돋보이는 책이다.

저자는 2000년 초반에 출간된 “대한민국에는 소프트웨어가 없다.” 책의 저자이기도 하다. 당시 대한민국의 찍어내기식 사농공상 문화에 회의를 느꼈기에 책을 읽으며 많은 생각을 하였다.

S/W 중심의 대한민국의 경쟁력 향상을 위해 개발자, 정부, 기업 등에 강한 일침을 가한 내용이 인상적이었는데 20년 가까이 지나 당시의 조언에 실리콘밸리식 문화와 커리어가 가미된 본 도서를 읽게 되니 감회가 새로웠다.

컴퓨터 공학을 전공한 사람이라면 대부분 소프트웨어 공학 만큼 재미없는 전공 과목을 찾기도 어려울 것이다. 코딩을 통해 눈으로 결과를 보는 과정도 없고 실무 경험도 전무한 대학생이 사상 누각 형태로 장님이 코끼리 다리 만지듯 저 위에 떠 있는 실체없는 공학을 이해하고자 노력하는 것은 정말 답답한 노릇이 아닐 수 없다.

문제는 이 현상이 기업에 입사하여 시니어가 되어도 지속된다는 점에 있다. 하나의 프로젝트를 모두 총괄하는 사람이 되어보기 전까지는 이런 총체적인 눈을 필요로 하지 않기 때문이다. 게다가 경험 미숙으로 스펙에 대한 내용이 구체적으로 와 닿을리도 만무하다.

그런 측면에서 본 도서는 스펙을 작성하는 일이 따분함을 넘어서 왜 어려운지, SRS의 실체는 무엇인지 설명하기 위해 많은 지면을 할애한다.

스펙에 대한 회사 구성원의 오해는 어떤 것들이 있는지, 스펙과 유사한 설계 및 요구사항과의 차이점은 무엇인지, 현재 스펙과 관련된 악습과 관행은 무엇인지, 기업 문화가 스펙에 왜 반영되어야 하는지, 스펙을 제대로 작성하지 못해 발생하는 실제 사례들은 어떤 것이 있는지 살펴본다. 2부에서는 실제 사례를 중심으로 SRS를 작성하는 예시도 소개된다.

스펙이 작성하기 어렵다는 것은 저자도 충분히 공감하고 인정하기에 이를 작성하는 딱딱한 매뉴얼에서 벗어나 예시, 차이, 관점의 변화, 기업 문화, 영향 사례를 다각도로 짚어보며 스펙을 최대한 알기 쉽게 설명하고자 노력한 점이 책의 백미이다.

이 책에는 SRS의 작성법 외에 또 다른 가치가 숨어있다. PM, 아키텍트 이상의 관리자에게 필수적인 프로젝트가 실패하는 이유, SRS를 통해 소프트웨어를 최단 시간 내 개발하는 법, 기업 문화와 사람 관리에 대한 방법에도 포커싱을 맞추고 있다.

사실 이 모든 내용들이 올바른 방향으로 선행되어야 의미있는 SRS를 작성할 수 있음을 강조하고 있다. 그저 작성 요령만 갖출것이 아니라 개발문화, 관행, 습관, 프로세스, 원리, 원칙들이 모두 녹아있어야 좋은 SRS를 작성할 수 있다는 의미이다.

SRS의 중요성을 인식하기 위해 책에서 제시하는 여러 예시 중 특히 인상 깊었던 것 2개를 꼽아보려 한다. 하나는 모든 프로젝트 이해관계자를 연결하는 중심이라는 점이다. 이 덕분에 제품이 완성되지 않아도 영업팀은 사전 판매에 돌입할 수 있으며, 인증도 사전에 취득할 수 있게 된다.이해관계자

다음은 1:10:100 규칙에 대한 설명이다. 스펙이 변경될 경우 요구분석 단계에서의 비용이 1이라는 가정하에 유지보수 단계로 넘어갈수록 200배에 가까운 비용이 낭비된다. 시간이 흐를수록 얼마나 큰 비용이 발생하는지 구성원 전부 명확히 인식할 필요가 있으며, 그렇기에 스펙이 정확히 작성되어야 하는 것이 얼마나 중요한지를 보여주는 사례이다.규칙

가장 인상깊었던 파트는 6장(프로세스)과 9장(How) 파트이다. SRS를 작성하는 매우 구체적인 방안과 예시가 소개되고 있으며 코드 리뷰처럼 스펙을 리뷰하는 방법이나 협업의 방향을 다루고 있어 조직의 발전을 위한 방향을 엿볼 수 있다.

더불어 소스코드 및 유닛 테스트를 통한 스펙을 작성하는 실전법이나 인터페이스 개선 및 정의 부분은 수십년 간 경험을 축적한 저자의 내공을 느낄 수 있는 파트였다.

10장 도구 편에는 SRS를 작성하는데 도움이 되는 툴들이 소개되는데 미처 몰랐던 유용한 Tip들이 다양하게 소개되어 있어 실전에 유용하게 사용할 수 있다.

2부에서는 SRS 작성을 위한 구체적인 예시가 등장한다. 1부에서 익힌 감에 현 직장의 문화를 더해 실전처럼 적용해 볼 수 있는 구성이 마음에 들었다. 다만 한가지 아쉬운 점은 하나의 특정 개발 사례를 중심으로 일관성있게 소개되었다면 더욱 템플릿을 이해하기 쉽지 않았을까 싶다.

소프트웨어 공학에 대한 책 중 이론을 설명하거나 번역서는 그래도 자주 접할 수 있다. 하지만 국내 저자가 국내 정서를 반영하여 작성했다는 점, 지극히 실전적이고 구체적인 예시를 든다는 점, 수십년 간의 전문적인 커리어가 반영되었다는 점에서 이 책은 관련 서적 중 매우 귀중한 희소성을 띈다 할 수 있다.

PM, 아키텍트 이상의 관리자에게는 SRS 작성법은 물론 프로젝트의 성공과 올바른 기업 문화의 정착을 위해 필독서일 것이다.

그 외 구성원에게 있어서도 이론으로만 존재했던 소프트웨어 공학의 실체를 느끼고, 개발 및 조직 문화를 이해하며, 프로젝트의 일원으로서 커뮤니케이션 능력을 향상 시키는데 도움이 되므로 어느 정도의 경험이 쌓인 개발자라면 반드시 일독할 것을 권하고 싶다.



소프트웨어, Sw, 스펙, Srs, 사례연구, 기업문화, 프로세스, 도구, 체크리스트, 인터페이스, 프로세스, 프로젝트


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다. 먼저 그 예시들이 무엇인지 몇 가지 소개해 보려 한다.

  • 로또 복권 당첨 숫자로 지금까지 1 ~ 20의 숫자가 많이 등장했다면 다음 회차에는 21 ~ 45의 숫자가 많이 등장할까?

물론 “아니다”. 조금만 생각해보면 동전 던지기에서 앞면이 여러번 등장했다고 다음번에 뒷면이 등장할 확률이 높아지는 것은 아님을 알 수 있다. 그런데 왜 가끔 우리는 직관적으로 이런 오답을 내리는 것일까?

정도의 차이가 있을 뿐 우리는 모두 정규분포라는 단어를 알고 있다. 중학교 때 부터 이미 배운 용어이기 때문이다. 그런데도 이 단어가 친숙하지 않은 이유는 무엇일까? 아마도 분포라는 단어보다는 “정규”라는 단어 때문일 것이다. 그런데 정규라는 단어는 정상(Normal)이라는 뜻이다. 한 마디로 정상적인 분포라는 뜻이다. 자연계에는 정규 분포가 더 많이 나타나기에 상식적으로 흔한 쪽에 정상이라는 단어를 부여한 것일 뿐이다.

아래 그림은 책에 등장하는 정규분포와 균등분포의 차이이다. 일상에는 정규분포가 훨씬 많은데 우리의 직관은 균등분포가 당연하다고 착각한다.정규분포 시각화

아래 라오의 실험 결과를 보면 정규분포와 균등분포의 착각에 대한 감을 잡기 더 쉬워진다. 단지 3번의 쉬운 조사를 표로 정리한 결과이다.

  • 병원에서 1,000명 신생아의 성별(남/여) 기록
  • 동전을 1,000번 던져서 앞면/뒷면 기록
  • 상상 속에서 동전을 1,000번 던져서 앞면/뒷면 기록
  • 마지막으로 각 3개 유형의 기록을 5개씩 모아 앞면 혹은 남자의 등장 횟수를 기록한다.라오의 실험

실험1(병원데이터)와 실험2(실제 동전 던지기)는 자연계의 확률 현상으로 지극히 정상적으로 정규 분포를 띄고 있음을 알 수 있다. 그런데 실험3(상상 속 동전 던지기)를 보면 우리의 인식은 판이하게 다르다. 즉, 균등분포에 대한 확률 집착을 떨치기 어려워진다. 앞/뒷면의 비율이 깨질까 염려되어 비슷한 횟수로 앞/뒷면을 맞추고자 노력하기 때문이다.

정규분포의 학문적 정의를 내리기 이전에 이 시각화 자료와 로또 복권의 예시를 먼저 배워야 하지 않을까? 바로 이 책이 지식을 전달하는 방식처럼 통계, 과학, 수학의 개념을 위와 같이 예시, 시각화 자료, 일상의 언어를 통해 먼저 이해를 도와야 한다는 말이다.

책에 등장한 모든 예시들에 대하여 위처럼 발견한 인사이트를 자세히 다뤄보고 싶지만, 리뷰라는 특성 상 영감을 돋궈주는 몇가지 재미있는 예시 및 인용구들을 짧게 나열해 보겠다.

  • 아주 오래전부터 인류는 확률성 사고를 가지고 있었다. 심지어 “역경”의 점치기도 확률 숫자 시드(Seed)를 설정해야 했다.

  • 상금 배분 문제
    • 규칙 : 이긴사람에게 10점을 부여. 60점을 먼저 획득한 사람이 승리.
    • 상황 : A가 50점, B가 30점인 상태에서 불가피 하게 게임이 중단될 경우 상금을 어떻게 배분해야 공정할까?
    • 가능성이라는 개념이 등장한다.
  • 중국 우한 시민 서민 아파트 공개 추첨
    • 우한시 : 5141명 중 124명 당첨. 그 중 6명의 아파트 증명 번호가 연속된 숫자로 드러나 자격 박탈.
    • 라우허코우시 : 1138명 중 514명 당첨. 그 중 14명이 연속된 숫자였지만 자격 유지.
    • 어떤 차이가 있을까? 여기에서 귀납법 계산과 몬테카를로의 인사이트를 얻을 수 있다.
  • 몬티홀 문제
    • 3개의 문이 있다. 1개의 문 뒤에는 차(Car), 나머지 2개의 문 뒤에는 염소가 있다. 차를 고르면 상품으로 주어진다.
    • 참가자가 하나를 고르면 사회자가 문 뒤에 나머지 하나를 열어 염소를 보여준다.
    • 참가자는 문을 고를 기회가 다시 주어지는데 “선택을 유지할지 vs 다른 문을 선택할지”의 상황에서 어떤 선택이 유리할까?
    • 조건부확률과 베이즈 추론을 이해하는데 이만한 예제가 없다.
  • 차(茶)를 맛보는 여인
    • “차를 먼저 따르고 우유를 나중에 따른다. vs 우유를 먼저 따르고 차를 나중에 따른다.” 중 어느 차가 더 맛있을까?
    • 통계 추론에서 매우 중요한 가설 검증, 귀무가설, 유의수준을 쉽게 이해할 수 있다.
  • 검은 공의 비율은?
    • 상자안에 흰공, 검은공이 전체 N개 있다. 1개를 꺼낸 후 다시 상자에 집어넣는다고 가정하고 10회 반복했을 때 1개가 검은공이라면 상자안 검은공의 비율p는 얼마인가?
    • 최대우도를 이해할 수 있다.
  • 식스시그마의 결함률은?
    • 정규분포, 표준편차, 귀무가설을 이해할 수 있다.
  • 뉴턴의 사과
    • 연역적 : F = G * (m1 * m2) / r^2
    • 귀납적 : F = f(m1, m2, r) + e
    • 적합(fitting), 학습, 오차의 이해
  • 명목, 서열, 등간, 비율 척도
    • 명목척도 : =, != 연산만 가능
    • 서열척도 : >, < 연산도 가능
    • 등간척도 : +, - 연산도 가능
    • 비율척도 : *, / 연산도 가능
    • 구차한 설명없이 수학으로 직관적인 설명이 가능하다.
  • 제노의 패러독스
    • 상황 : 아킬레우스의 속도가 거북이의 10배. 100m 앞에서 도망치는 거북이를 아킬레우스가 잡을 수 없다.
    • 이유 : 아킬레우스가 100m 쫓아가면 거북이는 10m 앞서 간다. 다시 아킬레우스가 10m 쫓아가면 거북이는 1m를 앞서 간다. 무한 반복되어 영원히 거북이를 잡지 못한다.
    • 시간의 연속이라는 개념이 등장하며 극한과 급수를 이용해 이 오류를 해결할 수 있다.
  • 설계행렬(Design Matrix = Data Frame)
    • 일반적인 행렬(Matrix = Numpy)와는 다른 개념
    • 개체의 관점 : 행이 기본단위
    • 분석의 관점 : 열이 기본단위
    • 수학적 관점 : 벡터가 기본단위
    • 기하학적 관점 : 공간의 표본점(열과 행은 차원)설계행렬
  • 시각화와 역사상 가장 좋은 통계 그래프(나폴레옹 원정)
    나폴레옹모션차트
    • 시각화의 모든 역사, 발전과정, 극좌표와 직각좌표 간 선형변환 등을 알 수 있다.
  • 머신러닝과 딥러닝의 모델에 관한 대부분의 지식과 직관적 예시

  • 통계학에서부터 빅데이터까지의 주요 개념 및 도구들의 변화

  • 데이터의 함정
    • 중국 IT 업계의 대부들은 모두 전갈자리 생일을 갖고 있다?
    • 승자의 저주 / 여신과의 인연 / 이름의 중요성 / 미국의 대선 / 행운아의 전설 / 하버드 총장의 해고 / 심슨의 패러독스

신의 언어를 인간의 언어로 표현하는 방법 중에 구체적인 예시만한 것이 또 있을까?

소크라테스의 문답법, 성경이나 고대 경전을 보면 직관적으로 이해하기 힘든 난해한 개념을 설명할 때 극단적인 보기를 들어 예시를 들곤 한다.

앞서 언급했듯 통계라는 딱딱하고 난해한 개념을 쉽게 표현하기 위해 이 책에는 정말 많은 예시들이 등장한다. 직접 세보진 않았지만 역자의 머리글을 읽어보면 무려 96가지의 예시가 등장한다고 한다. 통계학을 다루는 서적답게 귀납적인 예시를 통해 통계를 설명하는 구성이 흥미롭다.

책은 그저 예시만 다루는 것이 아니다. 2장 데이터와 수학 편을 보면 선형대수의 메타지식을 물흐르듯 설명하는데 그간 배워온 선형대수 지식에 등고선이 생기며 무엇이 중요하고 파트별로 데이터 분석이나 통계에 어떤 방식으로 활용되는지 입체적으로 이해할 수 있었다. 뒷장에는 현대에 각광받는 머신러닝, 딥러닝은 물론 시각화와 데이터의 함정까지 다루고 있어 추천사에서 읽은 바와 같이 통계학의 고전부터 최신까지 거시적 이론 프레임에 대한 저자의 이해도가 느껴진다.

학창시절 처음 통계라는 말을 들었을 때 느꼈던 이미지를 회상해 보면 “숫자 덩어리, 복잡함, 아저씨, 재미없음” 정도의 느낌이었다. 하지만 그 때 이 책을 만났더라면 난 주저없이 통계학을 전공으로 선택했을 것이다.

지금와서 느끼는 통계는 책의 제목만큼이나 꽤 아름다운 학문이고 진리의 끝에 도달하고 싶어 노력했던 여정의 기록이라는 생각도 든다. 이런 통계의 의미는 늘 곁에 있었지만 내 안목은 좁아 미리 알지 못했고 알파고가 등장한 이후에야 조금이나마 제대로 느낄 수 있었을 뿐이다.

AI, 빅데이터, 4차 산업혁명 거창한 말을 시작하기에 앞서 진정 AI 분야로 발을 들이고 싶은 학생이나 입문자가 있다면 꼭 이 책으로 시작하라는 말을 드리고 싶다. 철학, 과학, 수학, 그리고 저자의 인생이 모두 녹아있어 스스로 이 분야의 적성에 적합한지 검증하는데 도움이 될 것이다. 더불어 통계의 첫 인상을 복잡한 숫자 덩어리로 인식하는 것이 나을지 일상의 흔한 흥미로운 퀴즈로 인식하는 것이 나을지 첫만남, 첫인상을 생각해 본다면 이 책으로 시작하는 것이 얼마나 행운일지 알게 될 것이다.

아울러 이미 데이터 분석, 과학 업무에 종사하는 이들에게도 추천하고 싶다. AI 세계의 무협지처럼 - 실제로 무협지의 예시도 자주 등장한다. - 흥미 진진하여 업무를 중단하고 머리 식히기에 이만큼 재미있는 책을 찾기 힘들 것이며, 통계와 데이터 과학의 세계는 너무나도 광범위하므로 분명 몰랐던 인사이트를 얻어 현재의 실력을 업그레이드 할 수 있는 좋은 인사이트를 제공할 것이기 때문에 필독을 권하는 바이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
통계의 아름다움 - 인공지능 시대에 필요한 과학적 사고
리찌엔.하이언 지음, 김슬기 옮김, 김재광 감수 / 제이펍 / 2020년 11월
평점 :
장바구니담기


이 책의 최고 장점을 꼽으라면 단연 96가지의 예시들이다. 통계학에 어울리는 귀납적인 예시를 통해 저 위에 추상적으로 존재하는 딱딱하고 어려운 통계의 개념을 96가지나 되는 예제로 비추어 일상의 언어로 끌어내리는 탁월한 가독성과 폭 넓은 저자의 박학다식에 극찬을 아낄 수 없다.

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