목차

옮긴이의 글
추천사
머리말
감사의 글

1. 웹 서핑하기
에피소드 1: 광고판
에피소드 2: 홈페이지
에피소드 3: 링크
에피소드 4: 폼과 리다이렉트
애플리케이션 상태
리소스 상태
연결
웹은 뭔가 특별하다
의미 체계(semantic)의 문제

2. 간단한 API
HTTP GET: 확실한 시도
HTTP 응답 읽기
JSON
Collection+JSON
API 작성하기
HTTP POST: 리소스는 어떻게 탄생할까
제약 조건으로 자유해짐
애플리케이션 의미가 의미적 차이를 만든다

3. 리소스와 표현
무엇이든 리소스가 될 수 있다
표현은 리소스 상태를 설명한다
표현은 양방향으로 전송된다
많은 표현이 있는 리소스
HTTP의 프로토콜 의미
어떤 메서드를 사용해야 할까?

4. 하이퍼미디어
하이퍼미디어 형식으로서의 HTML
URI 템플릿
URI 대 URL
Link 헤더
하이퍼미디어는 무엇을 위한 것인가
가짜 하이퍼미디어를 조심하자!
의미 체계의 문제: 잘 대응하고 있는가?

5. 도메인 특화 설계
Maze+XML: 도메인 특화 설계
Maze+XML은 어떻게 동작하나
미로 컬렉션
Maze+XML이 API일까?
클라이언트 #1: 게임
Maze+XML 서버
클라이언트 #2: 지도 제작기
클라이언트 #3: 허풍쟁이(The Boaster)
클라이언트는 그들이 원하는 일을 한다
표준 확장하기
지도 제작기의 결점
메타포로서의 미로
의미 체계의 문제 맞닥뜨리기
도메인 특정 설계는 어디에 있는가?
도메인 특정 설계를 찾을 수 없다면 만들지 말라
API 클라이언트의 종류

6. 컬렉션 패턴
컬렉션은 무엇인가?
Collection+JSON
(일반) 컬렉션은 어떻게 동작하는가
AtomPub(Atom Publishing Protocol)
의미 체계의 문제: 잘 대응하고 있는가?

7. 순수 하이퍼미디어 설계
왜 HTML인가?
HTML의 기능
마이크로포맷
hMaze 마이크로포맷
마이크로데이터
리소스 상태 변경하기
하이퍼미디어의 대체재는 미디어다
HTML의 제약
하이퍼텍스트 애플리케이션 언어
사이렌
의미 체계의 문제: 잘 대응하고 있는가?

8. 프로파일
클라이언트는 문서를 어떻게 찾는가?
프로파일이 뭘까?
프로파일에 연결하기
프로파일은 프로토콜 의미 체계를 설명한다
프로파일은 애플리케이션 의미 체계를 설명한다
XMDP: 기계가 이해할 수 있는 첫 번째 프로파일 형식
ALPS
JSON-LD
임베딩된 문서
요약

9. 설계 절차
2단계 설계 절차
7단계 설계 절차
예제: You Type It, We Post It
몇 가지 설계 충고
기존 API에 하이퍼미디어 추가하기
앨리스의 두 번째 모험

10. 하이퍼미디어 동물원
도메인 특화 형식
컬렉션 패턴 형식
순수 하이퍼미디어 형식
GeoJSON: 문제가 되는 유형
의미 체계 동물원

11. API를 위한 HTTP
새로운 HTTP/1.1 설계 명세서
응답 코드
헤더
표현들 사이에서 선택하기
HTTP 성능
업데이트를 못한 문제 피하기
인증
HTTP 확장
HTTP 2.0

12. 리소스 설명과 연결된 데이터
RDF
설명 전략을 사용해야 할 때
리소스 유형
RDF 스키마
연결된 데이터로의 이동
JSON-LD
히드라
XRD 종류들
온톨로지 동물원
결론: 설명 전략은 살아 있다!

13. CoaP: 임베디드 시스템을 위한 REST
CoaP 요청
CoaP 응답
메시지의 종류
지연된 응답
멀티캐스트 메시지
CoRE 연결 형식
결론: HTTP가 없는 REST

부록 A. 상태 목록(Status Codex)
부록 B. 헤더 목록(Header Codex)
부록 C. API 설계자를 위한 필딩 논문 가이드
용어 해설
찾아보기

 

 

 

목차

