배경
🛰️
서평 •  • 읽는데 9분 소요

그림으로 이해하는 서버 구조와 기술

책 『그림으로 이해하는 서버 구조와 기술』을 읽고 작성한 서평입니다.

#Book


지난달에 읽었던 책 『컴퓨터 밑바닥의 비밀』 의 경험이 만족스러워서, 길벗의 책을 하나 더 지원받게 되었습니다. 이번에 읽은 책은 『그림으로 이해하는 서버 구조와 기술』 입니다. 제목만 보고 고르긴 했는데 표지가 귀엽네요.

이미지 커여운 표지 디자인

이 책을 고른 이유는 프론트엔드 개발자로서 서버와 인프라에 대한 지식 부족을 느낀 경험이 있었기 때문입니다.

예전에 SPA가 유행할 때는 단순히 스토리지와 CDN 서비스만 잘 활용하는 것 정도로도 서비스를 운영할 수 있었지만, SSR과 BFF(Backend For Frontend), React의 서버 컴포넌트와 같은 기술이 대중화되면서 프론트엔드 개발팀이 자체적으로 서버 운영을 하는 경우가 많아졌습니다.

특히 저는 회사에서 자체 데이터 센터를 운영하는 환경에서 일하다 보니, 내부적으로만 사용하는 용어들이 많고 추상화된 구조로 숨겨진 것들이 많아서 인프라 이해에 어려움을 느끼곤 했습니다. 온 프레미스(On-premise)이면서 동시에 클라우드이기도 한 환경이랄까…?

그런 점에서 봤을 때 그림으로 이해하는, 서버를 쉽고 재미있게 라는 키워드들이 저에게 매력적으로 다가왔는데요, 이 책이 대상으로 하고있는 독자 역시 서버 공부를 시작하려는 개인, 인프라 지식이 부족하여 어렴풋하게 이해하고 있거나 인프라 구조를 잘 모르는 신입 엔지니어를 대상으로 한다고 되어 있어서 이 책을 선택하게 되었습니다.

오늘도 책에 대해 간단한 소개를 하고 각 섹션 별에서 인상 깊게 읽은 부분을 소개해 드리고자 합니다. 이번 포스트를 통해 서버와 인프라, 네트워크와 보안, 장애 대책에 대한 개념을 알고 싶은 분 들에게 도움이 되었으면 좋겠습니다.

책 소개

책

이 책은 전 인프라 개발자 겸 학교 교사(!)인 요코타 카즈키와 엔도 유키가 쓴 책으로, 서버 구조와 기술에 대한 기본적인 내용을 설명하고 있습니다. 책에서 다루는 내용은 크게 8장으로 나뉘어져 있는데요, 목차가 아주 시원시원(?)해서 좋았습니다.

  • 서버 기초 지식
  • 네트워크 기초 지식
  • 서버의 형태
  • 외부용 서버
  • 내부용 서버
  • 서버 보안
  • 서버 장애
  • 서버 운용

책 분량은 240쪽 정도이고, 제목에 적힌 것처럼 그림과 표가 많아서 생각보다는 빨리 읽을 수 있습니다. 저는 순수 독서 시간으로 4시간 정도 걸린 것 같네요. 별도로 실습이나 코드가 나오지는 않아서 가볍게 읽기 좋은 책입니다.

그럼 지금부터 각 섹션에서 인상 깊게 읽은 부분을 소개해 드리겠습니다.

서버 기초 지식

1장에서는 현대 사회에서 서버는 전기나 가스, 수도처럼 일상생활에 꼭 필요한 인프라가 되었다는 점을 소개하면서, 구체적인 서비스 사례와 역할, 서버 구성에 관해 설명합니다.

ㅁㄴㅇ 네트워크의 기본 구성 구조도

서버의 종류, 서버-클라이언트 구조, 서버 소프트웨어 같은 개념을 다루는데 사실 1장이 워낙 짧기도 하고 간단한 내용을 다루고 있어서 크게 인상 깊은 부분이 없긴 했습니다(…).

