오늘은 제가 최근에 읽으면서 굉장히 많은 도움을 받았던 책을 공유할까 합니다.
저는 Codecademy의 Python 튜토리얼 시리즈로 프로그래밍을 입문하고, 이후에 Node.js/React.js 등을 배우다보니 여기까지 오게 되었습니다.
문제는 이 분야가 생각보다 알아야할게 많다는 것이었죠.
단순히 언어의 문법을 숙지하는 것 외에도 흔히 터미널이라고 부르는 프로그램에 익숙해져야 합니다. (가장 간단한 튜토리얼을 따라하더라도 5~10번의 커맨드를 입력해야 하죠.)
cd
, ls
, mkdir
등과 같은 간단한 커맨드를 익히는 일은 어렵지 않았습니다. 그냥 그 커맨드가 무엇을 의미하는지 금방 검색할 수 있었거든요.
하지만 환경변수를 설정해야된다거나 .bash_profile
을 건드려서 특정 설정을 해줘야 한다거나 하는 식으로 일이 복잡해지다보면 지식의 부족함을 원망하게 됩니다.
그동안 어렴풋하게 이건 이렇겠구나하고 넘어갔던 것들을 정리하고 싶어서 리눅스와 관련된 책을 찾다보니 How Linux Works: What Every Superuser Should Know라는 책이 평이 가장 좋았습니다.
(한글판도 있습니다!: 리눅스 작동법)
책이 두께가 꽤 있었지만 천천히 읽어나가다보니 일주일 정도면 다 읽을 수 있었습니다.
제가 유용하다고 생각했던 부분에는 * 표시를 남기겠습니다. 참고해주세요.
The Big Picture
말 그래도 큰 그림에 대한 이야기를 해줍니다.
메모리, 커널, 유저 스페이스 등 리눅스의 핵심 요소를 둘러보는 시간을 가집니다.
* 2. Basic commands and Directory Hierachy
리눅스 쉘과 친해지기 위해 자주 사용되는 커맨드를 둘러봅니다.
Devices
리눅스를 구성하는 다양한 device에 대해 배웁니다. 조금 낯선 내용이 많이 나와서 잘 이해하지는 못했습니다.
Disks and Filesystems
파일 시스템과 Swap Space에 대한 이야기를 합니다. 처음 들어보는 내용이 조금 많았습니다.
How the Linux Kernel Boots
리눅스 커널이 어떤 식으로 부팅하는지에 대해 알아봅니다. GRUB 프로그램을 살펴봅니다.
How User Space Starts
5와 이어지는 내용으로 유저 스페이스의 부팅 과정을 다룹니다.
* 7. System Configuration: Logging, System Time, Batch Jobs, and Users
크론탭과 관련된 내용이 다소 유용했습니다.
* 8. A Closer Look at Processes and Resource Utilization
서버를 모니터링할 때 자주 사용되는 Top(htop) 등의 프로그램에서 RAM, CPU, I/O 등의 항목을 어떤 식으로 봐야하는지 알려줍니다.
** 9. Understanding Your Network and Its Configuration
AWS와 같은 클라우드 서비스를 사용하다보면 필요한 네트워크 개념을 많이 알려줍니다. 한 번은 읽어보시기를 강추하는 부분입니다.
Network Applications and Services
9와 달리 실제 네트워킹 프로그램을 살펴보는 시간을 가집니다.
** 11. Introduction to Shell Scripts
쉘 스크립트 튜토리얼입니다. 마치 해킹을 하는 듯한 기분(?)을 느낄 수 있습니다. 역시 강추!
이후 부분은 아직 읽지 않았습니다.
현재까지 읽은 부분만으로 말씀을 드리자면 네트워크 개념 부분과 쉘 스크립트 부분이 가장 흥미로웠습니다. 다른 부분에서도 처음 듣는 단어나 개념이 많이 나왔지만 이전까지 그냥 넘어갔던 지식들을 연결해주는 느낌이 들어서 좋았습니다.
책이 다소 깊게 들어가는 부분도 없지 않아 있지만 저자가 이 부분은 스킵하셔도 됩니다 하는 식으로 언급을 해주기 때문에 그런 부분은 읽지 않았습니다.
다소 어려운 내용도 포함돼있지만 그런 경우에는 과감하게(?) 넘어갔습니다.
네트워킹, 파일 시스템, 부팅, 쉘 스크립트 등 Unix 계열 운영체제를 사용하는 유저라면 알아야할 내용을 다양한 예제와 함께 설명해줍니다.
최근 서버 환경이 클라우드 중심으로 재편되고, 전통적으로 운영의 영역(Ops)이었던 분야들이 개발 영역으로 넘어오고 있습니다.
지금까지 기본적인 커맨드만 알고 있었다면 한 번쯤 시간을 투자해서 읽어도 좋은 책이라고 생각합니다.
모두 Happy Hacking :)