1장 깨끗한 코드
코드가 존재하리라
나쁜 코드
나쁜 코드로 치르는 대가
__ 원대한 재설계의 꿈
__ 태도
__ 원초적 난제
__ 깨끗한 코드라는 예술?
__ 깨끗한 코드란?
우리들 생각
우리는 저자다
보이스카우트 규칙
프리퀄과 원칙
결론
참고 문헌
2장 의미 있는 이름
들어가면서
의도를 분명히 밝혀라
그릇된 정보를 피하라
의미 있게 구분하라
발음하기 쉬운 이름을 사용하라
검색하기 쉬운 이름을 사용하라
인코딩을 피하라
__ 헝가리식 표기법
__ 멤버 변수 접두어
__ 인터페이스 클래스와 구현 클래스
자신의 기억력을 자랑하지 마라
클래스 이름
메서드 이름
기발한 이름은 피하라
한 개념에 한 단어를 사용하라
말장난을 하지 마라
해법 영역에서 가져온 이름을 사용하라
문제 영역에서 가져온 이름을 사용하라
의미 있는 맥락을 추가하라
불필요한 맥락을 없애라
마치면서
3장 함수
작게 만들어라!
__ 블록과 들여쓰기
한 가지만 해라!
__ 함수 내 섹션
함수 당 추상화 수준은 하나로!
__ 위에서 아래로 코드 읽기: 내려가기 규칙
Switch 문
서술적인 이름을 사용하라!
함수 인수
__ 많이 쓰는 단항 형식
__ 플래그 인수
__ 이항 함수
__ 삼항 함수
__ 인수 객체
__ 인수 목록
__ 동사와 키워드
부수 효과를 일으키지 마라!
__ 출력 인수
명령과 조회를 분리하라!
오류 코드보다 예외를 사용하라!
__ Try/Catch 블록 뽑아내기
__ 오류 처리도 한 가지 작업이다.
__ Error.java 의존성 자석
반복하지 마라!
구조적 프로그래밍
함수를 어떻게 짜죠?
결론
참고 문헌
4장 주석
주석은 나쁜 코드를 보완하지 못한다
코드로 의도를 표현하라!
좋은 주석
__ 법적인 주석
__ 정보를 제공하는 주석
__ 의도를 설명하는 주석
__ 의미를 명료하게 밝히는 주석
__ 결과를 경고하는 주석
__ TODO 주석
__ 중요성을 강조하는 주석
__ 공개 API에서 Javadocs
나쁜 주석
__ 주절거리는 주석
__ 같은 이야기를 중복하는 주석
__ 오해할 여지가 있는 주석
__ 의무적으로 다는 주석
__ 이력을 기록하는 주석
__ 있으나 마나 한 주석
__ 무서운 잡음
__ 함수나 변수로 표현할 수 있다면 주석을 달지 마라
__ 위치를 표시하는 주석
__ 닫는 괄호에 다는 주석
__ 공로를 돌리거나 저자를 표시하는 주석
__ 주석으로 처리한 코드
__ HTML 주석
__ 전역 정보
__ 너무 많은 정보
__ 모호한 관계
__ 함수 헤더
__ 비공개 코드에서 Javadocs
__ 예제
참고 문헌
5장 형식 맞추기
형식을 맞추는 목적
적절한 행 길이를 유지하라
__ 신문 기사처럼 작성하라
__ 개념은 빈 행으로 분리하라
__ 세로 밀집도
__ 수직 거리
__ 세로 순서
가로 형식 맞추기
__ 가로 공백과 밀집도
__ 가로 정렬
__ 들여쓰기
가짜 범위
팀 규칙
밥 아저씨의 형식 규칙
6장 객체와 자료 구조
자료 추상화
자료/객체 비대칭
디미터 법칙
__ 기차 충돌
__ 잡종 구조
__ 구조체 감추기
자료 전달 객체
__ 활성 레코드
결론
참고 문헌
7장 오류 처리
오류 코드보다 예외를 사용하라
Try-Catch-Finally 문부터 작성하라
미확인unchecked 예외를 사용하라
예외에 의미를 제공하라
호출자를 고려해 예외 클래스를 정의하라
정상 흐름을 정의하라
null을 반환하지 마라
null을 전달하지 마라
결론
참고문헌
8장 경계
외부 코드 사용하기
경계 살피고 익히기
log4j 익히기
학습 테스트는 공짜 이상이다
아직 존재하지 않는 코드를 사용하기
깨끗한 경계
참고 문헌
9장 단위 테스트
TDD 법칙 세 가지
깨끗한 테스트 코드 유지하기
__ 테스트는 유연성, 유지보수성, 재사용성을 제공한다
깨끗한 테스트 코드
__ 도메인에 특화된 테스트 언어
__ 이중 표준
테스트 당 assert 하나
__ 테스트 당 개념 하나
F.I.R.S.T.
결론
참고 문헌
10장 클래스
클래스 체계
__ 캡슐화
클래스는 작아야 한다!
__ 단일 책임 원칙
__ 응집도Cohesion
__ 응집도를 유지하면 작은 클래스 여럿이 나온다
변경하기 쉬운 클래스
__ 변경으로부터 격리
참고 문헌
11장 시스템
도시를 세운다면?
시스템 제작과 시스템 사용을 분리하라
__ Main 분리
__ 팩토리
__ 의존성 주입
확장
__ 횡단(cross-cutting) 관심사
자바 프록시
순수 자바 AOP 프레임워크
AspectJ 관점
테스트 주도 시스템 아키텍처 구축
의사 결정을 최적화하라
명백한 가치가 있을 때 표준을 현명하게 사용하라
시스템은 도메인 특화 언어가 필요하다
결론
참고 문헌
12장 창발성(創發性)
창발적 설계로 깔끔한 코드를 구현하자
단순한 설계 규칙 1: 모든 테스트를 실행하라
단순한 설계 규칙 2~4: 리팩터링
중복을 없애라
표현하라
클래스와 메서드 수를 최소로 줄여라
결론
참고 문헌
13장 동시성
동시성이 필요한 이유?
__ 미신과 오해
난관
동시성 방어 원칙
__ 단일 책임 원칙Single Responsibility Principle, SRP
__ 따름 정리corollary: 자료 범위를 제한하라
__ 따름 정리: 자료 사본을 사용하라
__ 따름 정리: 스레드는 가능한 독립적으로 구현하라
라이브러리를 이해하라
__ 스레드 환경에 안전한 컬렉션
실행 모델을 이해하라
__ 생산자-소비자Producer-Consumer
__ 읽기-쓰기Readers-Writers
__ 식사하는 철학자들Dining Philosophers
동기화하는 메서드 사이에 존재하는 의존성을 이해하라
동기화하는 부분을 작게 만들어라
올바른 종료 코드는 구현하기 어렵다
스레드 코드 테스트하기
__ 말이 안 되는 실패는 잠정적인 스레드 문제로 취급하라
__ 다중 스레드를 고려하지 않은 순차 코드부터 제대로 돌게 만들자
__ 다중 스레드를 쓰는 코드 부분을 다양한 환경에 쉽게 끼워 넣을 수 있게 스레드 코드를
구현하라
__ 다중 스레드를 쓰는 코드 부분을 상황에 맞게 조율할 수 있게 작성하라
__ 프로세서 수보다 많은 스레드를 돌려보라
__ 다른 플랫폼에서 돌려보라
__ 코드에 보조 코드instrument를 넣어 돌려라. 강제로 실패를 일으키게 해보라
__ 직접 구현하기
__ 자동화
결론
참고 문헌
14장 점진적인 개선
Args 구현
__ 어떻게 짰느냐고?
Args: 1차 초안
__ 그래서 멈췄다
__ 점진적으로 개선하다
String 인수
결론
15장 JUnit 들여다보기
JUnit 프레임워크
결론
16장 SerialDate 리팩터링
첫째, 돌려보자
둘째, 고쳐보자
결론
참고 문헌
17장 냄새와 휴리스틱
주석
__ C1: 부적절한 정보
__ C2: 쓸모 없는 주석
__ C3: 중복된 주석
__ C4: 성의 없는 주석
__ C5: 주석 처리된 코드
환경
__ E1: 여러 단계로 빌드해야 한다
__ E2: 여러 단계로 테스트해야 한다
함수
__ F1: 너무 많은 인수
__ F2: 출력 인수
__ F3: 플래그 인수
__ F4: 죽은 함수
일반
__ G1: 한 소스 파일에 여러 언어를 사용한다
__ G2: 당연한 동작을 구현하지 않는다
__ G3: 경계를 올바로 처리하지 않는다
__ G4: 안전 절차 무시
__ G5: 중복
__ G6: 추상화 수준이 올바르지 못하다
__ G7: 기초 클래스가 파생 클래스에 의존한다
__ G8: 과도한 정보
__ G9: 죽은 코드
__ G10: 수직 분리
__ G11: 일관성 부족
__ G12: 잡동사니
__ G13: 인위적 결합
__ G14: 기능 욕심
__ G15: 선택자 인수
__ G16: 모호한 의도
__ G17: 잘못 지운 책임
__ G18: 부적절한 static 함수
__ G19: 서술적 변수
__ G20: 이름과 기능이 일치하는 함수
__ G21: 알고리즘을 이해하라
__ G22: 논리적 의존성은 물리적으로 드러내라
__ G23: If/Else 혹은 Switch/Case 문보다 다형성을 사용하라
__ G24: 표준 표기법을 따르라
__ G25: 매직 숫자는 명명된 상수로 교체하라
__ G26: 정확하라
__ G27: 관례보다 구조를 사용하라
__ G28: 조건을 캡슐화하라
__ G29: 부정 조건은 피하라
__ G30: 함수는 한 가지만 해야 한다
__ G31: 숨겨진 시간적인 결합
__ G32: 일관성을 유지하라
__ G33: 경계 조건을 캡슐화하라
__ G34: 함수는 추상화 수준을 한 단계만 내려가야 한다
__ G35: 설정 정보는 최상위 단계에 둬라
__ G36: 추이적 탐색을 피하라
자바
__ J1: 긴 import 목록을 피하고 와일드카드를 사용하라
__ J2: 상수는 상속하지 않는다
__ J3: 상수 대 Enum
이름
__ N1: 서술적인 이름을 사용하라
__ N2: 적절한 추상화 수준에서 이름을 선택하라
__ N3: 가능하다면 표준 명명법을 사용하
__ N4: 명확한 이름
__ N5: 긴 범위는 긴 이름을 사용하라
__ N6: 인코딩을 피하라
__ N7: 이름으로 부수 효과를 설명하라
테스트
__ T1: 불충분한 테스트
__ T2: 커버리지 도구를 사용하라!
__ T3: 사소한 테스트를 건너뛰지 마라
__ T4: 무시한 테스트는 모호함을 뜻한다
__ T5: 경계 조건을 테스트하라
__ T6: 버그 주변은 철저히 테스트하라
__ T7: 실패 패턴을 살펴라
__ T8: 테스트 커버리지 패턴을 살펴라
__ T9: 테스트는 빨라야 한다
결론
참고 문헌
부록A 동시성 II
클라이언트/서버 예제
__ 서버
__ 스레드 추가하기
__ 서버 살펴보기
__ 결론
가능한 실행 경로
__ 경로 수
__ 가능한 순열 수 계산하기
__ 심층 분석
__ 결론
라이브러리를 이해하라
__ Executor 프레임워크
__ 스레드를 차단하지 않는non blocking 방법
__ 다중 스레드 환경에서 안전하지 않은 클래스
메서드 사이에 존재하는 의존성을 조심하라
__ 실패를 용인한다
__ 클라이언트-기반 잠금
__ 서버-기반 잠금
작업 처리량 높이기
__ 작업 처리량 계산 - 단일스레드 환경
__ 작업 처리량 계산 - 다중 스레드 환경
데드락
__ 상호 배제Mutual Exclusion
__ 잠금 & 대기Lock & Wait
__ 선점 불가No Preemption
__ 순환 대기Circular Wait
__ 상호 배제 조건 깨기
__ 잠금 & 대기 조건 깨기
__ 선점 불가 조건 깨기
__ 순환 대기 조건 깨기
__ 다중 스레드 코드 테스트
__ 스레드 코드 테스트를 도와주는 도구
결론
자습서: 전체 코드 예제
__ 클라이언트/서버 - 단일스레드 버전
__ 클라이언트/서버 - 다중 스레드 버전
부록B org.jfree.date.SerialDate
부록C 휴리스틱의 교차 참조 목록
에필로그
용어 대역표
약어 목록
찾아보기

 

 

 

