책 소개
*이 도서는 『Release It 릴리스 잇』(위키북스, 2007)의 2판입니다
아마존 소프트웨어 공학 분야 베스트셀러! 아키텍트, 설계자, 개발자를 위한 소프트웨어 엔지니어링 필독서
"이 책은 소프트웨어 출시 전, 필수 체크리스트 같은 책이다"
"이걸 왜 해야 할까? 귀찮게 여겼던 일들에 답을 주는 책이다"
35년 경력 전문가의 경험이 담긴 소프트웨어 엔지니어링 베스트셀러로, 소프트웨어를 문제 없이 빠르
게 출시할 수 있는 설계 방법에 초점을 맞춘 책입니다. 특히 사례 연구를 기반으로 최신 데브옵스 관행,
마이크로서비스, 클라우드 아키텍처를 포함한 대규모 웹 분산 시스템의 설계/구축/운영 방법을 자세히
설명합니다. 또한 매출, 시간, 평판의 손실을 최소화하는 실용적이고 현실적인 노하우까지 제공합니다.
출시 때마다 걱정에 휩싸여 있나요? 바로 이 책이 실패 없는 출시로 가는 길을 안내해줄 것입니다.
<< 주요 내용 >>
- 운영 환경에서의 안정성 패턴과 안티 패턴
- 운영 고려 설계와 배치 고려 설계
- 시스템 아키텍처(진화적 아키텍처)와 정보 아키텍처
자신 있는 출시를 위한 소프트웨어 설계 방법과 운영 노하우
이 책은 ‘운영 고려 설계’에 초점을 맞춰 문제 없이 잘 작동하는 프로그램을 만드는 방법을 설명합니다. 운영 상황에서 마주할 수 있는 문제들을 고려한 설계 방법을 자세히 알려줄 뿐만 아니라 경험해보지 않으면 알 수 없는 현장의 노하우와 전략도 제공합니다.
또한 여러분이 정성스럽게 만든 프로그램이 얼마나 위태로운 환경에서 운영되는지 깨달을 수 있도록 여러 가지 현실적인 예를 들어 알기 쉽게 설명합니다.
추가로 최신 클라우드 환경과 시스템 아키텍처, 카오스 공학까지 다루고 있어 실무자와 관리자 모두의 현장 능력을 한 단계 끌어올려줄 것입니다.
현장에서 자주, 그리고 오래도록 참고할 수 있는 엔지니어링 필독서를 찾고 있다면 반드시 읽어보세요!
예제 소스
https://pragprog.com/titles/mnee2/release-it-second-edition/
작가 소개
지은이 : 마이클 나이가드
전문 프로그래머이자 건축가로, 미국 정부와 은행, 금융, 농업, 소매 업계를 위한 시스템을 설계, 구축, 엔지니어링했다. 토탈리티 코퍼레이션의 엔지니어링 디렉터로 일하면서 여러 흥미로운 프로젝트를 수행하고 운영 팀을 이끌었다. 이 경험을 통해 높은 안정성을 갖춘 소프트웨어를 구축하는 것에 관한 독특한 관점을 갖게 됐다. 이 외에도 수많은 기사와 사설을 작성하고, 기술 콘퍼런스에서 인기 있는 연사로 활동 중이다.
옮긴이 : 박성철
40년 전 우연히 빠진 컴퓨터를 중심으로 삶을 엮어내고 있다. 용인의 한적한 산기슭에서 아내 그리고 아들과 함께 행복한 가정을 꾸리고 살고 있다. 컴퓨터를 적절하게 사용해서 현실의 문제를 해결하고 한계를 극복하는 일을 좋아한다. 지금은 컬리에서 멋진 개발자들과 세상을 더 낫게 만드는 즐거운 퀘스트를 수행 중이다. 소프트웨어 개발을 탐구하면서 그에 대한 인식을 바꾸고 개발 현장을 개선하는 데 관심이 많다.
목 차
[1부 안정성 구축]
1장 운영 환경의 현실
_1.1 올바른 목표 설정
_1.2 도전의 범위
_1.3 여기도 백만 달러, 저기도 백만 달러
_1.4 ‘포스’를 사용하라
_1.5 실용주의 아키텍처
_마치며
2장 사례 연구: 항공사를 멈추게 한 예외
_2.1 변경 시간대
_2.2 작동 중단
_2.3 장애의 영향
_2.4 사후 분석
_2.5 단서 수색
_2.6 결정적 단서
_2.7 외양간 고치기?
3장 시스템 안정화
_3.1 안정성 정의
_3.2 수명 연장
_3.3 장애 모드
_3.4 균열 확산 차단
_3.5 장애 사슬
_마치며
4장 안정성 안티 패턴
_4.1 통합 지점
__4.1.1 소켓 기반 프로토콜
__4.1.2 오전 5시 문제
__4.1.3 HTTP 프로토콜
__4.1.4 업체 제공 API 라이브러리
__4.1.5 통합 지점 문제 대응책
__요점 정리
_4.2 연쇄 반응
__요점 정리
_4.3 연계 장애
__요점 정리
_4.4 사용자
__4.4.1 트래픽
___힙 메모리
___힙 외부 메모리, 호스트 외부 메모리
___소켓
___닫힌 소켓
__4.4.2 지나친 서비스 비용
__4.4.3 불쾌한 사용자
__4.4.4 해로운 사용자
__요점 정리
_4.5 블록된 스레드
__4.5.1 블록 지점 파악
__4.5.2 라이브러리
__요점 정리
_4.6 자기 부정 공격
__4.6.1 자기 부정 회피
__요점 정리
_4.7 척도 효과
__4.7.1 지점 간 통신
__4.7.2 공유 자원
__요점 정리
_4.8 처리 능력 불균형
__4.8.1 처리 능력 테스트
__요점 정리
_4.9 도그파일
__요점 정리
_4.10 지렛대 원리
__4.10.1 전면 장애 증폭
__4.10.2 제어와 안전 장치
__요점 정리
_4.11 응답 지연
__요점 정리
_4.12 제한 없는 결과
__4.12.1 검은 월요일
__요점 정리
_마치며
5장 안정성 패턴
_5.1 시간 제한
__요점 정리
_5.2 회로 차단기
__요점 정리
_5.3 격벽
__요점 정리
_5.4 정상 상태
__5.4.1 데이터 정리
__5.4.2 로그 파일
__5.4.3 메모리 전용 캐시
__요점 정리
_5.5 빠른 실패
__요점 정리
_5.6 파손 방치
__5.6.1 크기 제한
__5.6.2 교체 속도
__5.6.3 감독
__5.6.4 재통합
__요점 정리
_5.7 핸드셰이킹
__요점 정리
_5.8 테스트 하네스
__요점 정리
_5.9 결합 분리 미들웨어
__요점 정리
_5.10 부하 제한
__요점 정리
_5.11 배압 생성
__요점 정리
_5.12 조속기
__요점 정리
_마치며
[2부 운영 고려 설계]
6장 사례 연구: 램프 속 우주의 힘
_6.1 첫 번째 크리스마스
_6.2 맥박 확인
_6.3 추수감사절
_6.4 블랙 프라이데이
_6.5 생명 징후
_6.6 진단 테스트
_6.7 전문가 호출
_6.8 처치 방안 비교
_6.9 처치 결과
_6.10 휴식 시간
7장 기반
_7.1 데이터 센터와 클라우드의 네트워크
__7.1.1 네트워크 인터페이스와 이름
__7.1.2 다중 네트워크 프로그래밍
_7.2 물리 호스트, 가상 머신, 컨테이너
__7.2.1 물리 호스트
__7.2.2 데이터 센터의 가상 머신
__7.2.3 데이터 센터의 컨테이너
__7.2.4 클라우드 내 가상 머신
__7.2.5 클라우드 내 컨테이너
_마치며
8장 프로세스
_8.1 코드
__8.1.1 코드 빌드
__8.1.2 불변 폐기 가능 인프라
_8.2 구성
__8.2.1 구성 파일
__8.2.2 폐기 가능 인프라의 구성
_8.3 투명성
__8.3.1 투명성을 위한 설계
__8.3.2 투명성 기술
__8.3.3 로그 기록
___로그 위치
___로그 수준
___인간적 요인
___주술적 운영
___로그에 관한 최종 메모
__8.3.4 인스턴스 측정값
__8.3.5 상태 점검
_마치며
9장 상호 연결
_9.1 규모에 맞는 해법
_9.2 DNS
__9.2.1 DNS를 사용한 서비스 발견
__9.2.2 DNS를 사용한 부하 분산
__9.2.3 DNS를 사용한 글로벌 서버 부하 분산
__9.2.4 DNS의 가용성
__요점 정리
_9.3 부하 분산
__9.3.1 소프트웨어 부하 분산
__9.3.2 하드웨어 부하 분산
__9.3.3 상태 점검
__9.3.4 고정 연결
__9.3.5 요청 유형별 분할
__요점 정리
_9.4 수요 제어
__9.4.1 시스템에 장애가 나는 이유
__9.4.2 장애 예방
__요점 정리
_9.5 네트워크 경로
_9.6 서비스 발견
_9.7 표류성 가상 IP 주소
_마치며
10장 제어 평면
_10.1 적합도 평가
_10.2 기계적 확대율
__10.2.1 사람의 실수가 아닌 시스템 장애
__10.2.2 자동화 진행 속도
_10.3 플랫폼과 생태계
_10.4 운영 수준 개발 환경
_10.5 시스템 전반의 투명성
__10.5.1 실사용자 모니터링
__10.5.2 경제적 가치
__10.5.3 파편화의 위험
__10.5.4 로그와 통계
__10.5.5 수집 대상 측정값 선정
_10.6 구성 서비스
_10.7 프로비저닝과 배치 서비스
_10.8 명령과 제어
__10.8.1 제어 항목
__10.8.2 명령 전달 방법
__10.8.3 스크립트 기능 인터페이스
__요점 정리
_10.9 플랫폼 제품
_10.10 점검 목록
_마치며
11장 보안
_11.1 OWASP 상위 10개
__11.1.1 삽입
__11.1.2 취약한 인증과 세션 관리
__11.1.3 사이트 간 스크립팅
__11.1.4 취약한 접근 제어
___조사 가치 경감
___허가된 접근
__11.1.5 보안 구성 오류
__11.1.6 민감 데이터 노출
__11.1.7 부실한 공격 방어
__11.1.8 사이트 간 요청 위조
__11.1.9 취약점이 밝혀진 구성 요소 사용
__11.1.10 보호되는 않는 API
_11.2 최소 권한의 원칙
__11.2.1 컨테이너와 최소 권한
_11.3 비밀번호 관리
_11.4 상시 업무 절차로서의 보안
_마치며
[3부 시스템 전달]
12장 사례 연구: 고도를 기다리며
13장 배치 고려 설계
_13.1 반려 동물과 가축
_13.2 시스템 점검 시간이라는 오류
_13.3 자동 배치
_13.4 지속적 배치
_13.5 배치의 여러 단계
__13.5.1 관계형 데이터베이스 스키마
__13.5.2 스키마 없는 데이터베이스
__13.5.3 웹 자산 파일
__13.5.4 적용
__13.5.5 정리
_13.6 전문가의 배치
_마치며
14장 버전 관리
_14.1 다른 서비스를 고려한 버전 관리
__14.1.1 호환되는 API 변경
__14.1.2 호환성을 깨는 API 변경
_14.2 다른 서비스의 버전 관리
_마치며
[4부 체계적 문제 해결]
15장 사례 연구: 고객에게 짓밟히다
_15.1 최종 점검과 출시
_15.2 QA 지향
_15.3 부하 테스트
_15.4 대중에 의한 살인
_15.5 테스트 간극
_15.6 후유증
16장 적응
_16.1 볼록 곡선 수익률
_16.2 절차와 조직
__16.2.1 플랫폼 팀
__16.2.2 고통 없는 출시
__16.2.3 서비스 멸종
__16.2.4 팀 규모 자율성
__16.2.5 효율성 주의
_16.3 시스템 아키텍처
__16.3.1 진화적 아키텍처
__16.3.2 느슨한 클러스터
__16.3.3 명시적 맥락
__16.3.4 선택 가능성
___분할
___대체
___강화와 배제
___역전
___이식
__요점 정리
_16.4 정보 아키텍처
__16.4.1 메시지, 이벤트, 명령
__16.4.2 자체 ID 제어 서비스
__16.4.3 URL 이원론
__16.4.4 복수성 수용
__16.4.5 개념 누수 방지
__요점 정리
_마치며
17장 카오스 공학
_17.1 개선을 위한 파괴
_17.2 카오스 공학의 선구자
_17.3 유인원 부대
__17.3.1 선택적 참여? 선택적 탈퇴?
_17.4 나만의 원숭이 입양
__17.4.1 사전 조건
__17.4.2 실험 설계
__17.4.3 혼돈 주입
__17.4.4 카오스 대상 선정
__17.4.5 자동화와 반복
_17.5 재해 시뮬레이션
_마치며
역자 소개
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |