메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

NGINX 쿡북

112가지 레시피로 배우는 고성능 부하분산, 보안, 서버 배포와 관리

한빛미디어

번역서

절판

  • 저자 : 데릭 디용기
  • 번역 : 노승헌
  • 출간 : 2021-06-01
  • 페이지 : 236 쪽
  • ISBN : 9791162244340
  • 물류코드 :10434
  • 개정판정보 :개정판이 새로 출간되었습니다. 개정판 보기
  • 초급 초중급 중급 중고급 고급
4.8점 (23명)
좋아요 : 3

빠르고 안전한 웹 서비스를 위한 NGINX 레시피

 

엔진엑스는 널리 사용되는 웹 서버용 오픈 소스 소프트웨어다. 가볍고 확장 가능하며 요청을 동시에 처리할 수 있어 트래픽이 높을 때에도 성능이 뛰어나다. HTTP, TCP, UDP의 부하를 효율적으로 분산하는 로드 밸런서와 프록시 서버로도 사용되어 웹 서비스의 성능을 향상한다.

 

이 책은 엔진엑스의 고성능 부하분산과 보안 기능, 서버 배포와 관리 방법에 초점을 맞춘다. 책에 수록된 풍부한 레시피는 엔진엑스를 설치하고 사용하는 방법부터 실전 운영 팁까지 다룬다. 엔진엑스라는 애플리케이션 전송 플랫폼을 최대한으로 활용할 수 있도록 상용 버전인 엔진엑스 플러스와 엔진엑스 컨트롤러 기능도 함께 소개한다. 다양한 기능을 필요에 맞게 적용해 빠르고 안전한 웹 서비스를 만들어보자.

 

 

주요 내용

  • HTTP, TCP, UDP 서버 부하분산
  • 트래픽 암호화, 보안 링크, HTTP 인증 하위 요청을 통한 접근 보안
  • 엔진엑스를 구글 클라우드, AWS, 애저 클라우드 컴퓨팅 서비스로 배포하기
  • 엔진엑스 플러스 대시보드와 API로 활동 모니터링하기
  • 엔진엑스 플러스 앱 프로텍트 모듈 설치 및 설정하기
  • 컨테이너 환경에서 엔진엑스와 엔진엑스 플러스 사용하기
  • 엔진엑스 컨트롤러 ADC를 사용해 WAF 활성화하기

 

추천사

 

“대규모 아키텍처를 위한 최고의 엔진엑스 지침서입니다. 책에서 소개하는 사용 사례는 마이크로서비스 환경에서 작업하는 동안 발생하는 거의 모든 문제를 해결하는 데 도움을 줍니다.”

_ 곤살로 스피나, Brubank 소프트웨어 엔지니어

데릭 디용기 저자

데릭 디용기

평생 기술에 대한 열정을 가져온 리눅스/유닉스 기반 시스템 및 웹 애플리케이션 전문가. 웹 개발, 시스템 관리 및 네트워킹 경험을 통해 현대 웹 아키텍처에 대한 포괄적인 지식을 쌓았다. 사이트 안정성 및 클라우드 솔루션 엔지니어 팀의 리더로서 수많은 애플리케이션의 자가 치유 및 자동 확장 인프라를 생산한다. 고가용성 애플리케이션을 설계, 구축, 유지 관리하며 클라우드를 막 도입하는 대규모 기업을 컨설팅하기도 한다. 데릭과 그의 팀은 기술 파도의 최전선에서 매일 클라우드 모범 사례를 엔지니어링한다. 탄력적인 클라우드 아키텍처에 대한 입증된 실적을 바탕으로 고객에게 가장 이익이 되는 보안 및 유지 관리를 위한 클라우드 배포를 개척하고 있다.

 

노승헌 역자

노승헌

눈물 없이 볼 수 없는 한 편의 뮤직비디오 같은 인생을 만드느라 바쁜 센티멘털리스트. 삼성네트웍스, SK텔레콤, 아카마이 코리아를 거치면서 개발자, 프로젝트 매니저, 제품 오너, 솔루션 아키텍트 등 다양한 영역에서 자신을 시험해보고 있습니다. 현재는 라인플러스에서 사용자가 서비스를 더 쾌적하게 사용할 수 있도록 글로벌 트래픽에 관한 업무를 수행합니다. 집필한 도서로는 『나는 LINE 개발자입니다』(한빛미디어, 2019), 『슬랙으로 협업하기』(위키북스, 2017), 『소셜 네트워크로 세상을 바꾼 사람들』(길벗, 2013) 등이 있습니다.

 

chapter 1 엔진엑스 기초

1.0 소개

1.1 데비안/우분투 리눅스 배포판에 설치

1.2 레드햇/센트OS 리눅스 배포판에 설치

1.3 엔진엑스 플러스 설치

1.4 설치 상태 점검

1.5 주요 설정 파일, 디렉터리, 명령어

1.6 정적 콘텐츠 서비스

1.7 무중단 설정 리로드

 

chapter 2 고성능 부하분산

2.0 소개

2.1 HTTP 부하분산

2.2 TCP 부하분산

2.3 UDP 부하분산

2.4 부하분산 알고리즘

2.5 스티키 쿠키(엔진엑스 플러스)

2.6 스티키 런(엔진엑스 플러스)

2.7 스티키 라우팅(엔진엑스 플러스)

2.8 커넥션 드레이닝(엔진엑스 플러스)

2.9 수동적인 헬스 체크

2.10 능동적인 헬스 체크(엔진엑스 플러스)

2.11 슬로 스타트(엔진엑스 플러스)

 

chapter 3 트래픽 관리

3.0 소개

3.1 A/B 테스트

3.2 GeoIP 모듈과 데이터베이스 활용

3.3 국가 단위 접근 차단

3.4 실제 사용자 IP 찾기

3.5 연결 제한

3.6 요청 빈도 제한

3.7 전송 대역폭 제한

 

chapter 4 대규모 확장 가능한 콘텐츠 캐싱

4.0 소개

4.1 캐시 영역

4.2 캐시 락

4.3 해시 키 값 캐시

4.4 캐시 우회

4.5 캐시 성능

4.6 캐시 퍼지(엔진엑스 플러스)

4.7 캐시 분할

 

chapter 5 프로그래머빌리티와 자동화

5.0 소개

5.1 엔진엑스 플러스 API

5.2 키-값 저장소 사용(엔진엑스 플러스)

5.3 상용 프로그래밍 언어를 통한 엔진엑스 확장

5.4 퍼핏을 이용한 엔진엑스 설치

5.5 셰프를 이용한 엔진엑스 설치

5.6 앤서블을 이용한 엔진엑스 설치

5.7 솔트스택을 이용한 엔진엑스 설치

5.8 콘술 템플릿 기능을 이용한 설정 자동화

 

chapter 6 인증

6.0 소개

6.1 HTTP 기본 인증

6.2 인증을 위한 하위 요청

6.3 JWT 검증(엔진엑스 플러스)

6.4 JSON 웹 키 생성(엔진엑스 플러스)

6.5 JSON 웹 토큰 검증(엔진엑스 플러스)

6.6 JSON 웹 키 세트 획득 자동화와 캐싱(엔진엑스 플러스)

6.7 오픈아이디 커넥트 SSO를 통한 사용자 인증(엔진엑스 플러스)

 

chapter 7 보안 제어

7.0 소개

7.1 IP 주소 기반 접근 제어

7.2 크로스 오리진 리소스 공유(CORS)

7.3 클라이언트 측 암호화

7.4 고급 클라이언트 측 암호화

7.5 업스트림 암호화

7.6 location 블록 보호

7.7 비밀값을 활용한 보안 링크 생성

7.8 기간 제한 링크로 location 블록 보호

7.9 기간 제한 링크 생성

7.10 HTTPS 리다이렉션

7.11 HTTPS 리다이렉션 - SSL 오프로딩 계층이 있는 경우

7.12 HSTS

7.13 다중 계층 보안

7.14 다중 계층 DDoS 방어(엔진엑스 플러스)

7.15 앱 프로텍트 모듈 설치와 설정(엔진엑스 플러스)

 

chapter 8 HTTP/2

8.0 소개

8.1 기본 설정

8.2 gRPC

8.3 HTTP/2 서버 푸시

 

chapter 9 정교한 스트리밍

9.0 소개

9.1 MP4와 F LV 서비스

9.2 HLS 스트리밍(엔진엑스 플러스)

9.3 HDS 스트리밍(엔진엑스 플러스)

9.4 대역폭 제한(엔진엑스 플러스)


chapter 10 클라우드 환경 배포

10.0 소개

10.1 AWS 환경에서 자동 프로비저닝 구현하기

10.2 AWS ELB를 쓰지 않고 엔진엑스 노드로 라우팅하기

10.3 NLB 샌드위치

10.4 AWS 마켓플레이스를 통해 엔진엑스 구축하기(엔진엑스 플러스)

10.5 애저 환경에서 엔진엑스 가상 머신 이미지 생성하기

10.6 애저 환경에서 엔진엑스 스케일 세트를 통해 부하분산하기

10.7 애저 마켓플레이스의 이미지로 서버 배포하기

10.8 구글 컴퓨트 엔진에서 엔진엑스 배포하기

10.9 구글 컴퓨트 이미지 생성하기

10.10 구글 앱 엔진 프록시 생성하기

 

chapter 11 컨테이너와 마이크로서비스

11.0 소개

11.1 엔진엑스를 API 게이트웨이로 사용

11.2 DNS의 SRV 레코드 활용(엔진엑스 플러스)

11.3 공식 엔진엑스 이미지 사용

11.4 엔진엑스 도커 파일 생성

11.5 엔진엑스 플러스 도커 이미지 생성

11.6 엔진엑스에서 환경 변수 사용

11.7 쿠버네티스 인그레스 컨트롤러

11.8 프로메테우스 익스포터 모듈

 

chapter 12 고가용성 보장을 위한 설정

12.0 소개

12.1 엔진엑스 플러스 HA 모드

12.2 DNS를 이용한 로드 밸런서 부하분산

12.3 EC2의 부하분산

12.4 엔진엑스 플러스 설정 동기화

12.5 상태 공유와 영역 동기화(엔진엑스 플러스)

 

chapter 13 고급 활동 모니터링

13.0 소개

13.1 오픈 소스 엔진엑스의 stub status 활성화

13.2 모니터링 대시보드 활성화(엔진엑스 플러스)

13.3 엔진엑스 플러스 API를 이용한 지표 수집

 

chapter 14 디버깅과 트러블슈팅

14.0 소개

14.1 접근 로그 설정

14.2 오류 로그 설정

14.3 로그를 Syslog로 전달

14.4 요청 추적

14.5 엔진엑스를 위한 오픈트레이싱

 

chapter 15 성능 튜닝

15.0 소개

15.1 로드 드라이버를 이용한 시험 자동화

15.2 클라이언트와의 연결 유지

15.3 업스트림 서버와의 연결 유지

15.4 응답 버퍼링

15.5 접근 로그 버퍼링

15.6 운영체제 튜닝

 

chapter 16 엔진엑스 컨트롤러

16.0 소개

16.1 셋업 개요

16.2 엔진엑스 플러스를 컨트롤러와 연결하기

16.3 API를 이용해 엔진엑스 컨트롤러 운영하기

16.4 컨트롤러 앱 시큐리티를 이용해 WAF 활성화하기

 

chapter 17 실전 운영 팁

17.0 소개

17.1 include 구문을 사용해 깔끔한 설정 만들기

17.2 설정 디버깅

 

마치며

출판사 리뷰

 

엔진엑스의 핵심을 담은 112가지 레시피

