책소개
“허구한 날 반복해서 사용하는 레거시 명령 말고 생산성을 높일 수 있는 최신 기능을 간결하게 익힐 수는 없을까?” - 리눅스를 오래 사용해온 숙련된 엔지니어
“리눅스를 따로 공부할 시간은 없는데 리눅스 생태계를 둘러싼 핵심 정보와 기본 개념만 파악할 수는 없을까?” - 리눅스를 실무에서 곧바로 사용해야 하는 신입 엔지니어
특정 배포판에 치우치지 않고 현업에서 리눅스를 다뤄야 하는 개발자가 알아야 할 핵심 정보만 뽑아내 군더더기 없이 설명한 모던 리눅스 핸드북이 출간됐다.
핵심 리눅스 명령어를 빠른 템포로 살펴보며 작업 흐름을 향상시키는 팁과 요령을 알려준다. 또한 개발부터 업무 관련 작업에 이르기까지, 개발자, 소프트웨어 아키텍트, 사이트 신뢰성 엔지니어(SRE) 등 모두가 각자의 일상적인 필요에 맞게 리눅스를 사용하는 방법을 알짜만 골라 배운다. 모던 리눅스 터미널과 셸을 직접 실습해보며 작업 부하를 관리하는 방법도 설명한다.
| 이 책에서 다루는 내용 |
● 관리자 측면이 아닌 현대적인(모던) 작업 환경으로서 리눅스 사용
● 리눅스 커널, 터미널 멀티플렉서, 인간 친화적인 셸, 이식 가능한 셸 스크립팅 등 중요한 구성요소 학습
● 파일 권한부터 캐퍼빌리티까지 접근 제어, 그리고 기본 빌딩 블록으로서 파일 시스템의 역할
● 애플리케이션 종속성 관리와 컨테이너
● DNS 등 리눅스 네트워킹 스택과 도구를 다루는 실전 경험
● 최신 운영체제 관측가능성을 적용해 작업 부하 관리
● 프로세스 간 통신, 가상 머신, 선별된 보안 주제
| 이 책의 대상 독자 |
이 책은 소프트웨어 개발자, 소프트웨어 설계자, QA 테스트 엔지니어, 데브옵스(DevOps), SRE 역할 등 전문적인 환경에서 리눅스를 사용하기를 원하거나 사용해야 하는 사람들을 위해 쓰였다. 또한 3D 프린팅이나 스마트홈 작업 등의 활동을 하며 처음 리눅스를 취미로 접한 애호가 등 대체로 운영체제나, 특히 리눅스/유닉스에 대한 지식이 거의 또는 전혀 없는 독자도 염두에 뒀다. 이 책은 각 장이 진행되면서 차곡차곡 빌드업되었으므로 처음부터 끝까지 차례대로 읽어야 내용을 더욱 잘 이해할 수 있을 것이다. 다만 이미 리눅스에 익숙한 독자라면 참고 도서로 활용해도 좋다.
| 이 책의 구성 |
이 책을 끝낼 무렵에는 리눅스란 대체 무엇인지(1장), 리눅스의 핵심 구성요소는 무엇인지(2장과 3장) 이해하며, 필수 접근 제어 메커니즘을 열거하고 사용할 수 있게 된다(4장). 또한 리눅스의 기본 빌딩 블록인 파일시스템의 역할(5장)을 이해하고 애플리케이션이 무엇인지(6장)도 알 수 있다.
그러고 나서 리눅스 네트워킹 스택과 도구 실습(7장)을 해보게 된다. 또한 모던 운영체제의 관측가능성(8장)에 대해 알아보고 이를 적용해 워크로드를 관리하는 방법에 대해서도 배워본다.
또한 컨테이너를 사용하거나 보틀로켓(Bottlerocket)같이 불변성을 추구하는 배포판을 사용해 현대적인 방식으로 리눅스 애플리케이션을 실행하는 방법에 대해 배워보고, 시큐어 셸(SSH)과 P2P, 클라우드 동기화 메커니즘 같은 고급 도구를 사용해서 안전하게 통신(파일 다운로드 등)하고 데이터를 공유하는 방법(9장)을 알아본다.
저자소개
아마존 웹 서비스(AWS)의 오픈소스 관측가능성 서비스 팀의 솔루션 엔지니어링 책임자다. 메소스(Mesos)부터 쿠버네티스에 이르는 데이터 엔지니어링과 컨테이너 오케스트레이션으로서 경력을 쌓았다. W3C와 IETF에서 표준화 활동을 했으며, 요즘은 주로 고(Go) 언어로 코드를 작성한다. 아마존에 합류하기 전에는 레드햇, 메소스피어(Mesosphere)(현재 D2iQ), 맵알MapR(현재 HPE의 일부)에서 근무했으며 10여 년간 응용 연구(applied research) 분야에 몸담은 바 있다.
목차
1장 리눅스 소개
모던(현대적인) 환경이란 무엇인가
(지금까지의) 리눅스 이야기
운영체제는 왜 필요한가
리눅스 배포판
리소스 가시성
리눅스 운영체제의 전체 개요
정리
2장 리눅스 커널
리눅스 아키텍처
CPU 아키텍처
__x86 아키텍처
__ARM 아키텍처
__RISC-V 아키텍처
커널 구성요소
__프로세스 관리
__메모리 관리
__네트워킹
__파일시스템
__디바이스 드라이버
__시스템 콜
커널 확장
__모듈
__커널을 확장하는 현대적인 방법: eBPF
정리
3장 셸과 스크립팅
기본 개요
__터미널
__셸
__모던 리눅스 명령어
__일반 작업
인간 친화적인 셸
__피시 셸
__Z셸
__그 밖의 최신 셸
__어떤 셸을 사용해야 할까
터미널 멀티플렉서
__screen
__tmux
__그 밖의 멀티플렉서
__어떤 멀티플렉서를 사용해야 할까
스크립팅
__스크립팅의 기본 개요
__이식 가능한 배시 스크립트 작성
__스크립트 린트와 테스트
__전체 예제: 깃허브 사용자 정보 스크립트
정리
4장 접근 제어
기본 개요
__리소스와 소유권
__샌드박스
__접근 제어 유형
사용자
__로컬에서 사용자 관리하기
__중앙집중 사용자 관리
권한
__파일 권한
__프로세스 권한
고급 권한 관리
__캐퍼빌리티
__seccomp 프로필
__접근 제어 목록
우수 사례
정리
5장 파일시스템
기본 개요
가상 파일시스템
__논리 볼륨 관리자
__파일시스템 작업
__범용 파일시스템 레이아웃
의사 파일시스템
__procfs
__sysfs
__devfs
일반 파일
__범용 파일시스템
__인메모리 파일시스템
__쓰기 시 복사(CoW) 파일시스템
정리
6장 애플리케이션, 패키지 관리, 컨테이너
기본 개요
리눅스 시작 프로세스
systemd
__유닛
__systemctl로 관리하기
__journalctl로 모니터링하기
__예제: greeter 스케줄링
리눅스 애플리케이션 공급망
패키지와 패키지 관리자
__RPM 패키지 관리자
__데비안 deb
__프로그래밍 언어별 패키지 관리자
컨테이너
__리눅스 네임스페이스
__리눅스 cgroup
__쓰기 시 복사(CoW) 파일시스템
__도커
__다른 컨테이너 도구
최신 패키지 관리자
정리
7장 네트워킹
기본 개요
TCP/IP 스택
__링크 계층
__인터넷 계층
__전송 계층
__소켓
DNS
__DNS 레코드
__DNS 조회
애플리케이션 계층 네트워킹
__웹
__시큐어 셸(SSH)
__파일 전송
__네트워크 파일 시스템(NFS)
__윈도우와의 공유
고급 네트워크
__whois
__동적 호스트 구성 프로토콜(DHCP)
__네트워크 타임 프로토콜(NTP)
__wireshark와 tshark
__그 밖의 고급 도구
정리
8장 관측가능성
기본 개요
__관측가능성 전략
__용어
__시그널 유형
로깅
__Syslog
__journalctl
모니터링
__디바이스 I/O와 네트워크 인터페이스
__통합 성능 모니터
__계측
고급 관측가능성
__추적과 프로파일링
__프로메테우스와 그라파나
정리
9장 심화 주제
프로세스 간 통신
__시그널
__이름 있는 파이프
__유닉스 도메인 소켓
가상 머신
__커널 기반 가상 머신
__파이어크래커
모던 리눅스 배포판
__레드햇 엔터프라이즈 리눅스 코어OS
__플랫카 컨테이너 리눅스
__보틀로켓
__랜처OS
특별한 보안 도구
__커버로스
__장착형 인증 모듈
그 밖의 유망한 제품군
__닉스OS
__데스크톱 컴퓨터상의 리눅스
__임베디드 시스템상의 리눅스
__클라우드 IDE상의 리눅스
정리
부록 A 리눅스 작업에 유용한 치트시트
부록 B 모던 리눅스 도구