목차

1장 인프라 엔지니어의 업무
2장 서버
3장 운영체제
4장 네트워크
5장 스토리지
6장 구매 및 상담
7장 데이터 센터
8장 솔루션과 보안
9장 인프라 운영
10장 대규모 인프라
11장 인프라 엔니지어의 성장

 

 

 

목차

▣ 01장 검색 시스템 이해하기
1.1 검색 시스템의 이해
__1.1.1 검색 시스템이란?
__1.1.2 검색 시스템의 구성 요소
__1.1.3 관계형 데이터베이스와의 차이점
1.2 검색 시스템과 엘라스틱서치
__1.2.1 엘라스틱서치가 강력한 이유
__1.2.2 엘라스틱서치의 약점
1.3 실습 환경 구축
__1.3.1 엘라스틱서치 설치
__1.3.2 키바나 설치
__1.3.3 환경 구축 관련 트러블슈팅

▣ 02장 엘라스틱서치 살펴보기
2.1 엘라스틱서치를 구성하는 개념
__2.1.1 기본 용어
__2.1.2 노드의 종류
__2.1.3 클러스터, 노드, 샤드
2.2 엘라스틱서치에서 제공하는 주요 API
__2.2.1 인덱스 관리 API
__2.2.2 문서 관리 API
__2.2.3 검색 API
__2.2.4 집계 API

▣ 03장 데이터 모델링
3.1 매핑 API 이해하기
__3.1.1 매핑 인덱스 만들기
__3.1.2 매핑 확인
__3.1.3 매핑 매개변수
3.2 메타 필드
__3.2.1 _index 메타 필드
__3.2.2 _type 메타 필드
__3.2.3 _id 메타 필드
__3.2.4 _uid 메타 필드
__3.2.5 _source 메타 필드
__3.2.6 _all 메타 필드
__3.2.7 _routing 메타 필드
3.3 필드 데이터 타입
__3.3.1 Keyword 데이터 타입
__3.3.2 Text 데이터 타입
__3.3.3 Array 데이터 타입
__3.3.4 Numeric 데이터 타입
__3.3.5 Date 데이터 타입
__3.3.6 Range 데이터 타입
__3.3.7 Boolean 데이터 타입
__3.3.8 Geo-Point 데이터 타입
__3.3.9 IP 데이터 타입
__3.3.10 Object 데이터 타입
__3.3.11 Nested 데이터 타입
3.4 엘라스틱서치 분석기
__3.4.1 텍스트 분석 개요
__3.4.2 역색인 구조
__3.4.3 분석기의 구조
__3.4.4 전처리 필터
__3.4.5 토크나이저 필터
__3.4.6 토큰 필터
__3.4.7 동의어 사전
3.5 Document API 이해하기
__3.5.1 문서 매개변수
__3.5.2 Index API
__3.5.3 Get API
__3.5.4 Delete API
__3.5.5 Delete By Query API
__3.5.6 Update API
__3.5.7 Bulk API
__3.5.8 Reindex API

▣ 04장 데이터 검색
4.1 검색 API
__4.1.1 검색 질의 표현 방식
__4.1.2 URI 검색
__4.1.3 Request Body 검색
4.2 Query DSL 이해하기
__4.2.1 Query DSL 쿼리의 구조
__4.2.2 Query DSL 쿼리와 필터
__4.2.3 Query DSL의 주요 파라미터
4.3 Query DSL의 주요 쿼리
__4.3.1 Match All Query
__4.3.2 Match Query
__4.3.3 Multi Match Query
__4.3.4 Term Query
__4.3.5 Bool Query
__4.3.6 Query String
__4.3.7 Prefix Query
__4.3.8 Exists Query
__4.3.9 Wildcard Query
__4.3.10 Nested Query
4.4 부가적인 검색 API
__4.4.1 효율적인 검색을 위한 환경설정
__4.4.2 Search Shards API
__4.4.3 Multi Search API
__4.4.4 Count API
__4.4.5 Validate API
__4.4.6 Explain API
__4.4.7 Profile API

▣ 05장 데이터 집계
5.1 집계
__5.1.1 엘라스틱서치와 데이터 분석
__5.1.2 엘라스틱서치가 집계에 사용하는 기술
__5.1.3 실습 데이터 살펴보기
__5.1.4 Aggregation API 이해하기
5.2 메트릭 집계
__5.2.1 합산 집계
__5.2.2 평균 집계
__5.2.3 최솟값 집계
__5.2.4 최댓값 집계
__5.2.5 개수 집계
__5.2.6 통계 집계
__5.2.7 확장 통계 집계
__5.2.8 카디널리티 집계
__5.2.9 백분위 수 집계
__5.2.10 지형 경계 집계
__5.2.11 지형 중심 집계
5.3 버킷 집계
__5.3.1 범위 집계
__5.3.2 날짜 범위 집계
__5.3.3 히스토그램 집계
__5.3.4 날짜 히스토그램 집계
__5.3.5 텀즈 집계
5.4 파이프라인 집계
__5.4.1 형제 집계
__5.4.2 부모 집계
5.5 근삿값(Approximate)으로 제공되는 집계 연산
__5.5.1 집계 연산과 정확도
__5.5.2 분산 환경에서 집계 연산의 어려움

▣ 06장 고급 검색
6.1 한글 형태소 분석기 사용하기
__6.1.1 은전한닢 형태소 분석기
__6.1.2 Nori 형태소 분석기
____6.1.2.1 nori_tokenizer 토크나이저
__6.1.3 트위터 형태소 분석기
6.2 검색 결과 하이라이트하기
6.3 스크립트를 이용해 동적으로 필드 추가하기
6.4 검색 템플릿을 이용한 동적 쿼리 제공
6.5 별칭을 이용해 항상 최신 인덱스 유지하기
6.6 스냅숏을 이용한 백업과 복구