엔진엑스는 2021년 4월 기준 웹 서버 시장 점유율 35.34%(출처: 넷크래프트)를 기록하며 세계적으로 인기를 얻고 있습니다. 1990년대부터 줄곧 1위를 지키던 아파치 웹 서버의 단점을 보완하려는 목적으로 개발되어 2004년 발표된 후, 고성능 트래픽 처리 기능을 기반으로 빠르게 성장했습니다. 엔진엑스는 웹 서버뿐 아니라 API 게이트웨이와 인그레스 컨트롤러 등 다양한 방식으로 모던 앱 환경에서 활용됩니다.

이 책은 간결한 레시피를 통해 엔진엑스가 지닌 강력한 기능을 소개합니다. 엔진엑스를 설치하는 방법과 디렉터리, 명령어 등 기초부터 설명해 입문자도 쉽게 엔진엑스를 시작할 수 있습니다. 필요한 기능을 손쉽게 찾아볼 수 있도록 쿡북 형식으로 문제와 해결 방법을 제시합니다. 책에서 소개하는 엔진엑스 오픈 소스와 엔진엑스 플러스의 다양한 기능을 결합해 빠르고 안전한 웹 서비스를 만들어보기 바랍니다.

 

 

장별 주요 내용

 

[1장 엔진엑스 기초]

운영체제별 설치 방법과 주요 설정 파일, 디렉터리, 명령어

 

[2장 고성능 부하분산]

HTTP, TCP, UDP 서버 부하분산 방법, 부하분산 알고리즘, 업스트림 서버 상태 모니터링 방법

 

[3장 트래픽 관리]

사용자 요청을 분기하거나 요청 빈도, 연결 수, 대역폭 등을 제한해 트래픽을 제어하는 방법


[4장 대규모 확장 가능한 콘텐츠 캐싱]

성능을 높이고 부하를 낮추기 위한 캐싱 방법

 

[5장 프로그래머빌리티와 자동화]

엔진엑스 플러스 API를 통해 키-값 저장소를 다루는 방법, 설정 관리 도구를 통해 엔진엑스를 설치하고 기본 설정을 템플릿화하는 방법

 

[6장 인증]

HTTP 기본 인증, 하위 요청을 통한 인증, JWT 검증 방법


[7장 보안 제어]

IP 주소 기반 접근 제어, CORS, 트래픽 암호화 방법

 

[8장 HTTP/2]

HTTP/2를 활성화하고 사용하는 방법, grPC, 서버 푸시 기능

 

[9장 정교한 스트리밍]

엔진엑스를 통해 MP4, FLV 파일을 스트리밍하는 방법과 엔진엑스 플러스의 HLS, HDS 기능

 

[10장 클라우드 환경 배포]

엔진엑스와 엔진엑스 플러스를 AWS, 애저, 구글 컴퓨트 엔진으로 배포하는 방법

 

[11장 컨테이너와 마이크로서비스]

엔진엑스와 엔진엑스 플러스를 API 게이트웨이로 사용하는 방법, 컨테이너 환경에서 사용하는 방법

 

[12장 고가용성 보장을 위한 설정]

DNS를 이용한 로드 밸런서 부하분산, EC2의 부하분산, 엔진엑스 플러스 설정 동기화 방법

 

[13장 고급 활동 모니터링]

엔진엑스 모니터링을 활성화하는 방법, 엔진엑스 플러스 대시보드와  API를 이용해 지표를 수집하는 방법

 

[14장 디버깅과 트러블슈팅]

로깅 방법, Syslog 프로토콜을 통해 로그를 전달하는 방법, 오픈트레이싱을 활용해 요청에 식별자를 부여하고 분석하는 방법

 

[15장 성능 튜닝]

자동화 도구를 사용해 시험을 수행하고 결과를 측정해 성능을 튜닝하는 방법

 

[16장 엔진엑스 컨트롤러]

엔진엑스 컨트롤러 셋업 개요, 컨트롤러를 엔진엑스 플러스 서버 인스턴스와 연결하고 API로 제어하는 방법

 

[17장 실전 운영 팁]

설정 파일이 정확하게 만들어졌는지 확인하는 방법, 설정 파일을 디버깅하는 방법

nginx-cookbook.jpg

 

이전에 스트리밍 서버를 개발하면서 nginx를 접하게 되었습니다.

nginx에 대해 단순히 웹서버라고 생각했었는데 방대한 설명 문서와 적용 사례들을 보면서 충격을 받았습니다. 그리고, 로드 밸런싱과 내부의 http 서버들을 앞 단에서 https 요청으로부터 변환해서 내부로 프록시 해주는 기능으로 유용하게 활용했던 적이 있었습니다. 이런 좋은 기억을 가진 상태에서 nginx 쿡북이라는 책을 만나게 되었습니다.

 

이 책은 nginx를 사용하는 방법과 nginx의 다양한 기능, 구성 및 성능 최적화와 보안 강화를 다루는 책입니다.

다양한 예제와 시나리오를 통해 nginx를 사용하는 방법을 설명하고 있으며, nginx의 개념과 구성을 상세하게 다루고 있습니다. 또한, nginx 프록시, 캐싱, 로드 밸런싱, SSL 인증서 설정 등 다양한 기능을 쉽게 이해하고 구성할 수 있도록 가이드 역할을 합니다.

뿐만 아니라, nginx의 성능 최적화와 보안 강화에 대한 방법을 다루고 있습니다. nginx의 성능을 최적화하는 방법, 캐시를 사용하여 웹 사이트의 성능을 향상시키는 방법, SSL 인증서를 설정하는 방법 등 nginx를 사용하여 웹 사이트를 더욱 안전하고 빠르게 만드는 방법에 대해 설명하고 있습니다.

 

nginx를 사용하는 방법과 기능을 다루는데 풍부한 내용을 담고 있지만 아쉬운 점도 있습니다.

nginx의 기본 개념을 상세히 다루지는 않습니다. 따라서 nginx를 처음 사용하는 사용자들에게는 이해하기 어려울 수 있습니다. nginx를 좀 더 능숙하게 다루기 위해서는 기본을 다루는 자료를 먼저 학습하고 이 책을 읽는 것이 효과적이라 생각합니다.

 

웹 개발자, 시스템 관리자, 서버 운영자 및 인프라 엔지니어 등에게 추천할 만한 책입니다.

nginx를 사용하여 웹 서버를 운영하거나 웹 애플리케이션을 개발하는 개발자들에게 유용할 것이라 생각합니다. nginx의 고급 기능 및 보안 강화라는 다소 전문적인 내용까지 다루고 있습니다.

시스템 관리자나 서버 운영자들에게도 적합합니다. nginx를 사용하여 웹 서버를 운영하는 방법과 구성하는 방법, 성능 최적화 및 보안 강화하는 방법 등에 대한 내용을 다루며, 서버 운영에 필요한 다양한 기능을 쉽게 구성할 수 있도록 가이드 역할도 합니다.

 

nginx를 앞으로도 활용할 계획이 있는 만큼, 도움이 많이 되는 책입니다. 아직 다뤄보지 못한 부분과 이해가 잘되지 않는 내용들이 남아 있습니다. 전문적인 지식이 필요한 개념과 기술들을 보강해 나가면서 종종 참고하는 책으로 활용해야겠습니다.

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

NGINX의 다양한 기능을 소개하는데요. 대부분의 경우, 문제를 제시하고 해당 문제를 해결하기 위한 NGINX 설정 파일을 보여줍니다. 

 

번역서이지만 술술 읽히는 편이라서 좋았습니다. 그러나 몇몇 부분에서 잘못 설명된 부분이 있는 것 같습니다. 물론, 이는 제가 잘못 이해한 것일 수도 있습니다.

 

1) 12장에서는 고가용성을 다루며, Keepalived와 같은 도구를 사용하여 NGINX 서버의 가용성을 높이는 방법을 다룹니다. 그러나 Keepalived 가 백업 서버로 하트비트를 보낸다고 적혀 있는데 이게 아니라 NGINX 서버에 하트비트를 보내야 하지 않을까? 그런 생각이 들었습니다. 

 

2) 15장에서는 성능 튜닝을 다루며, proxy_buffering 을 활성화하는 이유로 업스트림 서버의 응답을 메모리에 임시 파일에 기록되지 않도록 메모리에 버퍼링한다 라고 하는데 그러나 실제 레퍼런스에서는 임시 파일이 생성된다고 한다. 이 설명이 조금 다른 것 같다.
When buffering is enabled, nginx receives a response from the proxied server as soon as possible, saving it into the buffers set by the proxy_buffer_size and proxy_buffers directives. If the whole response does not fit into memory, a part of it can be saved to a temporary file on the disk. Writing to temporary files is controlled by the proxy_max_temp_file_size and proxy_temp_file_write_size directive

 

레퍼런스 링크: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_buffering

NGINX 입문 초보자가 보기에도 잘 이해할 수 있게끔 구성되어있습니다.



IMG_8136.jpg

 

 

 

국내에 Nginx 책이 많지 않은데, 신간이 나와 보게 됐다.

Nginx 창시자의 추천사가 실린 책이다. 신뢰를 가지고 봐도 될 듯.

 

 

가장 마음에 들었던 부분은 14장 디버깅과 트러블 슈팅, 17장 실전 운영 팁.

책이 두껍지 않아서 부담스럽지 않고 예제들이 간단하면서도 다양하다. 책이 얇아서 많은 내용을 담지는 못했을 것이라고 예상했는데 생각했던 것보다 폭넓게 내용을 다루고 있다. Nginx에 이렇게나 많은 기능이 있는지 처음 알았다. 모든 내용을 깊게 설명하고 있지는 않으니 부가적으로 필요한 내용들은 찾아서 봐야 할 듯.

아직 고차원적으로 Nginx를 사용하고 있지는 않아서 두고두고 볼 책으로 선택했는데 역시나 초심자가 보기에는 조금 어려운 책으로 느껴진다.

그래도 서버 개발자라면 책꽂이에 하나쯤 놓아두어야 할 책이라고 생각된다.

 

 

 

 

**

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성한 서평입니다.

**

 

 



 

현대 대부분의 애플리케이션은 웹과 모바일에서 동작한다. WWW로 불리는 웹의 태동이래 웹을 지탱하는 근간 요소인, 웹 서버의 역할은 언제나 중요했고, 지금도 중요한 구성 요소로 기능하고 있다. 전통적인 웹 서버의 표본이라고 할 수 있는 Apache(Httpd)는 맏형 역할을 자처하며 아직까지 그 명맥을 꾸준하게 유지해 오고 있지만, 거의 3인자에 가까웠던 Nginx가 IIS를 제치고 Apache를 넘어서며 웹 서버 시장 점유율 1위를 달성한 쾌거는 자못 경이롭기만 하다. 그렇다, Nginx는 더이상 만년 3위가 아니라 명실상부한 웹 서버 세계의 1인자인 셈이다. 

 

특히나 현대 대부분의 인프라가 클라우드 위에서 동작하면서 다양한 트래픽을 적재적소로 라우팅하며 보다 안정적으로 처리해야할 경우가 많이 발생하게 되었다. 이 때 Nginx가 웹 서버의 역할을 넘어서는 Proxy로서의 기능을 톡톡히 해 내며 클라우드 세계, 그것도 컨테이너 환경에서의 쓸모 있는 개체로서 위용을 과시하고 있는 상황이다. Nginx는 끊임 없이 발전하며 진화하고 있고, 보다 민첩해 지고 있다. 오늘은 Nginx를 주제로 한 한빛미디어에서 출판한 Nginx 쿡북이라는 책에 대한 리뷰를 작성해 보려고 한다. 

 

 

 

본 저서는 부제  '112가지 레시피로 배우는 고성능 부하분산, 보안, 서버 배포와 관리'가 의미하듯이 Nginx의 특정 소재에 대해 레시피 형태(문제, 해결 방법, 해설)로 이야기를 풀어 나가고 있다. 

 

 

 

특정 소재를 문제로 규정하고 그에 대한 해결책을 제시하며 논의해 나가는 과정을 통해, 독자는 Nginx의 다양한 기능과 특징에 대한 지식을 얻어 나갈 수 있다. 

 

이 책은 Nginx의 기초에 대해 이야기를 시작하여 고성능 부하분산, 트래픽 관리 등을 다루고 있다. 이후에 캐싱 기능에 대해 서술해 나가고 있는데 사실 Nginx의 캐싱 기능에 대해 크게 신경 써지 않았던 터라 해당 주제가 새롭게 다가 왔고 실전에 충분히 활용할 수 있는 유용한 팁을 얻어갈 수 있었다. IaC(Infrastructue as Code)를 구현하기 위해 Puppet, Chef, Ansible 같은 SCM을 툴을 이용하는 현재의 상황에서 Nginx를 설치하고 구성하는 방법에 대한 파트도 꽤나 흥미로웠다. 

이후 인증, 보안 제어에 대한 파트를 거치며 HTTP/2와 특화된 특징에 대해서도 Nginx가 제공하는 다양한 기능에 대해 학습하게 된다. 

 

스트리밍을 다루는 파트에서는 Nginx의 상용 버전인 Nginx Plus에서 제공하는 여럿 기능과 특징에 대해 배우게 되고 클라우드 환경 배포 챕터에서는 다양한 클라우드 플랫폼을 통해 Nginx 환경을 구축하는 여정을 체험하게 된다. 

 

컨테이너와 마이크로 서비스를 주제로한 챕터에서 Nginx를 활용한 다양한 기능들, 예컨대 API 게이트웨이와 인그레스 컨트롤러 등에 대한 새로운 경험을 맛볼 수 있고, 그 이후의 고가용성 보장에 대한 설정, 고급 활동 모니터링 디버깅과 트러블슈팅 등의 고급 주제를 다루는 내용에 대해 학습할 수 있는 기회를 맛볼 수 있다. 

 

Nginx의 성능을 한껏 향상 시킬 수 있는 성능 튜닝 파트를 통해 성능에 대한 새로운 관점으로 Nginx의 면모를 고찰하게 되며 Nginx Plus에서 제공하는 Nginx Controller를 활용한 다양한 기능을 체험하며 실전 운영 팁을 끝으로 Nginx를 운영하며 활용할 수 있는 유용한 팁을 배우게 된다.

 

120개의 레시피를 통해 Nginx의 기능과 특징을 체험하며 배울 수 있는 소중한 기회를 얻게 되어 무엇보다 좋았고, 국내에 Nginx 서적이 전무한 상황에서 본 서적은 가뭄의 단비와 같은 존재가 아닐 수 없다고 할 수 있겠다. 실제 운영 환경에서 Nginx를 사용하고 있는 엔지니어, 개발자 등에게 더할 나위 없이 좋은 든든한 Nginx 서적이 출간 되어 기쁜 마음을 금할 수가 없다. 


P.S :   
한빛미디어 '나는 리뷰어' 이벤트에 당첨 되어 제공 받은 도서를 바탕으로 작성된 후기입니다.

 

> 진행에 앞서

현재는 시놀로지 DS216+를 이용중이지만, 이전에는 HP Microserver N40L을 사용했던 적이 있었다.

당연히 편리함을 놓고 보자면 지금이 그 당시보다는 훨씬 낫지만, 서버에 직접 필요한 것들을 세팅할 수 있었던 N40L을 사용했던 그 때에 다양한 시도도 해보고, 많은 것들을 익혔던 때라고 생각된다.


아파치 웹 서버도 익히는 재미가 있었지만, 웹 서버의 후발주자로 새롭게 익혔던 nginx도 새로운 충격으로 다가왔고, 그 당시 쉽고 가볍게 세팅하면서 강력한 기능에 놀랐던 그때가 기억이 났다.

그래서 결국에는 아파치 웹 서버를 뒤로 하고 nginx를 주 개인웹서비스용으로 사용했던 기억이 난다. https까지 설정해놓고 사용했었던 것이 마지막이었다.

 

> 책에 대한 간단한 정보

이 책은 NGINX 쿡북(Cookbook)이다. 부제로는 112가지 레시피로 배우는 고성능 부하분산, 보안, 서버 배포와 관리로 되어있다.

당연히 nginx에 대한 기본 지식은 필요로 한 상태이며, nginx 자체보다도 웹 서비스에 대한 기본 지식이 갖춰져 있어야 이 책이 쉽게 읽힐 것이다. 이 책은 nginx를 처음부터 어떻게 세팅하는지보다도 책의 이름처럼 세팅할 수 있는 여러 재료처럼 방법을 제시하고 있으며, 그것을 토대로 원하는 서버를 어떻게 잘 요리할 수 있는지 제시해주는 책이다.

> 인상깊은 부분들


엔진엑스 뿐 아니라 플러스의 설치 방법 제공

이 책을 보기 전까지는 개인적인 관심에 개인웹서버 구축이 좀 떨어져 있는 상태였기 때문인지는 몰라도 nginx는 익히 알고 있었지만, nginx plus라는 것이 있는지는 모르고 있었다.

그러던 중 이러한 부분을 통해 플러스라는 개념에 대해 알게 되었고, 이것의 어떤 부분을 활용할 때 유료로 제공되는지도 알게 되었다. 아무래도 상용으로 서비스 되는 것이 있어야 일반 기업에서도 도입할 때에 조금이라도 도입할 가능성이 높아지다보니 좋은 부분이라고 생각은 든다.


캐시는 웹 서비스에 있어서 중요한 영역

웹 서비스에서 무엇보다도 중요한 한 가지 요소는 속도이다. 속도를 올릴 수 있는 여러 요소가 있는데, 그 중 하나가 캐시에 대한 관리이다. 이런 부분을 쉽게 설정할 수 있도록 방법을 알려주는 부분이다. 실제로 활용하면 좋을 것 같다.

HTTPS 리다이렉션 부분

HTTP호출시 301로 정의하여 HTTPS로 리다이렉션 할 수 있는 구조를 만들기 위한 설정이다. 특정한 부분을 HTTPS로 리다이렉션 할 수도 있고, 대부분의 영역을 그렇게 설정하는 것도 가능하다. 내 기억상으로는 아파치 웹 서버에서는 이런 부분이 조금 번거로웠던 것으로 기억하는데, 이런 부분이 생각보다 간단하게 되어서 놀라웠다.


이 책의 뒷표지이다. 용어 자체를 이해하지 못한다면 살짝 구매를 고려해보길.

 

> 괜찮은 부분

1. 생각보다 다양한 레시피가 제시된다.

웹 서비스를 제공하는 그런 프로그램일 뿐이라고 생각하고 이게 얼마나 많은 기능을 제공하겠냐는 관점으로 이 책을 보기 시작했는데, 제대로 보면서 놀랐던 부분이다. 정말 많은 부분에 대해서 컨트롤이 가능했고, 그마저도 어렵지 않은 방법으로 진행할 수 있다는 사실을 보여주었다. 그 범위도 부하 분산, 트래픽, 캐싱, 자동화, 인증, 보안, 스트리밍, 클라우드 배포, 컨테이너, 디버깅, 튜닝 등 다양하여 nginx로 웹 서버를 구축하려는 사람은 이 책을 꼭 읽어보라고 하고 싶다.


2. 레시피별 구조화가 잘 되어 있다.

문제, 해결, 논의, 함께보기 순으로 자료가 나와있다. 이러한 구조를 일관적으로 잘 유지되어 있기 때문에, 매우 보기가 편했다. 해결부분에는 설정 방법에 대해 실제 코드가 나와있기 때문에, 바로 참고가 가능하다.


3. nginx 개발자이자 창시자의 추천사가 담긴 책이다.

이 책을 nginx 창시자가 직접 쓴 것은 아니지만, 창시자가 추천하는 책이다. 아마 책 내용 상당 부분을 공감하고, 만든 목적에 맞게 잘 사용할 수 있도록 잘 적힌 책이라고 인정하고 있다는 뜻으로 보인다. 그래서 더 신뢰가 가도록 하였고, 이 책은 책장에 놓고 수시로 필요할 때마다 꺼내볼 수 있을 정도로 가치있는 책이라고 인정하는 느낌이 든다.

 

> 아쉬운 부분

1. 맥이나 윈도우에서 설치하고 사용하는 방법이 묘사되지는 않았다.

아무래도 설치에 포커스를 맞춘 책이 아니다보니 그럴 수 있다고 생각은 했지만, 그래도 아쉬운 부분이었다. 데비안/레드햇 계열의 리눅스에서의 설치방법을 제공하고 있었기에, 우리가 흔히 쓰는 클라이언트에서의 방법도 제공했다면, 그래도 사전에 테스트 하고난 뒤 서버로의 이전을 할 수도 있었을텐데 하는 아쉬움이 남았다.(개인적으로 리눅스 서버가 있다가 현재는 없는 입장이기 때문이 아니라고 말하고 싶지만.. 허허)


2. 각 용어에 대한 부연설명이 조금 더 담겨져 있었으면 좋을 것 같다.

gRPC, HTTP/2 서버푸시, 오픈아이디 커넥트, 콘술 등 많은 개념에 대해 사용방법을 설명하고 있다. 하지만, 이것들에 대해 어떤 것이다라는 한마디 말로 표현은 해 놓았지만, 막상 그것이 무엇인지 왜 사용하면 좋은지에 대한 기본적인 설명은 포함되어 있지 않다. 그냥 모르는 사람은 넘어가라는 뜻이거나, 혹은 관련 링크로 찾아보라는 뜻일지는 모르지만, 간단하게라도 장점과 특징을 안다면, 처음 보는 용어라 하더라도 해당 모듈에 대한 도입에 관심을 보이지 않았을까 하는 생각이다.


3. 각 레시피에 대해 고유번호를 부여했다면 좋았을 것 같다.

챕터별로 다시 넘버링이 되어있다보니 사실상 전체적으로 찾아보기 위해서는 총 몇 개중에 몇 번째에 있는 레시피인지 찾기가 어려운데, 이것을 전체 시리얼로 나온 고유번호가 있다면 조금 더 찾기 쉬웠을 것 같다.

 

> 개인적인 평점

- 가격: 9 / 10

- 내용: 8 / 10

- 디자인: 7 / 10

- 구성: 9 / 10

 

> 정보

저자: 데릭 디용기

옮긴이: 노승헌

출판사: 한빛미디어

가격: 20,000원

전체 페이지: 233페이지

 

** 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

NGINX 쿡북.jpg

간단한 웹사이트를 개발한 경험이 있거나 서버 관리자라면 NGINX를 사용하신 경험이 다들 한번 내지 다수 있으실 것입니다. NGINX란 웹서버용 오픈 소스 소프트웨어로 중소기업에서 대기업까지 웹사이트를 제작할때 대부분은 이 프로그램을 사용하며 현재는 4억 5000만 개 이상의 웹사이트가 NGINX를 통해 서비스 되고 있습니다. NGINX는 로드 밸런서, 웹 서버, 리버스 프록시 및 API 게이트웨이 기능을 가지고 있어 매우 빠르고 믿을 만함은 물론이고 콘텐츠 캐시, 웹 애플리케이션 방화벽(WAF), 콘텐츠 전송 네트워크(CDN)를 비롯하여 데이터를 다루는 대부분의 시나리오에서도 사용 가능합니다.

 

제가 이 책을 선택한 이유는 책 전반부에는 NGINX를 처음 접하는 사용자를 위해 NGINX와 NGINX PLUS 설치법과 기본 사용법 등 쉽게 NGINX 설치 방법과 다양한 활용 시나리오에 따른 설정 방법에 대해 후반부에는 NGINX을 이용한 부하분산, 트래픽 관리, 캐싱, 자동화, 디버깅, 트러블슈팅 등을 쉽게 따라 할 수 있으면서도 NGINX를 최대한 활용하는 방법을 보여주기 때문입니다.

 

이 책의 특성은 NGINX 애플리케이션을 사용자에게 전달하는 과정에서 발생하는 문제 상황을 쉬운 예제를 통해 보여주며 다양한 예제를 통해 NGINX가 제공하는 기능을 살펴보고 각 기능을 어떻게 사용하는지 배울 수 있다는 점입니다. 이 책에서는 무료로 제공되는 NGINX 오픈소스 버전뿐 아니라 상업용으로 판매 중인 NGINX PLUS와 NGINX Controller도 다루고 있으며 상업용 버전에서만 사용 가능한 기능과 지시자는 쉽게 식별할 수 있도록 제목에 별도로 표시되어 있고 NGINX PLUS는 무료 버전에 없는 ADC와 같은 고급 기능을 여럿 포함하고 있어 NGINX플랫폼을 이해하는데 중요하기 때문에 이러한 고급 기능을 강조해 설명하였습니다.

또한 요즘 시대에는 정보보안이 매우 중요하며 NGINX는 웹 트래픽을 전달하는 최초 접점이자 애플리케이션 계층 보안의 최전선이기 때문에 보안에 관해서 기본적이면서도 중요한 내용을 다루고 있습니다.

그뒤로 최신기술인 HTTP/2, 웹 소켓, 미디어 스트리밍, 클라우드, 컨테이너 환경을 NGINX에서 활용하는 방법과 전형적인 운영 업무와 관련된 모니터링, 디버깅, 성능, 운영 팁에 대해 설명하고 있고 마지막으로 NGINX Controller와 애플리케이션 중심의 관리 플랫폼을 소개하고 있습니다.

 

현대 시대는 사람들이 직접 마주하면서 거래하는 방식보다 웹사이트나 어플리케이션에서 제품을 살펴보고 금액을 전자적으로 통장으로 이체하는 거래 방식이 점차 늘고 있는 추세이며 코로나가 발생하면서 거의 모든 기업이 매장에서 키오스크 방식으로 거래를 하고 있습니다. 따라서 웹 서버의 중요성이 필수적으로 중요해졌으며 그로 인해 늘어나는 트래픽을 감당하고 소중한 사용자 정보를 효과적으로 보호하면서도 원하는 정보를 빠르게 제공하는 것도 더욱 더 복잡하고 어려워졌습니다. 그래서 모든 기업이 서버 관리자를 기존의 보유한 수보다 좀더 늘이거나 외주업체와 계약하여 전문적으로 관리하는 등 웹서버 관리에 많은 투자를 하고 있습니다.

 

구성

Chapter 1: NGINX 기초

Chapter 2: 고성능 부하분산

Chapter 3: 트래픽 관리

Chapter 4: 대규모 확장 가능한 콘텐츠 캐싱

Chapter 5: 프로그래머빌리티와 자동화

Chapter 6: 인증

Chapter 7: 보안 제어

Chapter 8: HTTP/2

Chapter 9: 정교한 스트리밍

Chapter 10: 클라우드 환경 배포

Chapter 11: 컨테이너와 마이크로서비스

Chapter 12: 고가용성 보장을 위한 설정

Chapter 13: 고급 활동 모니터링

Chapter 14: 디버깅과 트러블슈팅

Chapter 15: 성능 튜닝

Chapter 16: NGINX Controller

Chapter 17: 실전 운영 팁

 

파트별로 나누어 봤을때 1~5장은 NGINX 설치방법, 기본적인 기능설명 및 사용방법에 대해 설명하고 있고 6~8장은 정보를 보안할 수 있는 방법에 대해, 9~11장은 클라우드와 미디어 스트리밍에 NGINX를 적용하는 방법에 대해, 12~17장은 NGINX 고급 사용법 및 실전에서 사용하는 방법에 대해 설명하고 있습니다. 


개인적인 생각으로 학습은 서버 관리자로 취업 및 이직을 희망하시는 분들이나 이제 막 관리자로 시작하시는 초보자이신 분들께서는 1장부터 시작하시면 좋을것 같고 어느정도 경험이 있으신 분들(서버 관리자 경력 3~n년차)부터는 1~5장은 쭉 한번 보시면서 구조 및 원리부분을 습득하시고 6장부터 시작을 하시는 것이 좋을것 같습니다.

 

 

그리고 개인적으로 약간의 단점이 어쩌면 욕심일수도 있는게 Chapter 17 "실전 운영 팁" 부분에 좀더 많은 실습 예제 및 조언이 담겨있으면 초보자분들이나 서버 관리자를 희망하는 분들한테 좀 더 도움이 될 수 있어서 더 좋았지 않았을까라는 아쉬움이 있습니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 

[나의 한줄 추천사]

가볍고, 고성능의 웹서버 구축할때 꼭 필요한 NGINX(이하 엔진엑스), NGINX plus(이하 엔진엑스 플러스) (유료) 요리책

[책 추천 이유]

파이썬 Flask 웹서비스를 구축하때 웹서버로 "엔진엑스" 활용하는게 대세이다. "엔진엑스" 자세한 활용법을 알고 싶고 싶으면 보면 됨

[내가 찾고자 했던 질문과 대답들]

1. 정적 콘텐츠 서비스하기

- 가장 기본이 되는 웹서버의 주요 기능이 바로 정적 콘텐츠 (이미지, html, js, css) 서빙해주는 일이다. conf 파일에 정적 콘첸츠 path 정보만 추가하면 간단하게 바로 서비스 가능하다.

2. 무중단 설정 리로드하기

- nginx -s reload 명령으로 무중단 설정 적용 바로 가능하다.

3. 부하분산하기

- conf 파일에 upstream 부분에 weight 값을 부여하여 웹서버 2개를 등록하고, 부하발생했을때 weigt 값에 따라서 라우닝하여 접속하므로써 부하를 분산히시킬수 있게 설정 가능하다.

4. 트랙픽 분리하기

- A/B 테스트를 위해서 웹 트래픽 라우팅하여 분리후 사용자 반응 테스트가 가능하다.

5. 대규모 확장 가능한 콘텐츠 캐싱 (CDN)

- CDN 기능으로 콘텐츠 캐싱을 위한 path 정보 등록하면 가능하다.

6. 그외 특별한 기능들

- 웹서버 인증, CORS, 스트리밍 서비스, MSA 컨테이너 적용, 성능 모니터링등 "스위스 만능칼" 처럼 활용이 가능하다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

Author: 데릭 디용기 지음 | 노승헌 옮김

출판사: 한빛미디어

 Score /5: ⭐️⭐️⭐️⭐️

 

이 책의 대상 독자

  • Nginx 를 실무로 사용하는 사람들

이 책의 독자로 부적합한 것

  • 초보자

 

근래 들어 Nginx는 Apache보다 인기 있는 웹서버가 되고 많이 사용하는 듯해 Nginx의 사용 방법(?)에 대한 궁금증이 드는 시기였는데 마침 리뷰어 이벤트를 통해 이 책을 리뷰해 볼 기회가 생겼다.

이 책을 다 읽고 느낀 점은 이 책은 절대 초보자나 nginx를 시작하는 사람들을 위한 책은 아니라는 것이다.

어느정도 실무로 일을 하고 있고 nginx를 다루는 사람들에게는 상당한 유용함을 제공해 줄 수 있겠지만 초보자에게는 권하지 않는다.

그럼 좋았던 점, 보완이 필요한 점을 살펴보겠다.

[좋았던 점]

  • 다양한 사용 사례를 제공한다. Nginx로 이것도 된다고 하는 기능이 이책을 보면서 많이 느꼈다. 하지만 해당 기능은 상당 부분은 엔진엑스 플러스(상용) 기준이다.
  • 문제를 제기하고 이를 해결하는 방법을 친절한 어투로 알려준다. 개인적으로 문제 제기 -> 해결 방법을 좋아한다. 왜 쓰는지 Why 관점은 부족했지만 단순하게 이런 때는 이렇게 라고 하는 레퍼런스로의 정석을 보여준다.

[보완이 필요한 점]

  • 페이지가 200여 페이지정도 되는 책인데 너무 욕심이 과한 느낌이다. 쿠버네티스 컨트롤러에 대한 얘기도 나오고 쉐프, 퍼핏, 앤서블도 언급하나 한두장으로 끝난다. 물론 Nginx에 대해 여러가지 기능이 있다는 것은 알지만 개인적으로는 좀 아쉬웠다.
손가락과 비교했을 때 상당히 얇다.
  • 성취감이 느껴지지 않는다. 중간 중간 읽다보면 몰입도가 상당히 떨어진다. 개인적으로 스토리라인을 짜서 진행하거나 흥미를 유발할 뭔가가 없고 너무 딱딱한 느낌이다. 프로젝트 하나를 추가추가 하는 식으로 뭔가 같이 따라갈 수 있는 느낌으로 진행했으면 좋겠다.
  • 엔진엑스 플러스에 대한 얘기가 너무 많다. 개인이 이 책을 보고 엔진엑스 플러스에 대한 내용을 단순히 볼 뿐 실습해 볼 방법이 없다.
    (처음 몇번은 엔진엑스 플러스 내용을 봤으나 이후에는 바로 스킵했다.)

이 책은 서두에 말했던 대로 중급자/전문가 용이다.

초보자는 다른 책을 선택하는 것을 권장하고 전문가나 중급자는 레퍼런스 형태로 이 책을 활용하면 상당한 도움을 받을 수 있을 것이다.

 

※ 이 책은 한빛미디어의 책의 지원으로 작성된 글입니다.

이 글은 2021년 6월 한빛미디어에서 진행하는 <나는 리뷰어다> 프로그램에 참여하게 되어 책을 제공받아 글을 작성하였습니다.

 

서버 개발자라면 NGINX(혹은 엔진엑스)을 들어본 적이 있을 것이다.

NGINX는 웹 서버 SW 중 하나로 아파치 다음으로 가장 많이 사용되는 웹 서버 SW 중 하나이다. 2004년 10월 발표되어 BSD허가서 라이선스를 따르며 요청에 응답하기 위해 비동기 구조를 가진다는 특징을 가진다. 이는 가장 많이 사용하는 아파치의 스레드/프로세스 기반의 구조와는 대조적인 구조이다. 

 

오늘은 NGINX에 대한 책인 NGINX쿡북을 읽고 서평을 작성하고자 한다.

책 소개


NGINX 쿡북 표지 (출처: 한빛미디어)

2021년 6월 기준 교보문고에 NGINX로 검색한 경우 2권의 책(NGINX 쿡북, Nginx HTTP 서버)이 나오는 것을 확인할 수 있다. NGINX는 실제로 점유율이 2위임에도 불구하고, 이와 관련된 책이  많지 않다는 것을 알 수 있다.
이 책은 다른 IT 책과는 다르게 NGINX을 컴퓨터 환경에 설치부터 단계별로 차근차근 챕터를 보면서 예제를 따라 하는 것이 아닌 특정 상황에 이슈가 발생했을 때 책을 찾아본다면 좋다는 느낌을 많이 받았다.

목차


[1장 엔진엑스 기초]
운영체제별 설치 방법과 주요 설정 파일, 디렉터리, 명령어
 
[2장 고성능 부하분산]
HTTP, TCP, UDP 서버 부하분산 방법, 부하분산 알고리즘, 업스트림 서버 상태 모니터링 방법
 
[3장 트래픽 관리]
사용자 요청을 분기하거나 요청 빈도, 연결 수, 대역폭 등을 제한해 트래픽을 제어하는 방법

[4장 대규모 확장 가능한 콘텐츠 캐싱]
성능을 높이고 부하를 낮추기 위한 캐싱 방법
 
[5장 프로그래머빌리티와 자동화]
엔진엑스 플러스 API를 통해 키-값 저장소를 다루는 방법, 설정 관리 도구를 통해 엔진엑스를 설치하고 기본 설정을 템플릿화하는 방법
 
[6장 인증]
HTTP 기본 인증, 하위 요청을 통한 인증, JWT 검증 방법

[7장 보안 제어]
IP 주소 기반 접근 제어, CORS, 트래픽 암호화 방법
 
