[리뷰] 그림으로 공부하는 IT 인프라 구조
in Review on Review, Book, It, 인프라, 아키텍처, 서버, 3계층형, 시스템, 네트워크, 성능, 감시, 백업, 이중화
제이펍
출판사의"그림으로 공부하는 IT 인프라 구조(야마자키 야스시, 미나와 케이코, 아제카츠 요헤이, 사토 타카히코 저/김완섭 역 외 1명)"
를 읽고 작성한 리뷰입니다.
PC는 뜯어봐서 알겠는데, 서버 내부는 어떻게 생겼지?
이 책은 일단 우리가 평소했던 궁금증을 해소시켜 주는 것에서 시작한다. 인프라 구조를 다루는 책들이 대체로 딱딱하고 어려울 수 밖에 없는 이유는 무엇일까?
- 우리가 아는 지식에서 출발하지 않는다는 것
- 극히 편협적인 해당 주제만 다뤄 전체 그림이 그려지지 않는다는 것
크게 두가지 이유에서 비롯된다고 생각한다.
그런데 이 책은 달랐다.
독자가 어떻게 하면 복잡하고 거대한 인프라 구조를 쉽게 이해할 수 있게 도울 수 있을지 저자의 진정성 있는 고민이 느껴지는 대목이 많다. 위 질문과 그림은 누구나 한 번쯤 호기심을 가져봤을 법한 질문인데 우리가 아는 PC의 상식을 통해 서버를 설명하려는 접근법을 잘 활용하고 있다.
우리가 알고 있던 지식에서 출발하여 미지의 영역을 안내하고자 하는 시도
가 기본 바탕이 된다. 더불어 모듈별로친숙하고 만화같은 그림
(캡쳐한 그림들을 아래에 차례차례 소개할 예정이다),가장 쉬운 예시
(편의점 고객과 직원수 간 병목 현상)등의 장치는 더욱 이해력을 높혀준다.2장을 살펴보면 우리가 궁금했던 서버실 내부의 전경이나 서버랙 구성도 및 실제 부품들의 사진이 등장하기에 PC와의 기능을 대조해보며 서버나 장비에 친숙해질 수 있다.
가장 많이 쓰는 시스템 구조는?
이 책의 메인 주제는3계층형
시스템이다. 우리가 오늘날 가장 많이 사용하는 IT 인프라는 대부분 웹 서비스를 위해 구성되어있고, 이를 지탱하는 가장 흔하고 널리 쓰이는 인프라 구조가 바로 3계층형 시스템으로웹서버 - AP서버 - DB서버
로 구성되어 있다.
위 2장의 그림이 이 책에서 말하고자 하는 핵심주제이다. 처음에는 약간 까다로울 수 있으나 천천히 살펴보면 이 책을 읽지 않아도 대부분 이해할 수 있을 만큼 도식화가 잘 되어 있다.
만약 이 책의 핵심인 3 ~ 5장을 읽은 후 그림을 다시 보게되면 매우 쉽게 이해될 것이다. 3장은 3계층형 시스템의 개요를 중심으로 인프라의 전체적인 특성과 3계층 시스템의 현위치, 그리고 가상화 등의 기술 트렌드를 조망한다.
4장은 직렬/병렬, 동기/비동기, 큐, 베타적제어, 상태, 데이터 구조, 탐색 알고리즘 등의 인프라에서 활용하는 IT 기본지식을 다룬다.
5장에서는 이들을 응용한 이론을 살펴보는데 캐시, 인터럽트, 폴링, IO, 저널링, 복제, 마스터-워커, 압축, 패러티 검출 등의 기술을 다룬다.
서버, 인프라 담당자를 위한 책인가?
아니다. 개인적으로 이 책은 프로그래머에게 더 적합한 책이라는 생각이 든다. 클라우드, 도커, 쿠버네티스 기반의데브옵스 환경에서도 프로그래머는 여전히 인프라에서 자유롭지 못하다
는 생각이 든다.특히 성능 이슈로 들어가면 더욱 그렇다. 현재 구성된 인프라의 기본을 이해하고 있어야 더욱 고성능의 애플리케이션을 개발할 수 있음은 물론 DB서버와 구조를 알아야 데이터 처리를 어떻게 효율적으로 다룰지 어떤 프로그램과 API를 활용해야 할지 정확한 판단이 가능하다.
프로젝트를 총괄하는 아키텍트나 관리자에게는 필수 지식이다. 더불어 1장에는 인프라 아키텍처를 집약, 분할, 수직, 수평, 지리 등의 유형별로 살펴보고 있어 관리자에게 도움이 된다.
전체 환경이나 인프라를 직접적으로 알 필요가 없는 말단 개발자라 할지라도 적어도
왜 이 언어를 사용하게 되었고 어떤 특성의 프로토콜이나 API를 활용하는지 이해하고 숙련도를 높이는데
학습적인 측면에서 능률을 높힐 수 있을 것이라 생각한다.위 그림은 3계층 시스템의 축소판인데 웹 개발자 특히 백엔드 개발자가 Httpd 프로세스에서 자유로울 수 있을까? 마찬가지로 AP서버에 해당하는 각종 WAS에서 스레드 지식을 모르고는 비즈니스 로직 등의 개발이 어렵다. 마찬가지로 DB서버의 SGA를 이해하지 못하면 쿼리 튜닝에서 자유롭지 못하다.
그저 국소적으로 이해하고 끝날 것인지 내부 인프라의 전체 그림을 이해하고 이에 종속적인 부분이 정상적으로 수행되도록 고려하며 개발할 것인지의 차이는 아마도 연봉과 커리어 앞날에 큰 영향을 끼칠 것이라 생각한다.
한 단계 더 깊이 들어가면
탐색 알고리즘
이 등장한다. 이 책이 인프라 서적임에도 불구하고 오히려 인프라 담당자가 더 어려울 수도 있는 부분도 상당 부분 존재한다.DB에서 SQL을 수행하며 인덱스를 찾아가는 과정이 인프라 내부까지 연결하여 설명한다.
이 예시와 같이 이 책의 최고 장점은
조각난 분야별 지식들을 하나의 전체 그림으로 그려가는 과정
이라 할 수 있겠다.인프라 담당자는 인프라를 지탱하는 IT 지식을 익히며 서비스 성능의 향상을 위한 최적의 인프라를 구성하는 노하우를 쌓을 수 있을 것이고, 마찬가지로 프로그래머도 내부 인프라에 대한 종속적인 지식의 이해를 바탕으로 고성능의 서비스를 제공하는 애플리케이션을 개발할 수 있을 것이다.
개인적으로 15년 정도 여러 직장을 다니며 풀스택 개발자라고 할 수 있을만큼 여러 기술을 섭렵했는데 이 책을 통해 몰랐던 지식들을 보완하고 나니 인프라 구조 및 IT 서비스에 대한 전체적인 시야를 가질 수 있어 매우 만족스러웠다.
네트워크, 무중단, 성능
6장은 네트워크를 다룬다. 그저 네트워크의 이론 지식만 열거되었다면 또 무슨 소리인지 충분히 이해하지 못한 채 넘어갈 수 있겠으나OSI 7계층을 중심으로 각 계층을 하나하나씩 뜯어본다
. 뜯다보면 왜 프로그램 언어별로 소켓 통신을 위한 API들이 그런 형식으로 호출되고 설계되는지 쉽게 이해가 된다.7장은
무중단 및 이중화 구성
에 대해 다룬다. 가용성을 최대한 확보하여 안정성을 유지하기 위한 구성을 꾀하는데 어느 요소 하나 빠짐없이 모두 한 눈에 정리할 수 있도록 연결되어 있어 매우 유익했다. 하나 하나의 가용성을 다루는 책은 많지만 전체를 조망하는 책은 찾기 힘들다.마지막 8장은
성능
을 다룬다. 응답, 처리량(Throughput), 병목현상의 개념을 정리한 후 병목 현상을 찾는 방법과 저자들의 실전 사례들이 공유된다.
다루는 내용이 너무도 방대하여 리뷰를 작성하기까지 많은 고민을 했다. 서두에 어떤 책인지 짧게 소개하고 싶었지만 책의 제목이 내용을 너무도 잘 대변하는데다가, 그림을 기반으로 한 전개로 구성되어 있어 글보다는 그림과 사례로 리뷰를 쓰는 것이 책의 특징을 가장 잘 살리는 방법이라 생각했다.
이 책은 이미 5년 전에 베스트셀러 반열
에 올랐던 책이다. 난 그때로 꽤 감명깊게 읽었고 당시 IT의 전반적인 실용적인 눈을 키우는데 이 책으로부터 많은 도움을 받았다.
개정판에서 달라진 점은 이제 대세가 된 클라우드 기반의 지식이 대거 포함되었다는 점과 당시에 유행했으나 지금은 필요하지 않은 구닥다리 일부 설명이 삭제되었다는 점 정도이다. 디자인 측면의 변화도 반가웠는데 완전 풀컬러는 아니지만 구판과는 달리 가독성을 위한 색상 구분이 되고 있어 훨씬 읽기 편했다.
이 책은 인프라 담당자나 개발자는 물론 CEO, 마케팅 혹은 비즈니스를 담당하는 실무자까지 IT 직군에 종사하는 사람이라면 반드시 읽어봐야 할 책이다. 실전에서 IT 지식과 제품들이 어떻게 활용되고 엮이는지 거의 모두 다루고 있기 때문이다.