▣ 07장 한글 검색 확장 기능
7.1 Suggest API 소개
__7.1.1 Term Suggest API
__7.1.2 Completion Suggest API
7.2 맞춤법 검사기
__7.2.1 Term Suggester API를 이용한 오타 교정
__7.2.2 한영/영한 오타 교정
7.3 한글 키워드 자동완성
__7.3.1 Completion Suggest API를 이용한 한글 자동완성
__7.3.2 Suggest API를 이용한 한글 자동완성의 문제점
__7.3.3 직접 구현해보는 한글 자동완성
7.4 자바카페 플러그인
__7.4.1 한글 유니코드의 이해
__7.4.2 한글 자모 분석 필터(javacafe_jamo)
__7.4.3 한글 초성 분석 필터(javacafe_chosung)
__7.4.4 영한 오타 변환 필터(javacafe_eng2kor)
__7.4.5 한영 오타 변환 필터(javacafe_kor2eng)
__7.4.6 스펠링 체크 필터(javacafe_spell)

▣ 08장 엘라스틱서치 클라이언트
8.1 엘라스틱서치 클라이언트 이해하기
__8.1.1 클라이언트 모듈 소개
__8.1.2 자바 클라이언트 모듈
8.2 Transport 클라이언트
__8.2.1 Transport 클라이언트 연결
__8.2.2 매핑 API 사용하기
__8.2.3 문서 API 사용하기
__8.2.4 검색 API 사용하기
__8.2.5 집계 API 사용하기
__8.2.6 Query DSL API 사용하기
8.3 High Level REST 클라이언트
__8.3.1 REST 클라이언트 연결
__8.3.2 매핑 API 사용하기
__8.3.3 문서 API 사용하기
__8.3.4 검색 API 사용하기

▣ 09장 엘라스틱서치와 루씬 이야기
9.1 클러스터 관점에서 구성요소 살펴보기
__9.1.1 클러스터
__9.1.2 노드
__9.1.3 인덱스
__9.1.4 문서
__9.1.5 샤드
__9.1.6 레플리카
__9.1.7 세그먼트
9.2 엘라스틱서치 샤드 vs. 루씬 인덱스
9.3 엘라스틱서치가 근실시간 검색을 제공하는 이유
__9.3.1 색인 작업 시 세그먼트의 기본 동작 방식
__9.3.2 세그먼트 불변성
__9.3.3 세그먼트 불변성과 업데이트
__9.3.4 루씬을 위한 Flush, Commit, Merge
__9.3.5 엘라스틱서치를 위한 Refresh, Flush, Optimize API
__9.3.6 엘라스틱서치와 NRT(Near Real-Time)
9.4 고가용성을 위한 Translog의 비밀
__9.4.1 Translog의 동작 순서
__9.4.2 Translog가 존재하는 이유
9.5. 엘라스틱서치 샤드 최적화
__9.5.1 운영 중에 샤드의 개수를 수정하지 못하는 이유
__9.5.2 레플리카 샤드의 복제본 수는 얼마가 적당할까?
__9.5.3 클러스터에서 운영 가능한 최대 샤드 수는?
__9.5.4 하나의 인덱스에 생성 가능한 최대 문서 수는?

▣ 10장 대용량 처리를 위한 시스템 최적화
10.1 노드 실행환경과 JVM 옵션
__10.1.1 엘라스틱서치 릴리스 노트
__10.1.2 실행 시 자바 8 이상을 사용해야 하는 이유
__10.1.3 항상 최신 버전의 엘라스틱서치를 사용해야 하는 이유
__10.1.4 자바 8에서 제공하는 JVM 옵션
__10.1.5 엘라스틱서치에 적용된 JVM 옵션
10.2 힙 크기를 32GB 이하로 유지해야 하는 이유
__10.2.1 엘라스틱서치와 힙 크기
__10.2.2 Ordinary Object Pointer
__10.2.3 Compressed Ordinary Object Pointer
__10.2.4 엘라스틱서치에서 힙 크기 설정하기
__10.2.5 엘라스틱서치에서 Compressed OOP 사용하기
10.3 엘라스틱서치와 가상 메모리
__10.3.1 가상 메모리
__10.3.2 JVM을 위한 가상 메모리
__10.3.3 엘라스틱서치를 위한 vm.max_map_count 설정
10.4 분산환경에서의 메모리 스와핑
__10.4.1 메모리 스와핑
__10.4.2 엘라스틱서치에서 스와핑을 비활성화해야 하는 이유
10.5. 시스템 튜닝 포인트
__10.5.1 애플리케이션에서 튜닝 가능한 리소스
__10.5.2 ulimit 명령어를 이용한 유저 레벨의 튜닝
__10.5.3 sysctl 명령어를 이용한 커널 레벨의 튜닝
__10.5.4 엘라스틱서치 노드 레벨의 튜닝

▣ 11장 장애 방지를 위한 실시간 모니터링
11.1 클러스터 Health 체크
__11.1.1 클러스터 레벨의 Health 체크
__11.1.2 인덱스 레벨의 Health 체크
__11.1.3 샤드 레벨의 Health 체크
__11.1.4 Health 체크 활용하기
11.2 물리적인 클러스터 상태 정보 조회
__11.2.1 클러스터 레벨의 물리 상태 조회
__11.2.2 노드 레벨의 물리 상태 조회
11.3 클러스터에 대한 실시간 모니터링
__11.3.1 클러스터 레벨의 실시간 모니터링
__11.3.2 노드 레벨의 실시간 모니터링
__11.3.3 인덱스 레벨의 실시간 모니터링
11.4 Cat API로 콘솔에서 모니터링하기
__11.4.1 Cat API와 REST API 차이점
__11.4.2 Cat API 공통 파라미터
__ 11.4.3 콘솔에서 호출하는 Cat API

▣ 12장 안정적인 클러스터 운영 노하우
12.1 노드 부트스트랩 과정의 이해
__ 12.1.1 부트스트랩 과정이 필요한 이유
__ 12.1.2 부트스트랩 체크 과정 따라가기
12.2 마스터 노드와 데이터 노드 분리하기
__ 12.2.1 엘라스틱서치 노드의 종류
__ 12.2.2 마스터 노드와 데이터 노드를 분리해야 하는 이유
__ 12.2.3 클러스터 Split Brain 문제 방지하기
12.3 클러스터 관리 API
__ 12.3.1 런타임에 환경설정 변경(_cluster/settings API)
__ 12.3.2 대기 중인 클러스터 변경 명령 조회(_cluster/pending_tasks API)
__ 12.3.3 사용률이 높은 스레드 조회(_nodes/hot_threads API)
__ 12.3.4 노드 간 샤드 이동(_cluster/reroute API)
__ 12.3.5 실행 중인 태스크 조회(_tasks API)
__ 12.3.6 관리 API 호출 통계(_nodes/usage API)
12.4 안정적인 클러스터 운영을 위한 주요 체크포인트
__ 12.4.1 클러스터 상태 측정
__ 12.4.2 검색 성능 측정
__ 12.4.3 색인 성능 측정
__ 12.4.4 HTTP 성능 측정
__ 12.4.5 GC 성능 측정
__ 12.4.6 운영체제 성능 측정
__ 12.4.7 스레드풀 상태 측정
__ 12.4.8 캐시 상태 측정

▣ 13장 클러스터 성능 측정
13.1 엘라스틱서치를 위한 벤치마크 툴
__ 13.1.1 루씬 벤치마킹 유틸리티
__ 13.1.2 Elasticsearch Rally
13.2 랠리(Rally)를 이용한 클러스터 부하 테스트
__ 13.2.1 랠리 설치
__ 13.2.2 랠리 Tracks 옵션
__ 13.2.3 랠리 Cars 옵션
__ 13.2.4 레이스 시작하기
__ 13.2.5 토너먼트 결과 비교하기
13.3 키바나(Kibana)를 이용한 성능 모니터링
__ 13.3.1 Search Rate
__ 13.3.2 Search Latency
__ 13.3.3 Indexing Rate
__ 13.3.4 Indexing Latency

 

 

 

 

목차

▣ 01장: 엘라스틱서치
1.1 엘라스틱서치 사용 사례
1.2 엘라스틱서치 특징
1.3 데이터 색인
1.4 JSON 문서와 REST API
___1.4.1 JSON 문서
___1.4.2 REST API
1.5 솔라, 몽고디비와 엘라스틱서치 비교
___1.5.1 솔라와 엘라스틱서치
___1.5.2 몽고DB와 엘라스틱서치
1.6 정리

▣ 02장: 엘라스틱서치 설치와 실행
2.1 엘라스틱서치 설치
___2.1.1 엘라스틱서치 설치 파일 비교
___2.1.2 유닉스 운영체제에서 설치와 실행
___2.1.3 유닉스 서비스로 설치 및 실행
___2.1.4 윈도 운영체제에서 설치 및 실행
___2.1.5 윈도 서비스로 설치 및 실행
2.2 엘라스틱서치 프로그램 구조
2.3 환경 설정
___2.3.1 bin/elasticsearch.in.sh
___2.3.2 config/elasticsearch.yml
___2.3.3 config/logging.yml
2.4 플러그인 설치
2.5 정리

▣ 03장: 데이터 처리
3.1 엘라스틱서치의 데이터 구조
3.2 엘라스틱서치 데이터 처리
___3.2.1 데이터 입력
___3.2.2 데이터 삭제
___3.2.3 데이터 업데이트(_update) API
___3.2.4 파일을 이용한 데이터 처리
___3.2.5 벌크(_bulk) API를 이용한 배치 작업
___3.2.6 벌크 UDP API
3.3 포스트맨을 이용한 윈도에서 엘라스틱서치 사용
3.4 정리

▣ 04장: 시스템 구조
4.1 클러스터와 노드
___4.1.1 노드 바인딩
___4.1.2 마스터 노드와 데이터 노드
4.2 샤드와 복사본
4.3 네트워크 바인딩과 디스커버리
___4.3.1 젠 디스커버리
___4.3.2 아마존 EC2 디스커버리
4.4 정리

▣ 05장: 검색
5.1 검색(_search) API
5.2 URI 검색
___5.2.1 q(query)
___5.2.2 df(default field)
___5.2.3 default_operator
___5.2.4 explain
___5.2.5 _source
___5.2.6 fields
___5.2.7 sort
___5.2.8 timeout
___5.2.9 from
___5.2.10 size
___5.2.11 search_type
5.3 리퀘스트 바디 검색
___5.3.1 size, from, fields
___5.3.2 sort
___5.3.3 _source
___5.3.4 partial_fields, fielddata_fields
___5.3.5 highlight
5.4 정리

▣ 06장: 페이셋과 어그리게이션
6.1 페이셋
___6.1.1 텀 페이셋
___6.1.2 범위 페이셋
___6.1.3 히스토그램 페이셋
___6.1.4 날짜 히스토그램 페이셋
___6.1.5 필터와 질의 페이셋
___6.1.6 통계 페이셋
___6.1.7 위치 거리 페이셋
6.2 어그리게이션
___6.2.1 최소, 최대, 합, 평균, 개수 어그리게이션
___6.2.2 상태, 확장 상태 어그리게이션
___6.2.3 글로벌 어그리게이션
___6.2.4 필터, 누락 어그리게이션
___6.2.5 텀 어그리게이션
___6.2.6 범위, 날짜 범위 어그리게이션
___6.2.7 히스토그램, 날짜 히스토그램 어그리게이션
___6.2.8 위치 거리, 위치 해시 그리드 어그리게이션
6.3 정리

▣ 07장: 질의(QueryDSL)
7.1 쿼리
___7.1.1 텀, 텀즈 쿼리
___7.1.2 매치, 다중 매치(multi match) 쿼리
___7.1.3 불 쿼리
___7.1.4 문자열 쿼리
___7.1.5 접두어 쿼리
___7.1.6 범위 쿼리
___7.1.7 전체 매치 쿼리
___7.1.8 퍼지 쿼리
7.2 필터
___7.2.1 텀, 텀즈 필터
___7.2.2 범위 필터
___7.2.3 and, or, not 필터
___7.2.4 불 필터
___7.2.5 위치 필터
7.3 정리

▣ 08장: 매핑
8.1 매핑(_mapping) API
8.2 내장필드
___8.2.1 _id
___8.2.2 _source
___8.2.3 _all
___8.2.4 _analyzer
___8.2.5 _timestamp
___8.2.6 _ttl(time to live)
8.3 데이터 타입
___8.3.1 문자열
___8.3.2 숫자
___8.3.3 날짜
___8.3.4 불린
___8.3.5 바이너리
___8.3.6 객체
___8.3.7 중첩
___8.3.8 좌표
___8.3.9 위치 모형
8.4 다중필드
_8.4.1 다중필드
_8.4.2 토큰 수
_8.4 필드 복사
_8.5 정리

▣ 09장: 분석
9.1 분석
___9.1.1 분석 과정
___9.1.2 _analyze API
___9.1.3 사용자 정의 분석기
9.2 분석기
___9.2.1 standard 분석기
___9.2.2 simple 분석기
___9.2.3 whitespace 분석기
___9.2.4 stop 분석기
___9.2.5 keyword 분석기
___9.2.6 pattern 분석기
___9.2.7 다국어 분석기
___9.2.8 snowball 분석기
9.3 토크나이저
___9.3.1 standard 토크나이저
___9.3.2 nGram 토크나이저
___9.3.3 edgeNGram 토크나이저
___9.3.4 keyword 토크나이저
___9.3.5 letter 토크나이저
___9.3.6 lowercase 토크나이저
___9.3.7 whitespace 토크나이저
___9.3.8 pattern 토크나이저
___9.3.9 uax_url_email 토크나이저
___9.3.10 path_hierarchy 토크나이저
___9.3.11 classic 토크나이저
9.4 토큰필터
___9.4.1 standard 토큰필터
___9.4.2 asciifolding 토큰필터
___9.4.3 length 토큰필터
___9.4.4 lowercase 토큰필터
___9.4.5 uppercase 토큰필터
___9.4.6 nGram 토큰필터
___9.4.7 edgeNGram 토큰필터
___9.4.8 porter_stem 토큰필터
___9.4.9 shingle 토큰필터
___9.4.10 stop 토큰필터
___9.4.11 word_delimiter 토큰필터
___9.4.12 stemmer 토큰필터
___9.4.13 keyword_marker 토큰필터
___9.4.14 keyword_repeat 토큰필터
___9.4.15 unique 토큰필터
___9.4.16 snowball 토큰필터
___9.4.17 synonym 토큰필터
___9.4.18 합성어 토큰필터
___9.4.19 reverse 토큰필터
___9.4.20 truncate 토큰필터
___9.4.21 trim 토큰필터
___9.4.22 limit 토큰필터
___9.4.23 hunspell 토큰필터
___9.4.24 cjk_bigram 토큰필터
___9.4.25 킵워드 토큰필터
9.5 한글 형태소 분석기
9.6 정리

 

 

 

목차