[8장 HTTP/2]
HTTP/2를 활성화하고 사용하는 방법, grPC, 서버 푸시 기능
 
[9장 정교한 스트리밍]
엔진엑스를 통해 MP4, FLV 파일을 스트리밍하는 방법과 엔진엑스 플러스의 HLS, HDS 기능
 
[10장 클라우드 환경 배포]
엔진엑스와 엔진엑스 플러스를 AWS, 애저, 구글 컴퓨트 엔진으로 배포하는 방법
 
[11장 컨테이너와 마이크로서비스]
엔진엑스와 엔진엑스 플러스를 API 게이트웨이로 사용하는 방법, 컨테이너 환경에서 사용하는 방법
 
[12장 고가용성 보장을 위한 설정]
DNS를 이용한 로드 밸런서 부하분산, EC2의 부하분산, 엔진엑스 플러스 설정 동기화 방법
 
[13장 고급 활동 모니터링]
엔진엑스 모니터링을 활성화하는 방법, 엔진엑스 플러스 대시보드와  API를 이용해 지표를 수집하는 방법
 
[14장 디버깅과 트러블슈팅]
로깅 방법, Syslog 프로토콜을 통해 로그를 전달하는 방법, 오픈트레이싱을 활용해 요청에 식별자를 부여하고 분석하는 방법
 
[15장 성능 튜닝]
자동화 도구를 사용해 시험을 수행하고 결과를 측정해 성능을 튜닝하는 방법
 
[16장 엔진엑스 컨트롤러]
엔진엑스 컨트롤러 셋업 개요, 컨트롤러를 엔진엑스 플러스 서버 인스턴스와 연결하고 API로 제어하는 방법
 
[17장 실전 운영 팁]
설정 파일이 정확하게 만들어졌는지 확인하는 방법, 설정 파일을 디버깅하는 방법

책의 목차는 다음과 같다.

설치부터 트래픽 관리, 인증, 보안등 일반적인 내용을 넘어 클라우드 환경(AWS, Azure, GCP) 환경에서 배포 및 관리하는 방법에 대한 내용도 들어가 있다.

예상 독자


앞서 말한 것처럼 이 책은 초보자가 책을 읽는다면 다소 어려울 것으로 예상된다.

실제로 책을 보다 보면 실제로 Nginx 도입을 위한 공부가 필요한 서버 개발자가 보기에는 적합하다는 생각을 하게 되었다. Nginx는 실제로 많은 서비스에서 사용되고 있지만, 그에 반해 관련된 자료는 아파치에 비해 현저히 없다는 것을 알 수 있다. 하지만 이번 기회에 한글로 된 책이 나와 실제 서비스 개발을 앞둔 서버 개발자가 Apache와 Nginx을 고민하고 있다면, 이 책을 보는 것을 추천해주고 싶다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

서버 개발자라면, NGINX를 사용한다면!

 

실무 그때그때마다 적용할 수 있는 쿡북입니다. 강추!

 

국내에 출간된 Nginx 도서는 의외로 적다.

Back-end 개발시 많이 사용되는 Redis 관련 도서가 별로 없는 것처럼. 'ㅅ') 신기하쥬?

 

도구를 가지고 무엇을 할 수 있는지를 알아야 비로소 우리는 무엇을 할 수 있기에,

도구가 제공하는 기능을 전체적으로 인지하는 것의 중요성은 더 말할 필요도 없다.

이 도서에서 소개하고 있는, 개인적으로 인상적인 내용들은 아래와 같다. 'ㅅ')

 

기본적인 로드 밸런서 서버로서의 부하 분산, 부하 분산 서버 모두에게 문제가 발생했을 때의 backup 서버 사용 설정.

'Nginx 를 경유하여 업스트림 서버로 전달되는 요청에 대한 이슈' 에 대한 설명.

유료로 사용 가능한 Nginx plus 에 대한 설명. // 무지한 나는 Nginx plus 가 있다는 사실조차 몰랐었다. 'ㅅ')!

트래픽 관리 (국가 단위 접근 차단, 연결 수 제한, 요청 빈도 제한 등)

캐싱 서버로서의 기능.

인증 처리 부하 감소와 비인증 요청이 애플리케이션 서버에 도달하는 것을 막거나, 사용자 요청을 업스트림 서버로 보내기 전에 JWT 검증에 대한 설명.

IP 주소 기반 접근 제어, CORS 설정, 트래픽 암호화와 같은 보안 이슈.

클라우드 서비스 연관 지식들과 쿠버네티스 연계 정보들까지.

 

이 도서는 쿡북이며, 나 같은 Nginx 에 대해 아주 얕게 알고 있는 개발자에게 Nginx 가 어떠한 가능성과 기능을 가지고 있는지 설명하는 렌퍼런스 쿡북으로서의 역할을 제대로 수행하고 있다.

개인 프로젝트에 적용해보며 스터디하기 좋은 서적으로 생각된다. 'ㅅ')

 

.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

.

이번에 캡스톤 디자인 프로젝트를 하면서 Node.js + NGINX 조합으로 서버를 배포하고 관리할 계획을 구상했었는데 참고하기 좋은 책을 제공받아 보게 되었습니다!

이 책은 약 230페이지의 분량의 얇은 책에 112가지의 레시피를 담아 고성능 부하분산, 보안, 서버 배포와 관리에 대해 다룹니다.

NGINX 쿡북, 데릭 디용기, 한빛미디어

처음 받았을 때는 지금까지 리뷰해온 책 중 가장 얇아서 놀랐는데, 그 내용은 결코 간략하지 않았습니다. 저도 지금까지 열심히 만든 프로젝트를 로컬에서 돌려보는 것이 대부분이었고 어쩌다 AWS 인스턴스에 올려본 경험은 있었지만 도메인을 연동하거나 서비스 배포까지 이어지지는 않았는데, 이번에 캡스톤 프로젝트를 배포하면서 처음 제대로 배포를 해보려다보니 약간의 삽질도 경험하였는데 이 책을 조금 더 일찍 접하여 참고했더라면 많은 도움이 되었을 것 같다는 생각이 듭니다.

목차

목차를 살펴보면서 제가 알고 있었던 것보다 NGINX가 상당히 다양한 기능을 제공하고 있다는 것을 알게 되었습니다. 아는만큼 보인다고, 다음 프로젝트에는 책의 내용을 적용하여 프로젝트를 배포하고 관리하면 정말 좋은 경험이 될 것이라 확신합니다.

내용은 다양한 목적과 상황에 따른 문제점에 대한 해결책을 제시하고 관련하여 논의점과 함께 추가적으로 참고하면 좋을 링크들까지 제시해줌으로써 책의 두께를 훨씬 줄이면서도 NGINX가 제공하는 대부분의 기능을 다룰 수 있었다고 봅니다.

책 구성이 깔끔하고 두께도 얇아 무겁지 않으면서도 그 내용은 충실해서 개인적으로는 마음에 드는 책이었습니다. 프로그래밍만 하다가 좋은 공부를 할 수 있는 기회가 되었다고 생각해서 저처럼 구현한 서비스를 배포하고 관리까지 해 보는 경험을 해 볼 백엔드 개발자 분들께 추천드립니다!

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

엔진엑스는 대체로 아파치보다 고속으로 동작하고 메모리나 CPU 사용률이 적으며, OS와 하드웨어에 걸리는 부하가 낮아 인기가 높은 웹서버이다.

이 책은 다양한 엔진엑스 설정 레시피를 통해 엔진엑스가 제공하는 다양한 기능을 설정하고 사용하는 방법을 소개한다. 스텝 바이 스텝으로 따라가며 배우는 방식이 아니기에, 사전처럼 곁에 두고 실무에서 특정 이슈가 발생할 때 꺼내보면 큰 도움이 될 책이다.

그동안은 단순 웹서버나 리버스 프록시 서버 용도로만 엔진엑스를 알고 있었다면, 이번 기회를 통해 엔진엑스 애플리케이션 전송 플랫폼의 강력한 기능을 사용하는 방법 등 다양한 설정법이 있다는 것을 알게 되었다.

구체적으로 아래와 같은 문제 상황이 발생할 때의 해결책을 얻을 수 있다.

1. 엔진엑스 기초

  • 엔진엑스 오픈 소스 버전을 데비안이나 우분투 리눅스 배포판에 설치하기
  • 엔진엑스 오픈소스 버전을 레드햇이나 센트OS 리눅스 배포판에 설치하기
  • 엔진엑스 플러스 설치하기
  • 엔진엑스 설치 상태를 점검하고 버전을 확인하기
  • 엔진엑스 주요 디렉터리 구조와 명령어 이해하기
  • 엔진엑스로 정적 콘텐츠 서비스하기
  • 패킷 손실 없이 설정을 리로드하기

2. 고성능 부하분산

  • 부하를 두 대 이상의 HTTP 서버로 분산하기
  • 부하를 두 대 이상의 TCP 서버로 분산하기
  • 부하를 두 대 이상의 UDP 서버로 분산하기
  • 서로 다른 특성을 갖는 작업이나 사양이 다른 서버로 구성된 서버 풀로 인해 라운드 로빈 방식의 부하분산이 적합하지 않은 경우
  • 엔진엑스 플러스 환경에서 사용자가 특정 업스트림 서버를 사용하도록 고정하기
  • 엔진엑스 플러스 환경에서 사용자가 업스트림 애플리케이션으로부터 획득한 쿠키를 이용해 특정 업스트림 서버를 사용하도록 고정하기
  • 엔진엑스 플러스 환경에서 영구 세션을 세부적으로 제어해 업스트림 서버로 전달하기
  • 서버 유지보수가 필요하거나 서버를 종료해야 하는 상황에서 활성 사용자 세션이 남아있는 엔진엑스 서버를 점진적으로 서비스에서 제외하기
  • 업스트림 서버의 상태를 수동적으로 확인하기
  • 엔진엑스 플러스를 통해 업스트림 서버의 상태를 능동적으로 확인하기
  • 운영 환경에서 실사용자 트래픽을 받기 전에 애플리케이션에서 예열이 필요한 상황

3. 트래픽 관리

  • 사용자 반응을 살펴보기 위해 버전이 2개 이상인 파일이나 애플리케이션으로 사용자를 분기하기
  • GeoIP 데이터베이스를 설치하고 엔진엑스의 관련 내장 변수를 활성화해 엔진엑스가 로그, 요청 프록시, 요청 분기 등을 수행할 때 사용자 위치를 확인하도록 하기
  • 비즈니스 요구사항이나 애플리케이션 요건에 따라 특정 국가의 사용자를 차단하기
  • 사용자 요청이 프록시 서버를 경유해 엔진엑스 서버에 전달됐을 때 실제 사용자 IP 확인하기
  • 사용자 IP 주소와 같이 사전에 정의된 키값에 따라 연결 수 제한하기
  • 사용자 IP 주소와 같이 사전에 정의된 키값을 이용해 요청 빈도 제한하기
  • 서비스 리소스의 부하를 막기 위해 사용자당 다운로드 대역폭 제한하기

4. 대규모 확장 가능한 콘텐츠 캐싱

  • 콘텐츠를 캐시하고 캐시를 어디에 저장할지 결정하기
  • 생성중인 캐시에 대한 요청은 업스트림 서버로 프록시하지 않기
  • 콘텐츠를 어떻게 캐시하고 다시 불러올지 제어하기
  • 캐시를 사용하지 않고 우회하기
  • 사용자 환경에 콘텐츠를 캐시해 성능 높이기
  • 캐시된 콘텐츠를 무효화하기
  • 용량이 큰 파일을 작은 조각으로 나눠 저장해 캐시 효율 높이기

