-
반응형
소프트웨어 개발을 처음 시작하는 사람들은 요구사항에 대한 정교한 설계 보다는 어떤 기술을 사용해서 어떻게 구현할 것인지에 대해 고민을 하게 되는데 운용을 포함한 입체적인 관점보다는 구현 자체에만 의미를 두는 경우가 많다. 여기서 정교한 설계는 어떤 시스템과 통합될 것인지 그리고 사용하게될 사용자수는 어떻게 되는지, 안정성을 위해 테스트 시나리오는 무엇일지 그리고 마지막으로 이 모든것을 포함하여 구현해야할 기능들에 대해 일정내 가능할지등 고민하는 것을 말한다.
문제는 실제 제품이나 서비스 운용 경험이 있어야 설계에 여러가지 고려사항들을 포함시킬 수 있다는 점이다. thread safe하지 않는 API를 사용해서 간헐적으로 프로세스가 죽는다던가 또는 책에서도 나오는 예시로 try-catch-finally에서 finally 구문에 close에서 다시 예외가 raise 될 수 있는 것을 고려하지 못해 socket 파일을 닫지 못하는 상황이 발생할 수 있다.
"Release의 모든 것", 이 책은 제품 및 서비스(대부분 서비스 이야기이지만...) Release 이후의 일어날 수 있는 문제점 요소들에 대해 나열하고 서사 방식의 예시를 통해 몰입을 더한다. 책 표지만 봐서는 Release를 어떻게 해야하는지에 대한 좀 따분한 느낌이 들긴 했지만 말이다.
저자 마이클 나이가드는 미국 정보, 은행, 금융, 농업, 상거래등 시스템을 설계 구축하고 운용한 사람으로써, 이미 2007년에 1판 "Release it ! 성공적인 출시를 위한 소프트웨어 설계와 배치" 책을 다시 가다듬어서 2판으로 낸 것이다.
2장 사례연구 내용 중, 흥미 진진한 현장의 느낌...
5장 안정성 패턴 중 ...안정성 패턴 또는 안티패턴으로 시작하여 프로세스, 상호 연결 그리고 OWASP 보안까지 넓은 분야의 주제들을 읽고 정리할 수 있게 도와준다. 서비스 운용에 꼭 필요한 그리고 문제가 발생했을 때 기민하게 대응을 도와줄 레퍼런스가 되어줄 것이다.
[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.2 연쇄 반응
_4.3 연계 장애
_4.4 사용자
_4.5 블록된 스레드
_4.6 자기 부정 공격
_4.7 척도 효과
_4.8 처리 능력 불균형
_4.9 도그파일
_4.10 지렛대 원리
_4.11 응답 지연
_4.12 제한 없는 결과
5장 안정성 패턴
_5.1 시간 제한
_5.2 회로 차단기
_5.3 격벽
_5.4 정상 상태
_5.5 빠른 실패
_5.6 파손 방치
_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.2 물리 호스트, 가상 머신, 컨테이너
8장 프로세스
_8.1 코드
_8.2 구성
_8.3 투명성
9장 상호 연결
_9.1 규모에 맞는 해법
_9.2 DNS
_9.3 부하 분산
_9.4 수요 제어
10장 제어 평면
_10.1 적합도 평가
_10.2 기계적 확대율
_10.3 플랫폼과 생태계
_10.4 운영 수준 개발 환경
_10.5 시스템 전반의 투명성
_10.6 구성 서비스
_10.7 프로비저닝과 배치 서비스
_10.8 명령과 제어
_10.9 플랫폼 제품
_10.10 점검 목록
11장 보안
_11.1 OWASP 상위 10개
_11.2 최소 권한의 원칙
_11.3 비밀번호 관리
_11.4 상시 업무 절차로서의 보안
[3부 시스템 전달]
12장 사례 연구: 고도를 기다리며
13장 배치 고려 설계
_13.1 반려 동물과 가축
_13.2 시스템 점검 시간이라는 오류
_13.3 자동 배치
_13.4 지속적 배치
_13.5 배치의 여러 단계
_13.6 전문가의 배치
14장 버전 관리
_14.1 다른 서비스를 고려한 버전 관리
_14.2 다른 서비스의 버전 관리
_마치며
[4부 체계적 문제 해결]
15장 사례 연구: 고객에게 짓밟히다
_15.1 최종 점검과 출시
_15.2 QA 지향
_15.3 부하 테스트
_15.4 대중에 의한 살인
_15.5 테스트 간극
_15.6 후유증
16장 적응
_16.1 볼록 곡선 수익률
_16.2 절차와 조직
_16.3 시스템 아키텍처
_16.4 정보 아키텍처
17장 카오스 공학
_17.1 개선을 위한 파괴
_17.2 카오스 공학의 선구자
_17.3 유인원 부대
_17.4 나만의 원숭이 입양
_17.5 재해 시뮬레이션시니어 개발자라는 이야기를 하게 되면 꼭 대용량 트래픽이 빠지지 않는다. 그만큼 난이도가 있고 시스템적으로 난이도가 있고 컴퓨팅자원뿐 아니라 인정 자원등 고려할 사항이 많기 때문인데 이 책은 그에 대한 힌트 또한 얻을 수 있다. 물론 대용량 트래픽이 아니더라도 복잡한 시스템에 대해 어떻게 운용 관점에서 밤을 새지 않고 새벽에 끌려가지 않게끔 건강한 개발자 그리고 건강한 시스템을 만들어가게 되는 비법을 제공한다. 이 책의 큰 장점이다.
물론 단점 또한 존재하는데 많은 주제를 이야기하다보니 최소 CS(Computer Science) 지식과 서비스 개발 및 출시 경험이 조금이라도 있어야 몰입할 수 있다는 점이다. TCP/IP가 무엇인지 3 hand shaking 과정은 어떻게 되고 TIME_WAIT을 줄일 수 있는 설정은 어떻게 하는지등 자세한 내용은 서술하지 않는다. 당장 구현해야할 기능들을 해결하기 급급하다면 책의 절반 이상은 공감하기 힘들고 다른 세상 이야기로만 느껴질 수 있다. 그럼에도 불구하고 옆에 두고 패턴 부분이나 실제 사례 내용들을 차근차근 읽어보면 1~2년 뒤 개인의 성장과 담당 서비스가 성숙하는데 충분히 도움이 될 것이라 생각한다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
반응형