1장. 일래스틱 스택 소개
__일래스틱서치 개념 및 사용 이유
____스키마리스 및 도큐먼트 지향
____검색
____분석
____풍부한 클라이언트 라이브러리와 REST API 지원
____운영 및 확장 용이
____거의 실시간(Near real time)
____신속성
____결함 허용성(Fault tolerant)
__일래스틱 스택의 구성 요소
____일래스틱서치
____로그스태시
____비트
____키바나
____엑스팩
________보안
________모니터링
________보고서
________알림
________그래프
____일래스틱 클라우드
__일래스틱 스택의 사용 사례
____로그 및 보안 분석
____제품 검색
____메트릭 분석
____웹 검색 및 웹 사이트 검색
__다운로드 및 설치
____일래스틱서치 설치
____키바나 설치
__요약

2장. 일래스틱서치 시작하기
__키바나 콘솔 UI 사용하기
__핵심 개념
____인덱스
____타입
____도큐먼트
____노드
____클러스터
____샤드 및 복제본(Replicas)
____매핑(Mapping) 및 타입
________데이터 타입
________매핑
____역색인
__CURD 연산
____색인 API
________ID를 제공해 도큐먼트 색인하기
________ID를 제공하지 않고 도큐먼트 색인하기
____조회 API
____업데이트 API
____삭제 API
__인덱스 생성 및 매핑 관리
____인덱스 생성
____기존 인덱스에 타입 매핑 생성
____매핑 업데이트
__REST API 개요
____공통 API 규칙
________JSON 응답 형식
________다중 인덱스 처리
__요약

3장. 유사도 검색
__텍스트 분석의 기초
____일래스틱서치 분석기 이해하기
________문자 필터
________토크나이저
________토큰 필터
____내장형 분석기 사용하기
________표준 분석기
____맞춤형 분석기로 자동 완성 구현하기
__구조화된 데이터 검색
____Range 쿼리
________숫자 타입
________스코어 증폭
________날짜 범위
____Exists 쿼리
____Term 쿼리
__전문 텍스트 검색
____Match 쿼리
________Operator
________minimum_should_match
________Fuzziness
________Match Phrase 쿼리
____Multi Match 쿼리
________multi_match 쿼리 사용하기
________특정 필드의 스코어 높이기
________다양한 multi_match 쿼리 타입
__복합 쿼리 작성
____Constant score 쿼리
____Bool 쿼리
________OR 조건 결합
________AND 및 OR 조건 결합
________NOT 조건 추가
__요약

4장. 일래스틱서치 분석
__집계 기초
____Bucket 집계
____Metric 집계
____Matrix 집계
____Pipeline 집계
__데이터 분석 준비
____데이터 구조 이해하기
____로그스태시를 사용해 데이터 업로드하기
__Metric 집계
____합계, 평균, 최소, 최대 집계
________Sum 집계
________Average 집계
________Min 집계
________Max 집계
____통계 및 확장 통계 집계
________Stats 집계
________Extended Stats 집계
____Cardinality 집계
__Bucket 집계
____문자열 데이터 버킷팅
________Terms 집계
____숫자 데이터 버킷팅
________Histogram 집계
________Range 집계
____필터 데이터 집계
____중첩 집계
____맞춤형 조건 버킷팅
________Filter 집계
________Filters 집계
____날짜 및 시간 데이터 버킷팅
________Date Histogram 집계
____지리 정보 데이터 버킷팅
________Geo distance 집계
________GeoHash grid 집계
__Pipeline 집계
____시간 경과에 따른 사용율 누적 합계 계산
__요약

5장. 로그 데이터 분석
__로그 분석 과제
____로그스태시
________설치 및 환경 설정
________로그스태시 다운로드 및 설치
__로그스태시 아키텍처
__로그스태시 플러그인 개요
____플러그인 설치 및 업데이트
________입력 플러그인
________출력 플러그인
________필터 플러그인
________코덱 플러그인
____플러그인 탐색
________입력 플러그인 탐색
________출력 플러그인
________코덱 플러그인
________필터 플러그인
__인제스트 노드
____파이프라인 정의
____인제스트 API
________Put 파이프라인 API
________Get 파이프라인 API
________Delete 파이프라인 API
________Simulate 파이프라인 API
__요약

6장. 로그스태시를 활용한 데이터 파이프라인 구축
__로그스태시를 사용한 로그 구문 분석 및 강화
____필터 플러그인
________CSV 필터
________Mutate 필터
________Grok 필터
________Date 필터
________Geoip 필터
________Useragent 필터
__비트 소개
____일래스틱 비트
________파일비트
________메트릭비트
________패킷비트
________하트비트
________윈로그비트
________오디트비트
____커뮤니티 비트
____로그스태시와 비트의 차이점
__파일비트
____파일비트 다운로드 및 설치
________윈도우에 설치
________리눅스에 설치
____아키텍처
____환경 설정
________Prospector 설정
________전역 옵션
________일반 옵션
________출력 설정
________모듈
__요약

7장. 키바나를 활용한 데이터 시각화
__키바나 다운로드 및 설치
____윈도우에 설치하기
____리눅스에 설치하기
____키바나 설정하기
__데이터 준비
__키바나 UI
____사용자 상호 작용
____인덱스 패턴 설정
____탐색
________일래스틱서치 쿼리 문자열
________일래스틱서치 DSL 쿼리
____시각화
________키바나 집계
____시각화 만들기
____시각화 타입
________선, 영역, 막대 차트
________데이터 테이블
________마크다운 위젯
________메트릭
________목표
________계량기
________기여도 차트
________좌표 지도
________지역 지도
________태그 클라우드
____시각화 활용하기
________시간 경과에 따른 응답 코드 분석하기
________상위 10개의 요청 URL 검색하기
________시간 경과에 따른 상위 5개국 대역폭 분석하기
______다른 국가에서 유입된 웹 트래픽 분석하기
________가장 많이 사용하는 사용자 에이전트 검색하기
____대시보드
________대시보드 구축하기
________대시보드 저장하기
________대시보드 복제하기
________대시보드 공유하기
__타임라이온
____타임라이온 UI
____타임라이온 표현식
__플러그인 사용하기
____플러그인 설치하기
____플러그인 제거하기
__요약

8장. 일래스틱 엑스팩
__엑스팩 설치
____일래스틱서치에 엑스팩 설치하기
____키바나에 엑스팩 설치하기
____엑스팩 제거하기
__엑스팩 설정
__보안
____사용자 인증
____사용자 권한 부여
____보안 실행
________사용자 생성하기
________역할 생성하기
________도큐먼트 또는 필드 레벨 보안
________엑스팩 보안 API
__일래스틱서치 모니터링
____모니터링 UI
________일래스틱서치 메트릭
____워치 구조
____워치 활용하기
________알림 만들기
________워치 삭제, 편집, 비활성화
__요약

9장. 일래스틱 스택 운영 환경에 적용하기
__일래스틱 스택을 클라우드 환경에 호스팅하기
____일래스틱 클라우드 시작하기
____키바나 사용하기
____설정 재정의
____스냅숏 복구
__일래스틱 스택을 개별 구축 환경에 호스팅하기
____하드웨어 선택
____운영체제 선정
____일래스틱서치 노드 설정
________JVM Heap 크기
________스와핑 비활성화
________파일 디스크립터
________스레드 풀 및 가비지 컬렉터
____일래스틱서치 관리 및 모니터링
____도커 컨테이너 활용하기
____클라우드 환경 사용 시 고려 사항
________인스턴스 타입 선택
________포트를 노출하지 않도록 변경
________프록시 요청
________로컬 주소에 HTTP 바인딩
________EC2 검색 플러그인 설치
________S3 저장소 플러그인 설치
________주기적인 스냅숏 설정
__백업 및 복구
____스냅숏 저장소 설정하기
________공유 파일 시스템
____클라우드 또는 분산 파일 시스템
____스냅숏 생성하기
____스냅숏 복구하기
__인덱스 별칭 설정
____인덱스 별칭 이해하기
____인덱스 별칭 사용법
__인덱스 템플릿 설정
____인덱스 템플릿 생성
____인덱스 즉시 생성
__시계열 데이터 모델링
____예측할 수 없을 정도로 확장되는 인덱스
________일래스틱서치 병렬 처리 단위
________샤드 개수가 유사도 점수에 미치는 영향
________샤드 개수가 집계 정확도에 미치는 영향
____시간 경과에 따른 매핑 변경
________신규 필드 추가
________기존 필드 제거
____도큐먼트 자동 삭제
____시간 기반 인덱스 사용 방법
________시간 기반 인덱스 확장
________시간 경과에 따른 매핑 변경
________도큐먼트 자동 삭제
__요약