5. 프로그래머빌리티와 자동화

  • 동적인 인프라 환경에서 엔진엑스 플러스를 즉시 재설정하기
  • 애플리케이션으로 들어오는 요청을 기반으로 엔진엑스 플러스가 동적으로 트래픽 관리에 대한 의사결정하기
  • 상용 프로그래밍 언어를 이용해 사용자 정의 확장 기능 사용하기
  • 코드를 통한 엔진엑스 설정 관리를 위해 퍼핏을 사용해 엔진엑스를 설치 및 설정하고 기존 퍼핏 설정을 수행하기
  • 코드를 통한 엔진엑스 설정 관리를 위해 셰프를 사용해 엔진엑스 설치 및 설정하고 기존 셰프 설정을 수행하기
  • 코드를 통한 엔진엑스 설정 관리를 위해 앤서블을 이용해 엔진엑스를 설치 및 설정하고 기존 앤서블 설정을 수행하기
  • 코드를 통한 엔진엑스 설정 관리를 위해 솔트스택을 사용해 엔진엑스를 설치 및 설정하고 기존 솔트스택 설정을 수행하기
  • 콘솔을 통해 변경되는 환경 변수 값들이 엔진엑스 설정에 자동으로 반영되게 하기

6. 인증

  • HTTP 기본 인증을 이용해서 애플리케이션과 콘텐츠를 안전하게 보호하기
  • 서드파티 인증 시스템을 통해 사용자 요청 인증하기
  • 사용자 요청을 업스트림 서버로 보내기 전에 JWT 검증하기
  • 엔진엑스 플러스에서 사용할 JSON 웹 키 생성하기
  • 엔진엑스 플러스에서 JSON 웹 토큰 검증하기
  • 엔진엑스 플러스가 자동으로 JSON 웹 키 세트를 요청하고 캐시하도록 하기
  • 오픈아이디 커넥트 신원 확인 서비스를 제공자를 엔진엑스 플러스에 연동하기

7. 보안 제어

  • 클라이언트의 IP 주소를 사용해 접근 제어하기
  • 본래의 서비스 도메인이 아닌 다른 도메인을 통해 리소스를 제공할 때 브라우저가 원활히 접근하도록 크로스 오리진 리소스 공유(CORS) 정책 지정하기
  • 클라이언트와 엔진엑스 서버 간 트래픽 암호화하기
  • 보다 높은 수준의 클라이언트 측 암호화를 수행하도록 설정하기
  • 엔진엑스와 업스트림 서비스 간 트래픽을 암호화하고 컴프라이언스 법규 준수 및 보안 네트워크 밖에 있는 업스트림 서비스와의 연결을 위한 협상 규칙을 정하기
  • 비밀값을 활용해 location 블록을 보호하기
  • 애플리케이션에서 비밀값을 사용해 보안 링크 생성하기
  • 특정 클라이언트에만 적용되는 기간 제한 링크를 사용해 location 블록 보호하기
  • 사용 기간이 만료되면 파기되는 링크 생성하기
  • HTTP로 수신된 요청을 HTTPS로 리다이렉트하기
  • 엔진엑스 앞에 위치한 계층에서 SSL 오프로딩을 수행하는 상황에서 모든 사용자 요청을 HTTPS로 리다이렉트하기
  • 웹 브라우저가 HTTP로 요청을 보내지 않도록 강제하기
  • 폐쇄형 웹 사이트를 위해 여러 계층의 보안 적용하기
  • 엔진엑스 플러스를 사용해 분산 서비스 거부(DDos) 공격 완화하기
  • 엔진엑스 플러스 앱 프로텍터 모듈을 설치하고 설정하기

8. HTTP/2

  • HTTP/2가 제공하는 기능의 이점 활용하기
  • gRPC 메서드 호출을 종결하고, 분석하고, 전달하고 부하를 분산하기
  • 클라이언트에 콘텐츠를 즉시 전송하기

9. 정교한 스트리밍

  • MP4나 FLV 형식으로 된 디지털 미디어 파일을 스트리밍하기
  • H.264/AAC로 인코딩돼 MP4 형식으로 만들어진 파일을 HTTP 라이브 스트리밍으로 스트리밍하기
  • 어도비의 HDS 형식으로 작게 나뉜 미디어 콘텐츠 지원하기
  • 시청 경험을 해치지 않는 선에서 사용자가 미디어 콘텐츠를 내려받는 네트워크 대역폭을 제한하기

10. 클라우드 환경 배포

  • AWS 환경에서 엔진엑스 서버 설정을 자동화해 스스로 프로비저닝하도록 하기
  • 엔진엑스 앞에 로드밸런서를 두지 않고 고가용성을 보장하기 위해 엔진엑스 페일오버 설정을 만들거나 여러 엔진엑스 노드로 트래픽 분산하기
  • 오픈소스 엔진엑스로 구성된 서버를 오토스케일링하고 부하를 쉽고 균등하게 애플리케이션 서버 간에 분산하기
  • AWS 플랫폼에서 엔진엑스 플러스를 사용한 만큼 지불하는 방식으로 쉽게 사용하기(마켓플레이스)
  • 애저 환경에서 빠르게 서버를 생성하거나 오토스케일링을 위한 스케일 세트에서 사용할 미리 설정된 엔진엑스 가상머신 이미지 생성하기
  • 애저 로드 밸런서에서 연결된 엔진엑스 노드를 부하에 맞춰 늘리거나 줄여 고가용성을 확보하고 동적으로 리소스 사용하기
  • 애저 환경에서 라이선스를 사용한 만큼 지불하는 방식으로 엔진엑스 플러스 운영하기(마켓플레이스)
  • 구글 컴퓨터 엔진과 앱 엔진을 사용하는 서비스 리소스로 부하를 분산하고 요청을 프록히사기 위해 엔진엑스 서버를 구글 컴퓨터 엔진으로 배포하기
  • 빠르게 가상 머신을 생성하거나 인스턴스 그룹에 대한 인스턴스 템플릿을 만들기 위해 구글 컴퓨트 이미지를 생성하기
  • 애플리케이션 간 컨텍스트 스위칭을 하거나 커스텀 도메인을 사용하는 HTTPS를 제공하기 위해 구글 앱 엔진을 위한 프록시 생성하기

11. 컨테이너와 마이크로서비스

  • 수신하는 API 요청을 요구사항에 따라 검증, 인증, 조작해 업스트림 서버로 라우팅하기
  • 이미 구성된 DNS의 SRV 레코드를 활용해 엔진엑스 플러스의 업스트림 서버 설정하기
  • 도커 허브에 등록된 엔진엑스 이미지를 이용해 빠르게 엔진엑스 서버 시작하기
  • 도커 이미지를 만들기 위해 엔진엑스 도커 파일을 생성하기
  • 컨테이너 환경에서 엔진엑스 플러스를 실행하기 위해 엔진엑스 플러스 도커 이미지 만들기
  • 여러 환경에서 동일한 컨테이너 이미지를 사용하도록 엔진엑스 설정에서 환경변수 사용하기
  • 애플리케이션을 쿠버네티스 환경으로 배포하면서 인그레스 컨트롤러가 필요한 상황
  • 프로메테우스로 모니터링 되는 환경에 엔진엑스를 배포하고 엔진엑스 통계 확인하기

12. 고가용성 보장을 위한 설정

  • 고가용성을 보장하는 부하분산 솔루션 구축하기
  • 두 대 이상의 엔진엑스 서버로 부하 분산하기
  • 엔진엑스를 AWS 환경에서 운영하고 있지만 엔진엑스 플러스의 고가용성 기능이 아마존의 IP 주소 할당 방식을 지원하지 않는 상황에서 부하분산하기
  • 고가용성을 제공하도록 구성된 엔진엑스 플러스 계층을 운영할 때 각 엔진엑스 플러스 인스턴스가 동일한 설정으로 운영되도록 동기화하기
  • 엔진엑스 플러스로 구성된 고가용성 서버 간에 공유 메모리 영역 동기화하기

13. 고급 활동 모니터링

  • 엔진엑스에 대한 기본 모니터링 활성화
  • 엔진엑스 플러스 서버를 통해 트래픽에 대한 상세 지표 수집하기
  • 엔진엑스 플러스 상태 대시보드가 제공하는 세부 지표를 API로 접근하기

14. 디버깅과 트러블슈팅

  • 접근 로그에 내장 변수 값 추가하기
  • 엔진엑스 서버 문제를 더 잘 확인할 수 있도록 오류 로깅 설정하기
  • 중앙화된 저장소로 로그를 모으기 위해 엔진엑스 로그를 Syslog 리스너로 전달하기
  • 클라이언트 요청을 완전히 이해하기 위해 엔진엑스 로그와 애플리케이션 로그를 연관 지어 확인하기
  • 보유한 오픈트레이싱 서버를 엔진엑스나 엔진엑스 플러스와 연동하기

15. 성능 튜닝

  • 시험의 일관성과 반복성을 확보하기 위해 로드 드라이버를 사용하고 시험을 자동화하기
  • 클라이언트와 맺은 단일 연결을 통해 받을 수 있는 요청 수를 늘리고 유휴 연결이 유지되는 시간을 증가시키기
  • 성능을 끌어올리기 위해 업스트림 서버와 연결된 설정을 유지하기
  • 업스트림 서버의 응답이 임시 파일에 기록되지 않도록 응답을 메모리상에 버퍼링하기
  • 접근 로그를 버퍼링해 시스템의 부하가 높을 때 엔진엑스 워커 프로세스의 작업이 지연되거나 차단되지 않도록 하기
  • 스파이크성 부하가 발생하거나 대량의 트래픽이 유입되는 사이트를 운영하기 위해 운영체제가 더 많은 연결을 맺도록 튜닝하기

16. 엔진엑스 컨트롤러

  • 엔진엑스 컨트롤러 설치 및 운영을 위한 환경 셋업하기
  • 엔진엑스 컨트롤러를 설치하고 에이전트를 이용해 엔진엑스 플러스 인스턴스 연결하기
  • API를 통해 지금까지 배운 엔진엑스 컨트롤러 설정 절차를 자동화하기
  • 엔진엑스 컨트롤러 ADC 사용 시, 서비스 중인 애플리케이션을 위해 엔진엑스의 웹 애플리케이션 방화벽(WAF) 활성화 하기

17. 실전 운영 팁

  • 부피가 큰 설정 파일을 모듈화된 설정으로 논리적인 그룹을 만들어 정리하기
  • 엔진엑스 서버가 예상치 못한 동작을 할 때 조치하기

 

 

이 책은 다양한 예제와 옵션들을 나열하면서 사용자가 최적의 해를 찾도록 유도해준다.

만약 nginx 가 처음이고 네트워크 개념이 부족한 초심자라면 이해하기 어려울 수 있다.(HTTP 통신 및 헤더에 대한 개념은 안다고 가정한다)

 

어떤 옵션들이 있는지 나열해주고 각 옵션들의 간략한 설명과 사용처를 예시로 잘 풀어주고 있었기 때문에 읽으면서 다양한 예제를 접할 수 있었다.

 

 

 

 

실제로 프로덕에서 사용할때 옵션들을 어떻게 주어야 하는지도 친절하게 설명하고 있기 때문에 큰 도움이 됐었다.

실제 업무에서 nginx 를 사용하고 nginx 를 커스텀하고 싶거나 더 좋은 성능을 위해 고려하는 실무자에게 이 책을 추천한다.

재밌게 읽은 책이었다.

> 시작

회사에서, 업무를 하면서 Nginx 서버를 사용하는 케이스를 자주 마주치게 됩니다.
다만 직접 써보질 않아서, 이름만 아는 친구 같은 느낌의 솔루션이였습니다.

그러던 중 최근에 프로젝트를 수행하며 Nginx 를 직접사용하게 되었습니다.

클라우드와 on premise 인프라 간 통신중계 역할을 Nginx 를 이용해 직접
reverse proxy 로 구축해 본 경험이 생겨 조금 친해진(?) 느낌과
막연한 호감(?)을 느끼던 와중에 우연치 않게 이 책을 접하게 되었습니다. 

 