그래서 서버 네트워크의 전반적인 구조를 나타낸 그림을 가져와 봤습니다. WAN, LAN, DMZ 같은 개념처럼 대학교에서 네트워크 공부할 때 배웠던 내용을 오랜만에 보니 반가웠습니다.

네트워크 기초 지식

2장에서는 인터넷에서 꼭 필요한 다양한 네트워크 용어와 기술을 소개합니다. OSI 7계층, TCP/IP 프로토콜, MAC 주소, 공인/사설 주소, TCP와 UDP, 포트 등의 개념을 다루고 있습니다.

ㅁㄴㅇ 계층 관점에서 소개한 프로토콜의 역할

네트워크 관련 개념을 다루다 보니 프로토콜을 설명하는데, 헷갈릴 수도 있는 각 계층 간의 역할을 그림으로 잘 설명해 주고 있어서 이해하기 쉬웠습니다.

여기서부터는 저도 몰랐던 지식이 하나둘 나오기 시작하더라구요. 그중에서도 제가 잘 몰랐던 부분이…

ㅁㄴㅇ 새롭게 알게 된 개념

ARP(Address Resolution Protocol)와 NAPT(Network Address Port Translation)에 대한 설명이었습니다. ARP는 IP 주소를 MAC 주소로 변환하는 프로토콜이고, NAPT는 공인 IP 주소와 포트를 이용해 사설 IP 주소로 변환하는 프로토콜이라고 합니다.

이러한 개념들이 있다는 것은 알고 있었는데 정확한 명칭과 동작 원리에 대해서는 잘 몰랐기 때문에 새로운 지식을 알게 되었습니다.

서버의 형태

3장에서는 서버의 용도와 형태, 구성에 대해 소개합니다. DMZ, 온 프레미스와 클라우드, 가상화와 컨테이너 등의 개념을 다루고 있는데요.

ㅁㄴㅇ 흔히 도커로 사용하고 있는 컨테이너 기술

여기서는 서버 가상화의 종류와 장단점을 설명하고, 컨테이너의 등장 배경까지 이어지는 설명이 자연스럽게 나와서 좋았습니다. 우리가 흔히 도커로 사용하는 컨테이너 기술이 어떤 것인지, 가상화와 컨테이너의 차이점이 무엇인지 등을 알 수 있었습니다.

ㅁㄴㅇ 약간 일본 감성 느껴지는…?

개인적으로는 컨테이너를 셰어 하우스로 비유가 재미있다고 느끼기도 했구요. 또한 DMZ라는 개념을 소개하면서 외부용 서버와 내부용 서버의 구분을 설명하는데 이 부분이 다음 장으로 이어지게 됩니다.

외부용 서버

4장에서는 DMZ에서 외부 접근이 가능한 외부용 서버를 이루는 기술에 관해 설명합니다. 웹 서버와 HTTP 통신, 웹 애플리케이션 서버, DNS, 메일 서버, FTP 등의 개념을 다루는데요.

ㅁㄴㅇ 평소에 잘 모르고 사용했던 메일 서버에 대한 설명

개인적으로는 메일 서버에 대한 부분을 흥미롭게 읽었습니다. 메일 서버를 별도로 두는 것은 알고 있었지만, 이를 프론트엔드에서 주로 관리하지는 않다 보니 잘 모르는 개념이었거든요. 송신과 수신 프로토콜 종류가 다르며, 메일 서버가 DNS MX 레코드를 통해 메일 서버를 찾는 방식 등을 새롭게 알게 되었습니다.

내부용 서버

5장에서는 DMZ에서 내부 접근만 가능한 내부용 서버를 구성하는 기술에 관해 설명합니다. DHCP, DNS 캐시 서버, 파일 서버, 형상 관리 서버, 데이터베이스 서버 등의 개념을 다루는데요.