10장. 데이터 분석 애플리케이션 구축
__애플리케이션 소개
____센서에서 생성된 데이터 이해하기
____센서 메타데이터 이해하기
____최종 저장된 데이터 이해하기
__일래스틱서치 데이터 모델링
____인덱스 템플릿 정의
____매핑 이해하기
__메타데이터 데이터베이스 설정
__로그스태시 데이터 파이프라인 구축
____웹 기반 JSON 요청 수락하기
____MySQL의 메타데이터로 JSON 데이터 강화하기
________jdbc_streaming 플러그인
________mutate 플러그인
________일래스틱서치에 결과 도큐먼트 저장하기
__로그스태시에서 HTTP를 이용한 데이터 전송
__키바나 데이터 시각화
____키바나에서 인덱스 패턴 설정하기
____시각화 구축하기
________시간 경과에 따른 평균 온도 변화는 어떻게 될까?
________시간 경과에 따른 평균 습도 변화는 어떻게 될까?
________시간 경과에 따라 각 위치에서 온도와 습도 변화는 어떻게 될까?
________온도와 습도를 지도에서 확인할 수 있을까?
________센서는 각 부서에 어떻게 분산돼 있을까?
____대시보드 만들기
__요약

11장. 서버 인프라 모니터링
__메트릭비트
____메트릭비트 다운로드 및 설치
________윈도우에 설치하기
________리눅스에 설치하기
____아키텍처
________이벤트 구조
__메트릭비트 설정
____모듈 설정
________modules
________metricbeat
____일반 설정
____출력 설정
____로그
__시스템 메트릭 수집
____system 모듈을 활용한 메트릭비트 실행
____별칭 지정하기
____키바나에서 시스템 메트릭 시각화하기
__시스템 아키텍처
__요약

 

 

 

목차

1장. 정보 보안의 세계: 역사 속의 보안 전문가들
01_정보화 사회에서 보안의 의미
02_해킹과 보안의 역사
요약
연습문제

2장. 법과 윤리: 보안 전문가로서 당신이 지켜야 할 것들
01_해커의 마음가짐
02_보안 관련법
요약
연습문제
현장의 목소리: 해커도 직업이 될 수 있다?

3장. 네트워크 보안: 길을 지배하려는 자에 대한 저항
01_네트워크의 기초
02_서비스 거부(DoS) 공격
03_스니핑
04_스푸핑
05_세션 하이재킹
06_무선 랜 보안
요약
연습문제

4장. 코드 보안: 코드 속에 뒷길을 만드는 기술
01_시스템과 프로그램에 대한 이해
02_버퍼 오버플로우
03_포맷 스트링
요약
연습문제
현장의 목소리: 아는 것이 힘이다

5장. 인터넷 보안: 웹, 그 무한한 가능성과 함께 성장한 해킹
01_인터넷의 역사
02_HTTP와 웹 서비스에 대한 이해
03_정보 수집과 구글 해킹
04_파일 접근
05_리버스 텔넷
06_인증 우회
07_패킷 변조
08_XSS
09_SQL 삽입 공격
요약
연습문제
현장의 목소리: 합법적인 해킹?!

6장. 악성 코드: 인터넷을 통해 전이되는 웜과 바이러스
01_악성 코드의 역사와 분류
02_바이러스
03_웜
04_기타 악성 코드
요약
연습문제

7장. 암호에 대한 이해: 숨기고자 하는 이들의 싸움
01_암호의 발전사
02_대칭 암호화 방식
03_비대칭 암호화 방식
04_해시
요약
연습문제

8장. 암호를 이용한 전자상거래: 상거래를 사이버 세계로 끌어들인 암호
01_공개키 기반 구조(PKI)
02_전자서명과 전자봉투
03_전자상거래
04_전자우편(이메일)
05_암호화 통신
요약
연습문제
현장의 목소리: 은행, 안전한 금고인가?

9장. 시스템 보안: 건강한 시스템이 챙겨야 할 기본
01_계정과 패스워드 관리
02_세션 관리
03_접근 제어
04_권한 관리
05_로그
06_취약점 관리
요약
연습문제

10장. 보안 시스템: 시스템을 건강하게 하는 보안 시스템
01_인증 시스템
02_방화벽
03_침입탐지 시스템
04_침입차단 시스템
05_VPN
06_출입통제 및 모니터링 장비
07_기타 보안 솔루션
요약
연습문제

11장. 침입대응과 포렌직: 해킹 대응 및 추적
01_침입대응
02_포렌직에 대한 이해
03_증거 수집
요약
연습문제

12장. 사회공학: 사이버 세계의 사기
01_사회공학에 대한 이해
02_사회공학 기법
03_사회공학에 대한 대응책
요약
연습문제

13장. 조직과 정책: 보안 수준을 높이기 위한 조직과 정책적 요소
01_보안 정책과 절차
02_보안 조직
03_접근 제어 모델
04_내부 통제
05_보안 인증
06_보안 프레임워크: ISO27001
요약
연습문제
현장의 목소리: 정보보호 패러다임과 정보보호 관리

14장. 보안 전문가의 요건과 관련 자격증 소개: 보안 전문가가 되고자 하는 이에 대한 지침과 참고 사항
01_보안 전문가가 갖추어야 할 소양
02_보안 및 IT 관련 자격증 소개
요약
연습문제

부록. 실습 환경 구축하기
01_MS-SQL 2000의 설치와 실행
02_IIS 웹 서버의 설치와 웹 테스트 환경의 구성
03_레드햇 엔터프라이즈 4의 설치
04_오라클 11g(리눅스 버전)의 설치
05_SUN 솔라리스 10(x86)의 설치

 

 

 

목차

1장 실패한 리뷰들, 도대체 무엇을 놓치고 있는가 1
1.1 왜 사소한 지적이 많은가? 리뷰의 목적부터 다시 생각하자 2
1.2 시간을 낭비하고 중요한 문제를 놓치는 네 가지 안티패턴 12
인간관계 끌어들이기 13
작성자 마인드 15
두 마리 토끼 잡기 16
적절치 못한 시간 분배 18
1.3 계획과 중재가 없는 어수선한 리뷰회의 20
계획성 없는 끝나지 않는 리뷰(준비 단계) 21
다툼, 주제 이탈의 방치(진행 단계) 23
갑작스러운 종료 선언(완료 단계) 26
1.4 보여주기식 경쟁으로 쓸데없는 지적을 하고 있지 않은가? 29
보여주기식 경쟁 30
헐뜯기 31
의도적인 묵인 33

2장 본격적인 리뷰 준비와 문제 검출 39
2.1 리더와 문서 작성자의 리뷰 준비: 시나리오 작성 40
리더의 준비 44
문서 작성자의 준비 51
2.2 리뷰어의 리뷰 준비: 시나리오 순서 정하기 55
2.3 리뷰의 효과를 높이는 문제 검출법 65