[O'REILLY] NGINX Cookbook 표지

 

> 책의 구성 및 내용

책은 233 page로 얇은 편인데 총 17개 챕터로 구성되어 있습니다.
깊이있게 내용을 다루기 보다는 넓게 다양한 케이스와 환경을 안내하고 있습니다.

Nginx 를 깊이 있게 다루시는 엔지니어보다는 아키텍트로서 Nginx 가 할 수 있는 역할들을
폭넓게 배워서 필요부분에 적용할 때 보기 좋은 책같습니다. 

Nginx 에 대해 정말 다양하게 설명하고 있습니다. 
단순히 Loadbalencing 을 위한 목적으로 사용할 때에 부하분산 알고리즘부터, 
클라우드 환경에서 사용될 때, 예시나 배포 방법도 나와있어 폭넓게 기능에 대해 배우기 좋은 책입니다.

 

부하분산 알고리즘 & 쿠버네티스 ingress controller

 

다만 아쉬운 점은 Nginx 자체가 워낙 사용처나 역할이 다양해서
사례별로 깊이 있게 설명되지 못한 점은 아쉽지만,
기능적인 다양성에대해 설명하고 있는 점에서 개인적으로는 더 보기 좋았습니다.

 

> 장점

1. 가볍게 보기 좋습니다.

책도 가볍고, 간단한 예제들과 기능에 대해 설명되어 있어 폭넓게 이해하기 쉽습니다.

2. 예제가 이해하기 쉽습니다.

복잡한 설명 없이 각 기능에 대한 예제들이 있어 Nginx 설정에 참고하기 쉽습니다.

> 단점

1. 깊이있는 내용을 다루지는 않습니다.

Nginx 자체가 워낙 다양한 용도로 사용되기 때문에 모두 깊게 설명하기는 제한되기 때문에 큰 단점은 아니지만
이미 Nginx 에 익숙하신분이 보시기에는 기술적으로 깊게 다루지는 않습니다.

 

책읽기 필요사항

네트워크 관련 지식이나, 웹서비스 개발 경험이 있는분이 보시면 더욱 좋을 것 같습니다.

 

추천 독자

인프라 시스템 구성을 고민중인 아키텍트, Nginx 의 다양한 기능을 배우고 싶은 개발자 등

 

> 정보

저자: 데릭 디용기
옮긴이: 노승헌
출판사: 한빛미디어
가격: 20,000원
전체 페이지: 233페이지


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.


SE-13e58779-ff92-48aa-9962-d7355df165f7.jpg

대상 독자

 

- NGINX를 상황에 맞게 사용하길 원하는 사람

- NGINX Plus에 관심이 있는 사람

 

좋은 점

- 유용한 케이스를 통해서 NGINX에 대한 이해를 높이고, 실무에 바로 적용 할 수 있으며,

일련의 트러블 슈팅 과정(문제 -> 해결 -> 논의)을 보여주어 몰입도가 높다

- NGINX Plus에 대한 내용도 포함하고 있어 더 폭넓은 이해를 돕는다

- 기능에 초점을 둔 군더더기 없는 설명​

 

아쉬운 점

- 쿡북이다보니 내용의 깊이의 아쉬움 ​

 

총평

- 실무에 매우 유용하고 곁에 두고 보기 좋은 책입니다.

<이 책은 한빛미디어로부터 도서를 제공받아 작성되었습니다.>

 

책소개


빠르고 안전한 웹 서비스를 위한 NGINX 레시피

 

엔진엑스는 널리 사용되는 웹 서버용 오픈 소스 소프트웨어다. 가볍고 확장 가능하며 요청을 동시에 처리할 수 있어 트래픽이 높을 때에도 성능이 뛰어나다. HTTP, TCP, UDP의 부하를 효율적으로 분산하는 로드 밸런서와 프록시 서버로도 사용되어 웹 서비스의 성능을 향상한다.

 

이 책은 엔진엑스의 고성능 부하분산과 보안 기능, 서버 배포와 관리 방법에 초점을 맞춘다. 책에 수록된 풍부한 레시피는 엔진엑스를 설치하고 사용하는 방법부터 실전 운영 팁까지 다룬다. 엔진엑스라는 애플리케이션 전송 플랫폼을 최대한으로 활용할 수 있도록 상용 버전인 엔진엑스 플러스와 엔진엑스 컨트롤러 기능도 함께 소개한다. 다양한 기능을 필요에 맞게 적용해 빠르고 안전한 웹 서비스를 만들어보자.

 

 

주요 내용

  • HTTP, TCP, UDP 서버 부하분산
  • 트래픽 암호화, 보안 링크, HTTP 인증 하위 요청을 통한 접근 보안
  • 엔진엑스를 구글 클라우드, AWS, 애저 클라우드 컴퓨팅 서비스로 배포하기
  • 엔진엑스 플러스 대시보드와 API로 활동 모니터링하기
  • 엔진엑스 플러스 앱 프로텍트 모듈 설치 및 설정하기
  • 컨테이너 환경에서 엔진엑스와 엔진엑스 플러스 사용하기
  • 엔진엑스 컨트롤러 ADC를 사용해 WAF 활성화하기

https://www.hanbit.co.kr/store/books/look.php?p_code=B2053582455 

 

NGINX 쿡북

간결한 예제를 따라 엔진엑스의 다양한 기능을 익힌다. 엔진엑스의 고성능 부하분산과 보안 기능, 서버를 배포하고 관리하는 방법에 초점을 맞춘다.

www.hanbit.co.kr

 

리뷰


이번에 리뷰하게 된 책은 NGINX 쿡북입니다. O'REILLY의 다른 책들과 다르게 책 표지가 그렇게 거부감 느껴지는 표지는 아니었던것 같다는 생각이 먼저 들었던 책입니다.

그 다음 드는 생각은 이렇게 얇은 책에서 NGINX에 내용을 잘 담았을까 하는 고민이었는데 쓸데없는 고민이라는 것을 책을 본 후 깨달았습니다. 이 책에서는 112가지의 예제를 통해 NGINX에 대해서 배울 수 있었습니다. 간단간단한 예제인것 같지만 중요한 내용들을 포함하고 있어서 개념을 배우는데 충분하다고 생각됩니다.

목차는 개념적인 부분, 기초적인 부분부터 시작해서 실전운영을 포함한 모니터링 튜닝 등 다양한 내용을 다루고 있습니다.  윈도우에 NGINX를 설치하는 방법은 별도로 설명되어 있지 않아서 실습환경을 만드는게 조금 어려웠지만 그래도 https://extrememanual.net/1854 구글링을 통해 실습 환경을 구성하고 준비를 할 수 있었습니다. 참고차 링크도 같이 올려두겠습니다.

서비스를 개발하다보면 A/B테스트를 통해 사용자의 반응을 테스트해보는 시도를 해볼 수가 있는데요. 책에서도 A/B 테스트에 대한 내용을 다루고 있어서 NGINX를 통해 어떻게 설정할 것인지를 확인 할 수 있었습니다.

뿐만아니라 HTTP2와 gRPC 등에 대한 내용도 배울 수 있었습니다. 책을 보다보면 간단간단한 예제를 통해 필요한 내용들을 상세하게 알려주는 것을 확인 할 수 있었습니다. 얇은 책에 많은 내용을 담고 있어서 놀란 부분이었습니다.

최근에는 클라우드 서비스에 NGINX를 구성하는 경우가 많습니다. 책에서는 AWS, 애저, 구글 컴퓨트에 NGINX를 올리는 방법을 설명해주고 있습니다. 기회가 되면 따라해보면 좋을것 같지만 실습 환경이 없어서 저는 그냥 지나쳤습니다. 다양한 플랫폼에 올리는 법을 간접적으로 배울 수 있는 것 만으로도 좋은 경험이었던것 같습니다.


책은 가볍지만 내용은 무거운 책입니다. NGINX에 대한 개념을 112가지의 개념을 통해 열심히 설명하고 어렵지 않게 따라 할 수 있는 책입니다. 내용 자체가 꽉 차있는 것을 느낄 수 있고 책을 통해 NGINX 설정을 배울 수 있는 기회가 되셨으면 좋겠습니다.

NGINX에 대한 내용은 사용할 때에만 잠깐 인터넷으로 설정이라든지 방법만 찾아 봤을 뿐 책을 읽어보는 건 처음이다.  고급 기술을 활용한다기 보다는 상황에 맞게 설정만 하고 끝나는 경우가 많아서 깊게 공부해보려는 생각은 못했던것 같다.

최근 읽어본 책들을 보면 사례를 중심으로 설명하는 책들이 많이 있었는데 이 책도 사례 중심으로 내용을 설명하고 있다. 

그중에서도 내가 관심있게 본 내용들은 인증과 보안제어 챕터이다.

인증이나 보안쪽은 어떤 환경에서든지 빠지지 않는다. 그런데 막상 인터넷을 찾아보면 방법 자체가 맞는 방법인지 알 길이 없다. 그렇다면 도뮤먼트를 읽는 수밖에는 없는데 영문으로 되어있는 도큐먼트를 빠르게 이해하기는 쉽지 않다. 그래서 이 책에 나온 여러가지 상황에 따른 사용 방법을 알고 있다면 실제 Nginx를 사용해서 운영중인 개발자들에게 많은 도움이 될것이다. 

주어진 상황에 대한 해결 방법을 위와 같이 제시해 준다. 그리고 "논의" 라는 항목을 따로 둬서 좀더 생각해야 하는 것들에 대해서 설명을 해준다. 그저 "해결" 만 하고 끝나는게 아니라 "논의" 를 통해서 이론 적인 내용이라든지, 주의 사항들을 상세히 알려주는게 이 책의 큰 장점이라고 생각이 된다. 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

20210616_193332.jpg

 

20210616_193440.jpg

 

NGINX.jpg

 

 

국내에 NGINX 책이 전무한테, 반갑게도 6월에 오라일리의 NGINX 쿡북(Cookbook)이 번역되어 출간되었습니다.

 

저는 5년전부터 오픈소스를 기반으로 전자상거래 솔루션을 개발하면서 Apache 대신에 NGINX를 사용하고 있지만, Apache와 비교해서 상대적으로 기술 문서나 커뮤니티가 부족해서 운영에 크고 작은 애로사항을 겪었습니다.

 

지금은 어느정도 자체 문서화(트러블 슈팅)하여 대응하고 있지만, 대규모 서비스를 지탱하기 위한 기술은 여전히 Apache나 다른 WAS와 비교해서 경험이 부족합니다.

 

다행히 이 책은 고성능 부하분산, 클라우드 환경에서의 서버 배포와 같이 중/대규모 서비스 운영에 참고할 만한 레시피(문제해결을 위한 상세한 테크닉)가 충분해서 인프라 개발자에게 상당한 도움이 될 것으로 기대됩니다.

 

특히 이 책에선 오픈 소스 NGINX 뿐만 아니라 상용버전인 NGINX PLUS의 기능까지 구분하여 다루고 있는 점도 장점입니다.

 

그리고 일반적인 쿡북처럼 네트워크나 서버에 대한 깊은 지식이 없어도 누구든지 문제해결을 위해 쉽게 따라할 수 있도록 문제, 해결, 논의, 참고라는 섹션으로 구분 지어 설명하고 있습니다.

 

저는 개인 PC에 VMWare Workstation에 CentOS 7와 NGINX 1.20.1를 설치하여 실습을 진행했습니다.

 

1장에서는 Linux OS별로 설치법에 대해서 설명합니다.

 

2장에서는 부하를 여러 대의 서버에 분산하는HTTP, TCP, UDP 등의 로드밸런싱에 대해 배웁니다. 라운드로빈~IP해시까지 6가지의 부하분산 알고리즘에 대한 설명을 참고할 수 있습니다.

 

3장에선 특정 조건의 사용자를 판단하여 트래픽을 분기/조절하는 기법에 대해 배웁니다.

GeoIP를 이용한 사용자의 위치 파악, 접근 제어, 요청빈도 제어, 전송 대여폭 제한은 트래픽 경로와 흐름을 제어하는데 활용할 수 있습니다.

 

4장에서는 콘텐츠 캐싱에 대해 배우는데 일반적인CDN 기능을 NGINX를 이용하여 구현이 가능합니다.

 

6장에선 간단한 HTTP 인증(HTTP Authentication) 구현법과 JSON 형태의 인증 토큰을 만들어 통신할 때 쓰는 JWT(JSON Web Token)에 대해 상세히 배웁니다.

 

7장은 실무에서 매우 중요한 보안 설정 및 제어에 관한 내용입니다. 우선 클라이언트 IP를 파악하여 리소스(주로 admin 디렉터리)를 보호하는 방법을 설명합니다. 크로스 오리진 리소스 공유법, SSL 인증서 설치법, https 자동 리다이렉션, 보안 링크를 이용한 Location 블록의 보호법 등 실무에서 자주 설정하는 내용들이 많습니다.

 

8장은 http/2에 관한 내용인데 NGINX는 서버설정에서 간단하게 HTTP/2를 활성화할 수 있습니다.

 

9장은 Wowza 같은 스트리밍 서버처럼 mp4 등의 동영상 파일을 스트리밍 서비스하는 법에 대한 설명입니다. 

 

10장은 요즘 대세가 된 클라우드(AWS, 애저, GCP) 환경에서의 배포에 관한 설명입니다. 사실 여기서 설명하는 내용은 대충 이해만 하고, 관련 서적을 찾아 별도의 학습이 필요합니다.

 

11장은 도커와 쿠버네티스에 관한 내용이고 12~13장에서는 서버의 고가용성, 기본 모니터링을 위한 모듈 설정에 대해 배웁니다. 

 

14장은 NGINX를 서버로 사용할 경우 맞주하게 될지도 모르는 에러에 대한 디버깅과 트러블슈팅에 대한 설명입니다.

 

15장은 성능 이슈에 대한 내용이고, 17장은 실전 운영팁이라고 소개되어 있는데 NGINX의 설정 파일을 include 지시자로 이해하기 쉽게 그룹화하고, 설정 파일의 오류로 NGINX가 오동작할 때 디버깅하는 방법에 대해 배웁니다.

 

이상으로 간단하게 NGINX 쿡북에 대한 리뷰를 적어 보았습니다.

이 책으로 NGINX가 제공하는 놀라운 기능들을 실무에 십분 활용하셨으면 좋겠습니다.

 

* "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

저는 2년 전 NGINX를 현업에서 사용했었습니다. 웹 서버로도 사용했었고, WebRTC를 사용하는 화상 채팅 애플리케이션의 로드밸런서로도 사용했었습니다. 당시 NGINX를 인수한 F5 사의 엔지니어, 그리고 NGINX를 "징스"라고 발음하는 러시아 개발 벤더와의 합작 프로젝트였는데, 개인적으론 덕분에 MySQL에서 NGINX로 지식을 넓힐 수 있는 좋은 기회였었죠. NGINX의 다양한 설정 스크립트를 Sublime에 저장해두고 프로세스를 stop - restart 하면서 설정 내용을 테스트하였던 생각이 납니다.

 

네트워크 및 보안 전문 회사인 F5가 러시아 개발자가 만든 오픈 소스 형태의 NGINX를 인수하면서 단순히 웹 서버의 수준을 떠나 웹 방화벽(WAF)의 기능을 갖추고, 로드밸런서, 게이트웨이, 여러 대의 NGINX 노드를 묶어 CDN을 구현할 수 있을 정도의 캐싱 등의 기능은 더욱 막강해졌습니다. 이제는 MySQL과 감히 비교할 수 없을 정도로 API 지원, 서드 파티 오픈 소스 지원, 트러블 슈팅 및 모니터링 기능 등이 막강해졌습니다. 그러면서 오픈 소스 버전의 NGINX를 벗어나 commercial 버전의 NGINX Plus를 채택하는 기업이 점점 늘어나고 있습니다.

 

먼저 목차를 살펴보았습니다. 1~4장에서는 NGINX의 설치 및 부하 분산(load balancing)과 같은 NGINX의 가장 핵심적이고 제일 많이 사용하는 기술적 내용을 다룹니다.

 

5장 - 프로그래머빌리티와 자동화에서는 NGINX Plus에서만 제공하는 API를 통해 설치와 설정을 템플릿을 통해 자동화하는 기능을 다루는데, 이 부분은 평소 웹 서버를 설치해두고 고정적인 사용을 하는 것이 아닌 동적으로 시스템을 설치하고 삭제하고 확장하는 고급 기술을 다룹니다.

 

6장과 7장에서는 기본적인 보안 설정을 배웁니다. 웹 서버도 이젠 기본적인 ACL(Allow Control List)과 인증(authentication), JWT(JSON Web Token)를 통해 보안을 지원할 정도로 똑똑해졌습니다.

 

8장에서는 HTTP1.1이 아닌 HTTP/2를 사용하는 방법에 대해 알려줍니다. 상위 버전의 HTTP를 적용하면서 multiflexing, server push, header compression 등의 HTTP/2 기능을 충실히 사용할 수 있는 방법을 알려줍니다. 이런 버전업만으로도 운영하는 웹 사이트의 성능이 더욱 좋아져 로딩이 빨라지는 효과가 있습니다.

 

9장에서는 스트리밍 서버로서의 NGINX를 사용하는 방법을 알려줍니다. 일반적으로 스트리밍 서버 구축은 FFMPEG으로 구현하는 것이 당연하게 여겨졌었는데 NGINX가 스트리밍을 지원한다는 것을 많은 개발자가 간과하는 부분입니다. HLS, HDS와 같은 HTTP 기반의 스트리밍 프로토콜을 지원하며 이를 통해 VOD 혹은 Live 기반의 스트리밍 서비스를 구축할 수 있습니다.

 

가장 감동적인 부분은 10장의 클라우드 환경 배포 부분입니다. AWS, Azure, GCP의 대표적인 IaaS 환경에 각각 NGINX를 설치하고 운영하는 부분을 알려주는데, On-Premise에서 클라우드로 운영 환경이 이동하는 시점에서 꼭 필요한 콘텐츠가 포함되었다는 생각입니다.

 

11장은 컨테이너와 마이크로서비스 환경에서의 NGINX 활용 방안입니다. 이쯤 되면 NGINX가 사용되는 모든 환경을 한 번씩 다 훑었다고 보면 됩니다. 개인적으로 컨테이너 환경에서 NGINX를 아직 운영해볼 기회가 없었지만 조만간 11장의 내용을 토대로 몇 개의 pod을 구현하고 테스트해보려 합니다. 

 

이 책의 가장 큰 장점은?

 

이 책은 많은 장점을 가지고 있고 최근 읽어본 번역서 중에 꽤 높은 번역 퀄리티가 있습니다. 

모든 내용을 정독하고 떠오른 이 책의 장점을 나열해보면 다음과 같습니다.

 

1. 가볍지만 NGINX의 모든 내용을 충실히 다루고 있다.

이 책은 250페이지도 되지 않는 얇은 분량이지만 모든 챕터가 다 의미가 있고 실전에서 사용되는 내용뿐입니다. 많은 두꺼운 번역서가 1/3 정도는 구색을 맞추기 위해 필요 없는 내용을 다루고 있는 것과 비교됩니다.

 

2. 번역의 품질이 매우 뛰어나다.

보통 IT 번역서의 경우 번역 품질이 좋지 않아 원서의 의미를 흐리는 경우가 간혹 있습니다. 번역을 진행한 역자가 해당 도메인의 지식이 약하거나, 번역 리뷰를 진행하는 편집자의 능력 등이 이를 좌우합니다. 이 책의 역자가 LINE Plus에서 SRE로 계신 분이라 그런지 모든 번역이 매끄럽고 중간중간 포함된 "옮긴이" 의견은 내용의 이해 및 추가적인 지식을 쌓는데 매우 도움이 되고 있습니다.

 

3. NGINX의 수요에 비해 부족했던 국내 기술서의 자리를 차지하다.

국내에도 MySQL에서 NGINX로 마이그레이션 하거나 처음부터 웹 서버를 NGINX로 시작한 팀과 조직이 꽤 많습니다. 오픈 소스 버전을 상용 서비스에 그대로 사용하는 팀도 많고요. 수요에 비해 이렇다 할 좋은 도서의 공급이 없어서 F5의 기술 문서 웹 사이트에서 유일하게 정보를 얻고, StackOverFlow 같은 곳에서 추가 정보를 찾았는데요, 당장 NGINX를 공부하는 엔지니어들에게 단비와 같은 정보서가 될 것입니다.

 

이 책을 중간쯤 읽었을 즘, 특정 리서치회사에서 NGINX를 best web server에 링크하였다는 영문 기사를 보았습니다. NGINX의 막강한 기능들은 점점 더 버전업 되고 있고, 앞으로도 오픈 소스/상용 버전 할 것 없이 많은 수요가 예상되며 클라우드 환경에서 직접 설치 혹은 마켓 플레이스를 통한 수요가 늘어날 것으로 예상합니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다

nginx는 흔히 알고 있는 apache같은 웹서버입니다.
 
 
nginx의 특징, 기능들에 대해 설명하지만 다른 웹서버와 비교같은 내용들은 나오지 않기에 어떤 웹서버를 도입할까 고민하는 사람보다는 nginx를 사용하기로 결정된 상황인 웹서버 관리자를 대상으로 한 책입니다.

설치부터 시작해서 부하분산, 트래픽관리, 캐싱, 인증, 보안 제어등 일반적인 내용부터 
요즘에는 자동화, HTTP2, 스트리밍, 클라우드 환경, 마이크로서비스, 고가용성, 모니터링, 트러블슈팅, 성능튜닝 등도 고려해야 합니다.

위의 각 내용들에 대해서 잘 정리된 QnA 형태로 구성되어 있습니다.
어떤 설정들을 해야하고 그 설정값들의 의미는 무엇인지  그리고 관련된 참고자료는 무엇이 있는지 등등을 기술하고 있습니다.
nginx plus라는 상용확장기능에서만 제공되는 기능들에 대해서도 잘 구분해서 설명하고 있습니다.

다만 해결책은 답변들은 핵심적인 내용만 적혀있고 Getting Started 나 예제를 따라하는 형태의 상세한 설명은 아니라서 실제 운영할때는 어느정도 시행착오가 필요하지 않을까 생각됩니다.

도커로 제공되는 서비스들을 볼때 앞단에 nginx를 붙이는 것을 종종 봤었는데 좀 더 심화적인 내용을 알 수 있어서 좋았습니다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


먼저 표지는 이렇게 생겼다.




















아이들이 고양이가 귀엽다며 좋아하던...스라소니인데....나름 맹수인데...ㄷㄷㄷ

운이 좋은걸까?
이직한 회사에서 nginx를 사용하고 있다.
이 전에는 apache + tomcat 조합을 많이 이용했었고 nginx는 이번이 처음이다.
여기저기 구글링 해 가며 일을 하고 있는데 이 책은 상당한 도움이 될 예정이다.

기본적인 구성과 사용방법 부터 설정을 이용한 다양한 기능이나
고성능 부하 분산, 모니터링, 성능 튜닝에 관하여 잘 정리 되어 있다.

특히 지금 서버 운영을 위해서 사용중인 기능들에 대한 내용이 잘 정리 되어 있어서
개인적으로 앞으로 업무에 직접적인 활용도가 높을 책이 될것이다.

현재 서버에서 사용중인 기능이나 설정, 책에서 소개하는 내용들을
테스트 서버를 구성하여 사용하면서 유익하다 싶은 내용들을 블로그에 정리해야겠다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
NGINX 쿡북
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
NGINX 쿡북
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
NGINX 쿡북
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실