ㅁㄴㅇ 디렉토리 서버에 대한 필요성

디렉토리 서버와 LDAP(Lightweight Directory Access Protocol)에 대한 설명이 인상 깊었습니다. 디렉토리 서버는 사용자 정보나 자원 정보를 저장하고 검색하는 서버로, LDAP는 이러한 디렉토리 서버에 접근하기 위한 프로토콜이라고 합니다. 이를 통해 사용자 인증, 권한 관리, 자원 검색 등을 할 수 있다는 것을 알게 되었습니다.

이걸 그냥 설명만 읽는다면 왜 필요한 것인지 이해하기가 어려울 수도 있었는데, 제가 대기업을 다니는 경험 덕분에 좀 더 쉽게 이해할 수 있었습니다. 사내에서도 JIRA나 위키, 깃허브 등의 여러가지 엔터프라이즈 서비스를 사용하고 있는데 각각의 서비스 로그인을 할 때 인트라넷 계정 정보를 이용해 로그인하거든요. 이런 서비스들을 사용할 때 디렉토리 서버와 LDAP를 이용해 사용자 정보를 관리하고 있을 것이라는 생각이 들었습니다.

서버 보안

6장은 보안의 3요소인 기밀성, 가용성, 무결성 측면에서 알아야 할 기술과 개념에 관해 설명합니다. 방화벽, 보안 구역, IDS와 IPS, UTM, WAF, SSL, VPN 등의 개념을 다루는데요.

ㅁㄴㅇ 공개키 암호화 방식

여러 보안 기술이 소개 되었지만 설명이 좀 추상적으로 되어 있어서(…) 그나마 중요하다고 생각한 SSL/TLS 암호화 방식에 사용되는 대칭키와 공개키 암호화 방식에 대한 설명을 가져와 봤습니다. 대칭키 암호화 방식은 암호화와 복호화에 같은 키를 사용하는 방식이고, 공개키 암호화 방식은 암호화와 복호화에 서로 다른 키를 사용하는 방식이라고 합니다. 각각 장단점이 있어서 HTTPS 통신에는 이를 적절히 조합해서 사용하기도 하죠.

서버 장애와 서버 운용

7장은 서버 장애, 8장은 서버 운용에 대한 대책을 다룹니다. 서버에서 장애가 발생하면 사용자에게 큰 영향을 줄 수 있기 때문에 장애가 발생하지 않도록 대책을 세우고 안정적으로 운용하는 방법에 대해 설명하는데요.

ㅁㄴㅇ 이게 얼마 만에 보는 개념이여

7장에서 인상깊은 부분으로는 이중화 방법 중 하나인 RAID(Redundant Array of Independent Disks)에 대한 설명이었습니다. RAID는 여러 개의 하드디스크를 하나로 묶어서 데이터를 저장하는 방식으로, 데이터를 분산 저장하거나 복제하여 데이터 손실을 방지하는 방식이라고 합니다. 이것을 꼽은 이유는 예전에 데이터베이스 수업을 들으면서 잠깐 배웠던 지식을 여기서 우연히 만나서 반가웠거든요.

사실 데이터 이중화는 2022년 판교 데이터 센터 화재로 인한 카카오 서비스 장애 사건 이 발생한 후부터 중요도를 깨달았거든요. 이러한 디스크 이중화 방법 외에도 NIC(Network Interface Card) 이중화, 라우터 이중화, 전원 이중화 등 다양한 방법이 있고 이를 적절히 조합하여 서버 장애에 대비할 수 있다는 것을 알게 되었습니다.

ㅁㄴㅇ 최근에 회사 업무에서도 이 기술을 쓰고 있다