3장 설계 리뷰의 중심, 리뷰회의 73
3.1 순조로운 리뷰회의를 위한 준비 74
리더의 리뷰회의(전반) 75
리뷰어의 리뷰회의(전반) 83
문서 작성자의 리뷰회의(전반) 88
3.2 제 시간에 문제를 검출하는 똑똑한 리뷰회의 진행방법 89
리더의 리뷰회의(후반) 90
리뷰어의 리뷰회의(후반) 98
문서 작성자의 리뷰회의(후반) 102
3.3 유종의 미, 문제의 수정과 확인 105
문서의 수정과 확인 106
문제의 재발 방지 110
3.4 만능은 없다. 세 가지 리뷰기법을 상황에 따라 적용하자 115
워크스루: 문서 작성자가 주도하는 가벼운 회의 117
인스펙션: 규칙에 따라 엄격하게 체크 119
테크니컬 리뷰: 테크니컬 리더의 주도적인 체크 121

4장 리뷰 효과 끌어올리기 125
4.1 리뷰를 개선하는 프로젝트 다시보기 126
4.2 개발 방법에 따른 리뷰 적용하기 132
유지보수 개발 134
반복 개발 139
애자일 개발 139
패키지ㆍ클라우드 개발 140
대규모 개발 142

부록. 리뷰 관점의 축소 효과 145
A.1 리뷰 관점을 축소함으로써 수정 공수가 줄어드는 효과 146
검증① 정성적으로 리뷰 관점 줄이기 - 중요한 문제의 검출 건수가 1.4배로 150
검증② 정량적으로 리뷰 관점 줄이기 - 2.3배의 수정 공수 저감 효과 153

 

 

 

목차

01. 이야기의 시작 
00-01 도둑이 침입할 확률은? 16 
00-02 맞는 열쇠 짝을 찾을 확률 20 
개점 기념 세일, 
사기인가? 우연인가? 
01-01 사립 탐정소라는 직장 26 
01-02 상점가 회장의 의뢰 29 
01-03 ‘사건’의 개요 31 
01-04 주사위는 ‘기억’하지 않는다? 35 
01-05 해석 선배의 강의 37 
01-06 시뮬레이션과 히스토그램 41 
01-07 히스토그램과 확률 47 
01-08 RStudio 다뤄보기 51 
01-09 RStudio로 합계 구하는 방법 55 
01-10 주사위 시뮬레이션 58 
01-11 RStudio로 히스토그램 작성 64 
01-12 평균값, 기댓값 67 
분석 사장의 통계학 강의 73 
이 장에서 사용한 R코드 정리 75 

02. 흰수염 선생의 방해로부터 2대째 이어온 빵집 구하기! 
02-01 RStudio 기초 연습 82 
02-02 몇 대째 이어온 빵 가게의 고민 85 
02-03 흰수염 선생을 방문하다 88 
02-04 데이터로 설득하기 91 
02-05 먼저는 데이터 입력부터 93 
02-06 표준편차의 의미 96 
02-07 모집단과 표본 99 
02-08 정규분포 101 
02-09 평균값의 차이 검증하기 104 
02-10 RStudio로 평균값 차이 검정하기 106 
분석 사장의 통계학 강의 113 
이 장에서 사용한 R코드 정리 116 

03. 상점가 활성화를 위한 설문 조사, 어떻게 해야 하나? 
03-01 헬로키티 vs. 엘사 122 
03-02 설문지 123 
03-03 설문지 데이터 입력 127 
03-04 데이터를 분할표로 만들기 130 
03-05 독립성 검정 135 
03-06 독립성 검정의 의미 138 
03-07 이건 뭐지? 144 
분석 사장의 통계학 강의 148 
이 장에서 사용한 R코드 정리 150 

04. 선술집의 인기 메뉴, 매상 감소의 원인은? 
04-01 상점가 회장님의 선술집 156 
04-02 선술집의 매상 158 
04-03 유사 상관!? 164 
04-04 삼각김밥과 우유의 연관성 167 
04-05 상관과 상관계수 171 
04-06 아이스크림 판매량 예측하기 178 
분석 사장의 통계학 강의 192 
이 장에서 사용한 R코드 정리 194 

05. 악성 인터넷 후기 유포자를 찾아라! 
05-01 고객 불만에 대처하기 204 
05-02 텍스트 마이닝 208 
05-03 문장의 습관 217 
05-04 범인을 찾아라 224 
05-05 댓글 정보 229 
분석 사장의 통계학 강의 245 
이 장에서 사용한 R코드 정리 248 

06. 잡화점 도둑의 행동을 예측하라! 
06-01 첫 휴일 출근 256 
06-02 잡화점의 철수 씨 257 
06-03 피해 정도를 그래프로 표시 259 
06-04 시계열 분석 264 
06-05 로지스틱 회귀분석 269 
06-06 승산비 273 
06-07 RStudio로 로지스틱 회귀분석 276 
분석 사장의 통계학 강의 286 
이 장에서 사용한 R코드 정리 287 

부록 A. RStudio를 이용한 데이터 분석 환경 만들기 
A-01 이 책에서 사용하는 데이터 다운로드 292 
A-02 R과 RStudio 설치 292 
A-03 RStudio 실행 293 
A-04 프로젝트 생성 294 
A- 05 R 스크립트 실행 296 
A-06 패키지 설치 298 
A-07 패키지 호출 299 
A-08 MeCab 설치 301 
A-09 막히는 경우 대처 방법 305 

부록 B. 참고 사이트 
B-01 서적 308 
B-02 웹 사이트 311 

부록 C. 한국어 형태소 분석

 

 

 

목차

프롤로그 
해커 문화의 선구자 - 리처드 스톨만 
[전설의 기술 속으로] GNU 프로젝트 
악동 해커에서 보안 저널리스트로 - 케빈 폴슨 
[전설의 기술 속으로] 프리킹 
[전설의 기술 속으로] 락스미스(Locksmith) 
프리킹의 아버지 - 존 드래퍼 
'모리스 웜'의 창시자 - 로버트 T. 모리스 
[전설의 기술 속으로] WORM 
세기의 해킹 대결을 벌인 해커 - 케빈 미트닉 
[전설의 기술 속으로] TCP 세션 하이재킹 
해커계의 아이콘 - 마크 애버니 
[전설의 기술 속으로] 백도어 
[전설의 기술 속으로] MOD 
미국의 화이트 해커 양성가 - 피터 삿코 
[전설의 기술 속으로] 패킷 스니핑 
비운의 해커 - 애런 스워츠 
[전설의 기술 속으로] RSS 
정의로운 내부 고발자 - 에드워드 스노든 
[전설의 기술 속으로] 프리즘 
정보의 자유를 원하는 핵티비스트 - 어나니머스 
[전설의 기술 속으로] DDoS 
해킹 중독자 - 게리 맥키논 
[전설의 기술 속으로] 원격 접속 프로그램 Remotely Anywhere 
아이폰을 해킹한 최초의 해커 - 조지 호츠 
[전설의 기술 속으로] 아이폰 탈옥을 위한 소프트웨어 Jailbreaking 
전쟁 시뮬레이션을 해킹한 해커 듀오 - 매튜 베번과 리처드 프라이스 
기업의 보안 허점을 경고한 해커 - 아드리안 라모 
누명을 쓴 해커 - 조너선 제임스 
해킹으로 부자가 되었던 해커 - 앨버트 곤살레스 
[전설의 기술 속으로] SQL 인젝션 
에필로그

 

+ Recent posts