8장에서는 여러 운용 방법이 나오는데 그중에서 SSO(Single Sign-On)을 꼽아봤습니다. 저는 여태껏 SSO, SAML, OAuth, OpenID 같은 용어의 차이점에 대해서는 잘 몰랐는데 이 책을 읽으면서 개념의 차이를 어렴풋하게나마 알게 되었습니다. SSO는 여러 서비스에 대해 한 번의 로그인으로 접근할 수 있게 해주는 방식이고, SAML은 SSO를 위한 프로토콜이라고 합니다. OpenID는 인증 정보만 제공하는 기술인 반면 OAuth는 인증과 권한 부여를 위한 기술이라는 차이가 있더라구요.

후기

패스트푸드 짧고 빠르게 개념을 훑을 수 있다는 것은 좋지만… 영양가를 챙기기엔 약간 아쉽달까

길벗 홈페이지를 찾아보니 그림으로 이해하는 IT 개념 입문 시리즈가 있는데, 이 책은 그 시리즈 중에서도 서버에 대한 내용을 다루고 있다고 볼 수 있습니다.

그래서 그런지 이 책에서 가장 좋았던 점을 꼽아보자면 그림과 비유가 많아서 가볍게 읽을 수 있었다는 점 입니다. 인프라에 대한 부분은 저도 배우는 입장이라 평가를 하기가 어렵지만, 네트워크와 데이터베이스, 보안 등의 설명은 필수적인 내용을 짧게 잘 담아냈다고 생각합니다.

그리고 이게 원문은 일본 책이라서 그런지 약간의 일본 감성이 느껴지는데 역자 분께서 로컬라이징에 나름 많이 신경 써주셨다는게 느껴졌습니다. 특히 자료 화면이나 사진 등의 자료가 한국식으로 바뀌어 있는 것이 눈에 띄었습니다.

다만 아쉬웠던 점도 있는데, 여러 개념을 얕고 넓게 다루다 보니 이 책만으로는 충분한 학습은 어렵다는 점입니다. 전반적인 개념을 훑을 수 있다는 관점에서는 장점이지만, 이게 한편으로는 키워드를 단순히 나열하는 것처럼 느껴지기도 했고, 이 책에서 나오는 설명만으로는 그 개념을 완전히 이해하기가 부족한 면이 있습니다.

그래서 이 책을 잘 활용하기 위해서는, 책에서 나온 키워드들을 직접 검색하면서 읽는 게 좋을 것 같았습니다. 실제로 저도 이 책을 읽으면서 보충 설명이 필요한 키워드는 검색하고 ChatGPT를 활용하면서 이해도를 높였습니다.

결론적으로 이 책은 서버와 인프라에 대한 기본적인 개념을 알고 싶은 분들에게 추천할 만 하고, 이 책을 통해 알게 된 지식으로 추가적인 학습을 이어 나가는 것이 좋을 것 같습니다.

ㅁㄴㅇ

사실 프론트엔드 개발자가 인프라를 거쳐 물리 서버에 대한 지식까지 반드시 알아야 한다고 생각하진 않지만, 이러한 지식에 대한 필요성을 가장 잘 나타낸 문구가 옮긴이의 말에 있어서 이를 인용하면서 후기를 마치겠습니다.

사실 특별히 문제가 없는 한 일상생활 속에서 인프라 자체에 관심을 가질 기회는 많지 않습니다. 하지만 정보 시스템 인프라에 대한 의존도가 높아지면 문제가 발생했을 때 생활에 심각한 차질이 생길 수밖에 없습니다. 그런 상황에서 IT 종사자뿐만 아니라 일반 사용자도 기본적인 서버 지식을 갖추고 있다면 문제를 파악하고 개선할 수 있는 단서를 더 빠르게 찾게 될지도 모릅니다.

- 5p

이 포스트가 유익하셨다면?




프로필 사진

👨‍💻 정종윤

글 쓰는 것을 좋아하는 프론트엔드 개발자입니다. 온라인에서는 재그지그라는 닉네임으로 활동하고 있습니다.


Copyright © 2024, All right reserved.

Built with Gatsby