SlideShare ist ein Scribd-Unternehmen logo
1 von 144
Downloaden Sie, um offline zu lesen
황희선 황선희
Fault Tolerant System
설계를 위한 패턴
Google App Engine + Android Push Service
1. 결함 허용 시스템
에 대한 소개
2. 결함 허용 시스템
패턴 이용해
설계해보기
황희선
황선희
Google App Engine + Android Push Service
결함 허용 시스템의
정의
Google App Engine + Android Push Service
결함 허용 시스템?
결함
“내 결함성 시스템”
“고 신뢰성 시스템”
다운이 허용될 수 없는 시스템(은행이나 e-Commerce)
실시간 프로세스 제어시스템 (좌석예약시스템 )
결함이 인명 손실에 영향을 주는 시스템(자동차, 병원)
연 중 보수작업이 불가능한 시스템(우주 항해 시스템)
결함이 막대한 경제적 손실을 야기하는 시스템
(원전 시스템)
Google App Engine + Android Push Service
결함을 가진 시스템이
중단 없이
서비스를 제공하기 위해서
활용할 수 있는
4가지 기능이 있습니다.
Google App Engine + Android Push Service
결함치료기능
오류복구기능
오류완화기능
오류감지기능
Google App Engine + Android Push Service
Google App Engine + Android Push Service
데이터방송 TV
방송정보 노래방
애플리케이션
Google App Engine + Android Push Service
스레드 관리 모듈에
결함이 있는
데이터 방송 TV가
있다고 생각해 봅시다
Google App Engine + Android Push Service
사용자가
채널을 돌리는 경우
Google App Engine + Android Push Service
이전 채널의 애플리케이션 종료
새로운 채널의
애플리케이션 실행
TV 애플리케이션 관리 모듈은
Google App Engine + Android Push Service
스레드 관리 모듈
스레드
결함이 없는 스레드 모듈은
애플리케이션 종료 시
스레드
스레드
Google App Engine + Android Push Service
결함을 가진
스레드 관리 모듈
스레드
애플리케이션 종료 시
스레드
스레드
결함을 가진 스레드 관리 모듈
좀비스레드
좀비스
레드
Google App Engine + Android Push Service
애플리케이션의 실행과 종료가
반복되면
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
Google App Engine + Android Push Service
새로운 애플리케이션 실행 시
좀비스레드로 인해
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
실행이 느려지는 장애가 발생
Google App Engine + Android Push Service
이 문제를 해결하기 위해
스레드 관리 모듈
좀비 스
레드
검사하는 기능 추가하였습니다.
주기적
검사기능스레드관리 모듈에
주기적으로 좀비스레드를
Google App Engine + Android Push Service
오류 감지 기능
Google App Engine + Android Push Service
스레드 관리 모듈
주기적
검사기능
스레드
종료 기능
좀비 스
레드
좀비 스
레드
좀비 스
레드
오류 완화를 위한 예제여전히 애플리케이션
실행과 종료 사이에서
좀비스레드가 쌓이지만
주기적으로 좀비스레드를
강제 종료 시켜주기 때문에
성능저하 장애는
방지할 수 있습니다.
Google App Engine + Android Push Service
오류 완화 기능
Google App Engine + Android Push Service
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
좀비 스
레드
오류 복구 기능 예제
좀비스레드로 인해
메모리 누수 오류가 발생하여
화면이 표시되지 않는
장애가 발생할 경우가 있습니다.
새로운 애플리케이션이 실행 시
Google App Engine + Android Push Service
메모리 누수를 해결하기 위해
애플리케이션
관리 모듈
메모리
해제 기능
좀비
스레드
스레드
스레드
결과
애플리케이션 화면이
표시되지 않는 장애를
방지합니다.
Google App Engine + Android Push Service
오류 복구 기능
Google App Engine + Android Push Service
오류 감지, 복구, 완화 기능은
결함 자체를 제거하지 못합니다
따라서 결함을 가진 모듈이 실행되면
오류가 여전히 발생 합니다
소프트웨어 업데이트 모듈을 두어
결함자체를 치료할 수 있습니다
Google App Engine + Android Push Service
결함 치료 기능
Google App Engine + Android Push Service
오류 감지 기능
오류 복구 기능
오류 완화 기능
결함 치료 기능
Google App Engine + Android Push Service
결함, 오류, 장애에 대한
용어 정리
Google App Engine + Android Push Service
결함
(Fault)
오류
(Error)
장애
(Failure)
시스템이나 소프트웨어
- 부정확한 요구사항 명세서
- 잘못된 설계
- 코딩 오류
이 결함을 가진 부분이 실행되면 오류를
발생시킬 수 있습니다
오류가 여러 번 반복되고
이런 오류가 서비스 실행에 관련이 있으면
시스템이
시스템 명세서대로 동작하지 않는 장애를 발생
> >
Google App Engine + Android Push Service
시스템의
결함 허용 정도를
측정하는 기준
Google App Engine + Android Push Service
안정성 (Reliability)
특정 기간 동안 장애가 없는 정도를 의미
MTTF : Mean Time To Failure
시간
장애 수리
(복구나 완화)
장애
MTTF
안정성(=e-(1/MTTF) ) ∝ MTTF
안정성 요구사항 예제
시카고에서 로스앤젤레스로 가는 비행기 경우
MTTF가 5보다 커야 한다 비행 거리가 5이고 이 시
간에는 장애가 발생하면 안되기때문이다
Google App Engine + Android Push Service
가용성 (Availability)
시스템이 기능 수행할 수 있는 기간이 전체 가동 기
간의 몇 퍼센트인지 나타냄
MTTR : Mean Time To Repair, MTTF
시간
장애 수리(복구나 완화) 장애 수리(복구나 완화)
MTTR MTTRMTTF
가용성 (=MTTF / (MTTF+MTTR))
가용성 ∝ (1 / MTTR), 가용성 ∝ MTTF
가용성 요구사항 예제
4ESS™ 스위치는 40년간 고장시간은 2시간만 허용한다
즉 가용할 수 없는 시간이 연간 3분이어야 한다
Google App Engine + Android Push Service
범위(Coverage)
 P(성공적으로 자동 복구됨|오류 발생)
 계산 공식
= P(성공적인 오류 감지) X P(성공적인
오류 복구)
 안정성과 가용성이 높은 시스템은
95% 이상의 커버리지 지향
Google App Engine + Android Push Service
내결함 처리를 위한 Core Patterns
결함 허용 시스템을 위한 Pattern
Architectural Patterns
오류 감지
Patterns
오류 복구
Patterns
오류 완화
Patterns
결함 치료
Patterns
시스템 설계 초기, 아키텍쳐 설계 시
결함 허용 기능을 위해 고려해야 할 사항이나 설계지침
Google App Engine + Android Push Service
예제
황선희
Google App Engine + Android Push Service
접속한 사용자들의 상태를
실시간으로 알려주는
간단한 서버를 하나 만들어 봅시다.
Google App Engine + Android Push Service
Presence serverPresence Server
부재) 응답하라2013 서버
Google App Engine + Android Push Service
응답하라 2013 서버
업데
이트
저장
Google App Engine + Android Push Service
응답하라 2013 서버
Google App Engine + Android Push Service
응답하라 2013 서버
Google App Engine + Android Push Service
응답하라 2013 서버
Google App Engine + Android Push Service
결함 허용 시스템을
설계해보기!
Google App Engine + Android Push Service
간단한 서버로 보이지만
고려해야 할
여러 단계가 있어요.
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴
Google App Engine + Android Push Service
초기 설계단계에서
고려해야 할 패턴들
Google App Engine + Android Push Service
아키텍트는
원래 필요한 패턴들을
미리 알고
해당 시스템에 필요한
패턴들만 선택해서 목록을 만
들어야 합니다.
Google App Engine + Android Push Service
아직 패턴에 익숙지 않으시니
응답하라2013 서버에 필요한
패턴 목록 즉 패턴 랭귀지와
패턴을 보여드리고
쓰임새를 설명할게요.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
완화 단위
만들기
units of
mitigation
아키텍쳐
Google App Engine + Android Push Service
완화 단위 만들기
(UNIT OF MITIGATION)
결함 허용 시스템의 기본단위
오류를 복구할 수 있는 메커니즘 포함
기능 수행 자가체크
& 정상수행 안 할 경우 멈추거나 복구
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버
완화 단위 만들기
(UNIT OF MITIGATION)
정보를 받는 부분
처리하는 부분
보내는 부분으로 나누어
각각의 단위에
셀프 체킹 기능과
자동으로 복구하는 메커니즘을 넣는다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
검사하고
수정하기
Correcting
Audits
완화 단위
만들기
units of
mitigation
Google App Engine + Android Push Service
검사하고 수정하기
(CORRECTING AUDITS )
하드웨어 or 소프트웨어 에러 발생시 자
동 수정
데이터 구조의 특성
(링크드리스트, 바운더리)
위생 상태 체크(체크섬)
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버예를 들면
정보를 받는 부분에서
받은 정보가 정확한 정보인지를
체크섬으로 확인하고
틀리면
자동으로 수정하거나 리셋한다.
검사하고 수정하기
(CORRECTING AUDITS )
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
중복된 컴포넌
트 및 기능
만들기
Redundancy
검사하고
수정하기
Correcting
Audits
Google App Engine + Android Push Service
중복된 컴포넌트 및 기능 만들기
(Redundancy)
중복된 컴포넌트나 기능을 제공하여
에러 처리를 병렬적으로 할 수 있게 함.
시스템 이용성이 증가
Google App Engine + Android Push Service
응답하라 2013 서버이 시스템은 프로세서가
더 추가 된다는 요구사항을 가지고
있다.
프로세서가 더 추가되면
시스템을 이용할 수 있는
가용성(Availability)이 증가 된다.
중복된 컴포넌트 및 기능 만들기
(Redundancy)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
사람들의 간섭
을 최소화하기
Minimize
human
intervention
중복된 컴포넌트
및 기능
만들기
Redundancy
Google App Engine + Android Push Service
사람들의 간섭을 최소화하기
(MINIMIZE HUMAN INTERVENTION )
사람의 개입은
시스템의 속도를 저하시키거나
잘못된 오류를 일으키기 쉬움
최대한 사람의 간섭을 배제시킴
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버예를 들면
오류를 복구하는 과정에서
가능한 한 사람의 Yes or No같은
응답을 요구하지 않게
자동 복구로 설계한다.
사람들의 간섭을 최소화하기
(MINIMIZE HUMAN INTERVENTION )
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
유지보수 인터
페이스 만들기
Maintenance
interface
사람들의 간섭을
최소화하기
Minimize human
intervention
Google App Engine + Android Push Service
유지보수 인터페이스 만들기
(MAINTENANCE INTERFACE)
경험 있고 실력 있는 전문가는
더 빠른 시간 내에
더 잘
해결할 수 있으니
시스템을 모니터링 하거나
복구할 수 있도록
인터페이스를 둔다.
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버유지보수 인터페이스를 만들어
전문가가
현재 처리되는 상황을
모니터링하거나
오류를 처리할 수 있도록 한다.
유지보수 인터페이스 만들기
(MAINTENANCE INTERFACE)
web 형식의 인터페이스
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
책임자
두기
Someone in
charge
유지보수 인터페
이스 만들기
Maintenance
interface
Google App Engine + Android Push Service
책임자 두기(SOMEONE IN CHARGE)
장애 발생시 시스템이 멈추지 않도록 에
러를 감시하고 처리하는
책임자 두기
Google App Engine + Android Push Service
응답하라 2013 서버전체 시스템을
모니터링 하는
시스템 모니터가 있어서
오류가 발생할 경우
처리를 요청한다
책임자 두기(SOMEONE IN CHARGE)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
단계적으로
확대하기
Escalation
책임자 두기
Someone
In charge
Google App Engine + Android Push Service
단계적으로 확대하기
(ESCALATION)
에러복구나 에러 완화에 실패하면
다음 단계의 더 강한 액션을 취함
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버서버가 멈췄을 경우
ACK가 오는지 확인하거나
그래도 오지 않을 경우
몇 차례 재시도를 하거나
그래도 안될 경우
재시작을 한다.
단계적으로 확대하기
(ESCALATION)
단계별로 좀 더 강한 액션을 취한다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
결함 감시자
두기
Fault observer
단계적으로
확대하기
escalation
Google App Engine + Android Push Service
결함 감시자 두기
(FAULT OBSERVER)
모든 오류를 감시자에 레포트하면
결함 감시자는 관심을 가진 수신자에게
에러를 보냄
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버예를 들어 결함감시자가
오류의 발생을
유지보수 인터페이스에
알려주면
관리자는 유지보수 인터페이스를
통하여 오류를 복구 할 수 있다.
결함 감시자 두기
(FAULT OBSERVER)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
소프트웨어
업데이트
Software
update
결함 감시자
두기
Fault observer
Google App Engine + Android Push Service
소프트웨어 업데이트
(SOFTWARE UPDATE)
소프트웨어 업데이트를 통해
지속적으로
결함을 제거하거나
기능을 향상시킴
초기 단계 설계 패턴
Google App Engine + Android Push Service
응답하라 2013 서버소프트웨어 업데이트 기능은
기능을 중간에 추가할 경우
고려사항이 많아지기 때문에
초기 설계단계에서
기능을 추가하여야 한다
소프트웨어 업데이트
(SOFTWARE UPDATE)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
소프트웨어
업데이트
Software update
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
Google App Engine + Android Push Service
오류 감지 패턴
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
시스템 모니터
System monitor
오류 감지
Google App Engine + Android Push Service
시스템 모니터(SYSTEM MONITOR)
시스템이 제대로 수행되는지 확인
관찰하던 컴포넌트가 멈출 경우
결함 감시자에게 레포트하고
올바른 초기화를 수행함
Google App Engine + Android Push Service
응답하라 2013 서버시스템 상에서만 확인할 수 있는
오류를
감지하는 역할을 한다.
시스템 모니터(SYSTEM MONITOR)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
심장박동
Heartbeat
시스템 모니터
System monitor
Google App Engine + Android Push Service
심장박동(HEARTBEAT)
이 방법을 통해 시스템 모니터는
관찰 하는 컴포넌트가
잘 수행 되고 있다는 것을 알 수 있음
관찰 되는 컴포넌트로부터
주기적으로 반응이 전달됨
오류 감지 패턴
Google App Engine + Android Push Service
응답하라 2013 서버일정한 시간 간격에
맞춰서
시스템의 상태를
시스템의 나머지 부분들에 보낸다.
심장박동(HEARTBEAT)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
받았다고
알리기
acknowledgeme
nt
심장박동
Heartbeat
Google App Engine + Android Push Service
받았다고 알리기
(ACKNOWLEDGEMENT)
두 개의 태스크 사이에서
상대방이 살아있고
제대로 기능한다는 것을
알리는 방법
일정한 시간이 지난 후
ACK가 오지 않으면
결함 감시자에게 레포트 함
오류 감지 패턴
Google App Engine + Android Push Service
응답하라 2013 서버송신자에게
수신자가
살아있음을
알리는 방법이다.
받았다고 알리기
(ACKNOWLEDGEMENT)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
실제 임계값
Realistic
Threshold
받았다고 알리기
Acknowledgeme
nt
Google App Engine + Android Push Service
실제 임계값
(REALISTIC THRESHOLD)
ACK를 받기 까지 기다린 시간을
결함관리자에게
오류 레포트를 함
실제 임계값과 비교하여
임계값을 넘을 경우
상황에 따른 임계값 리스트가 필요
오류 감지 패턴
Google App Engine + Android Push Service
응답하라 2013 서버임계값을 상황에 맞게 설정하여
20ms 안에 ACK오지 않으면
오류로 간주하고 재시도를 한다 던지
실제 임계값
(REALISTIC THRESHOLD)
100ms 안에 오지 않으면
결함 관찰자에게 알리던지 하는 등
임계값에 따라 ACK, 심장박동에서
오류여부를 판단한다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
체크섬
Checksum
실제 임계값
Realistic
threshold
Google App Engine + Android Push Service
체크섬 (CHECKSUM)
데이터 값이 정확한지
알아보는 방법
오류 감지 패턴
Google App Engine + Android Push Service
응답하라 2013 서버데이터 값이
오류가 있는지
판단할 수 있도록
정보가 추가 된다.
체크섬 (CHECKSUM)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
일시적인 것들
은 무시하기
Riding over
transients
체크섬
Checksum
Google App Engine + Android Push Service
일시적인 것들은 무시하기
(RIDING OVER TRANSIENTS)
결함 상관관계 패턴을 통하여
일시적인 결함이라고 판단되면
발생 빈도만 모니터링 한 후
기대한 이상으로 발생하지 않을 때
해당 결함은 무시함
시스템을 모니터링 하다가
결함이 발견되어
오류 감지 패턴
Google App Engine + Android Push Service
응답하라 2013 서버일시적인 오류를 판단하여
처리하느라 시스템에
무리가 가지 않도록
일시적인 것들은 무시하기
(RIDING OVER TRANSIENTS)
무시하기도 한다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
일시적인 것들은
무시하기
Riding over
transients
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
두 번째 미션 클리어!
Google App Engine + Android Push Service
오류 복구 패턴
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
재시작
Resart
오류 복구
Google App Engine + Android Push Service
재시작 (RESTART)
오류 복구 패턴
오류 복구가 불가능 할 때
시스템을 재 시작함.
Google App Engine + Android Push Service
응답하라 2013 서버복구를 할 수 없을 경우
단계에 맞춰
재시작을 한다.
소프트웨어만 재시작하는 경우
하드웨어만 재시작하는 경우
재시작 (RESTART)
둘 다 재시작 하는 경우가 있다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
재시도 횟수를
제한하기
Limit retries
재시작
Restart
Google App Engine + Android Push Service
재시도 횟수를 제한하기
(LIMIT RETRIES)
오류 복구 패턴
똑같은 자극이 주어지면
똑같은 오류가 발생한다.
똑같은 오류가 발생 할 때마다.
재 시도 하지 말고
해당 오류를 다룰 수 있는
전략이 필요하다.
Google App Engine + Android Push Service
응답하라 2013 서버같은 상황에서
계속 동일한 오류가 발생할 수 있어서
그럴 때는 다른 방법으로 해결해야
재시도 횟수를 제한하기
(LIMIT RETRIES)
한다.
예를 들어 네트워크 인터페이스가
문제일 경우
계속해서 ACK를 보내지 않도록 한다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
데이터 리셋
Data reset
재시도 횟수를 제
한하기
Limit retries
Google App Engine + Android Push Service
데이터 리셋 (DATA RESET)
오류 복구 패턴
수정할 수 없는 데이터가 있을 경우
초기값으로 리셋하기
Google App Engine + Android Push Service
응답하라 2013 서버데이터의 구조도 복구할 수 없고
데이터 값도 알 수 없을 때
초기값으로 리셋하여
초기 단계로 전환되게 한다.
데이터 리셋 (DATA RESET)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
데이터 리셋
Data reset
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
두 번째 미션 클리어!
세 번째 미션 클리어!
Google App Engine + Android Push Service
오류 완화 패턴
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
공평한자원할당
Equitable
resource
allocation
오류 완화
Google App Engine + Android Push Service
공평한 자원 할당
(EQUITABLE RESOURCE ALLOCATION )
오류 완화 패턴
모든 비슷한 요청을
요청 풀(Pool)에 넣고
우선순위에 맞춰
공평하게 자원을 할당한다.
Google App Engine + Android Push Service
응답하라 2013 서버하나의 엔터티에서
정보를 너무 많이 요청할 경우
다른 엔터티는
느려지거나 정보를 받을 수 없기에
우선순위에 맞게 자원을 할당하여
공평한 자원 할당
(EQUITABLE RESOURCE ALLOCATION )
정보를 전달할 수 있게 한다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
리소스 할당을
위해 큐에 넣기
Queue for
resources
공평한 자원할당
Equitable
resource
allocation
Google App Engine + Android Push Service
리소스 할당을 위해 큐에 넣기
(QUEUE FOR RESOURCES )
오류 완화 패턴
즉시 처리할 수 없는
요청은 큐에 넣어
순서에 맞춰
리소스를 할당 받는다.
Google App Engine + Android Push Service
응답하라 2013 서버큐를 사용하여
요청을 처리하면
우선순위에 맞게
리소스를 할당 받을 수 있다.
리소스 할당을 위해 큐에 넣기
(QUEUE FOR RESOURCES )
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
새로운 일부터
하기
Fresh work
before stale
리소스 할당을 위
해 큐에 넣기
Queue for
resources
Google App Engine + Android Push Service
새로운 일부터 하기
(FRESH WORK BEFORE STALE)
오류 완화 패턴
LIFO 큐를 사용하여
새로운 요청을 가장 먼저 처리한다.
적어도 몇몇은
좋은 서비스를 받게 된다.
Google App Engine + Android Push Service
응답하라 2013 서버
요청을 순서대로 처리하다 보면
나중에 들어온 요청은
또 앞에서 처리하는 시간 만큼
기다려야 하기 때문에
새로운 일부터 하기
(FRESH WORK BEFORE STALE)
새로운 요청부터 처리하면
적어도 몇몇 요청은
좋은 서비스를 받을 수 있다.
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
표시된 데이터
Marked data
새로운 일부터 하
기
Fresh work
before stale
Google App Engine + Android Push Service
표시된 데이터(MARKED DATA)
오류가 있는 데이터에
표시를 하여
오류 처리를 할 수 있도록
룰을 정의한다.
Google App Engine + Android Push Service
응답하라 2013 서버오류가 있는 데이터에
표시를 해주어
나중에 한꺼번에
특정 블록에서
처리하는 로직을 둘 수 있다.
표시된 데이터(MARKED DATA)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
표시된 데이터
Marked data
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
두 번째 미션 클리어!
세 번째 미션 클리어!
네 번째 미션 클리어!
Google App Engine + Android Push Service
결함 치료 패턴
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
재통합
Reintegration
결함 치료
Google App Engine + Android Push Service
재통합 (REINTEGRATION)
결함 치료 패턴
미리 정해진 절차에 따라
수정된 컴포넌트를
시스템에 재통합한다.
Google App Engine + Android Push Service
응답하라 2013 서버소프트웨어 업데이트나
완화 기술에 의해
결함이 치료되면
치료된 컴포넌트를
재통합하여 기능을 수행토록 한다.
재통합 (REINTEGRATION)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
근본 원인 분석
Root cause
analysis
재통합
Reintegration
Google App Engine + Android Push Service
근본 원인 분석
(ROOT CAUSE ANALYSIS)
결함 치료 패턴
오류나 결함의 근본 원인을 분석할 때
왜? 라는 질문을 5번 이상 하면
근본 원인을 찾아
수정할 수 있다.
Google App Engine + Android Push Service
응답하라 2013 서버일시적인 수정이 아닌
소프트웨어 업데이트 기능 같은 경우
결함을 제거할 수 있기 때문에
정확한 근본 원인을 분석하여야지
재발이 되지 않는다.
근본 원인 분석
(ROOT CAUSE ANALYSIS)
Google App Engine + Android Push Service
아키텍처 오류감지 오류복구 오류완화 결함치료
완화 단위 만들기
단계적으로 확대하
기
시스템 모니터 재시작 공평한 자원할당 재통합
검사하고 수정하기 결함 감시자 두기 심장박동
재시도 횟수를 제한
하기
리소스 할당을 위해
큐에 넣기
근본원인분석
중복된 컴포넌트 및
기능 만들기
소프트웨어 업데이
트
받았다고 알리기 데이터 리셋 새로운 일부터 하기
사람들의 간섭을 최
소화하기
실제 임계값 표시된 데이터
유지보수 인터페이
스 만들기
체크섬
책임자 두기
일시적인 것들은 무
시하기
근본 원인 분석
Root cause
analysis
Google App Engine + Android Push Service
오류 감지 패턴
오류 복구 패턴
오류 완화 패턴
결함 치료 패턴
초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
두 번째 미션 클리어!
세 번째 미션 클리어!
네 번째 미션 클리어!
다섯 번째 미션 클리어!
Google App Engine + Android Push Service
사실은
가장 먼저!!
Google App Engine + Android Push Service
결함허용시스템을
만들기 위해서는
가장 먼저
마음가짐이 필요했다!
Google App Engine + Android Push Service
이 부분을 이렇게 하면 어떤
문제가 발생할까?
숨겨진 결함은 어디 있을까?
Google App Engine + Android Push Service
발생할 여지가 있는 결함을
찾아 목록을 만든다.
그리고 나서 해결방법에 대한
패턴을 적용한다
Google App Engine + Android Push Service
2. 제 때에 오지 않는 정보의 원
인이 되는 결함
서버가 수신자에게 정보를 보
내주지 않을 경우.
받았다고 알리기
심장박동
시스템 모니터
Google App Engine + Android Push Service
이렇게 각 단계에 맞는
패턴을 적용하여 구성하면
응답하라 2013
결함 허용 시스템 설계가
완성 됩니다!
Google App Engine + Android Push Service
응답하라 2013 서버
업데
이트
저장
Google App Engine + Android Push Service
Wrap up 1
< 개념 설명 >
 결함 허용 시스템이 무엇인지?
 결함 허용 시스템 구조의 4가지 단계
 용어설명 : 결함, 오류, 장애
 안정성, 가용성, 커버리지
Google App Engine + Android Push Service
Wrap up 2
< 응답하라2013 서버 >
 결함 허용 시스템을 만들 때의 마음가짐
 초기 설계패턴 및 오류 감지, 오류 복구, 오
류 완화 , 결함 치료 단계별 패턴
Google App Engine + Android Push Service
To do
 더 많은 결함허용패턴들
 실제 패턴 별 구현 방법
 각자의 시스템에 결함 허용을 할 수 있도록
만들어 보기
Google App Engine + Android Push Service
참고 문헌
 Robert S. Hammer, Patterns for fault tolerant
software,Wiley, 2007
< 웹사이트 >
 http://www.slideshare.net/ufried/no-crash-
allowed-fault-tolerance-patterns
Google App Engine + Android Push Service
Google App Engine + Android Push Service
감사합니다.

Weitere ähnliche Inhalte

Ähnlich wie Fault tolerant system_130629

모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)IMQA
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기Amazon Web Services Korea
 
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략Amazon Web Services Korea
 
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기 AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기 Amazon Web Services Korea
 
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개Ki Bae Kim
 
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준 모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준 Bo Seong Seo
 
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018Amazon Web Services Korea
 
01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축InGuen Hwang
 
Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15uEngine Solutions
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415SeungBeom Ha
 
Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법Young D
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSAVMware Tanzu Korea
 
운영이관업무 효율화방안
 운영이관업무 효율화방안 운영이관업무 효율화방안
운영이관업무 효율화방안Eugene Chung
 
sap Error Report
sap Error Report sap Error Report
sap Error Report jung_se_hun
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
관찰가능성 기능소개.ppt
관찰가능성 기능소개.ppt관찰가능성 기능소개.ppt
관찰가능성 기능소개.pptPhilip951661
 
How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)Ye Joo Park
 
Akka Fault Tolerance
Akka Fault ToleranceAkka Fault Tolerance
Akka Fault ToleranceHyungho Ko
 

Ähnlich wie Fault tolerant system_130629 (20)

모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)모니터링 영역의 변천사_클라우드, 디지털 경험까지)
모니터링 영역의 변천사_클라우드, 디지털 경험까지)
 
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기 [AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
[AWS Dev Day] 실습워크샵 | Amplify 와 AI 서비스를 활용한 서버리스 기반 소셜 안드로이드 앱 만들기
 
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략
AWS Builders 1 : 클라우드를 활용한 스마트 팩토리 전략
 
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기 AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기
AWS Builders 3: 인공지능을 활용하여 설비 및 생산 라인에서의 이상 감지 고도화하기
 
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
HPE 솔루션과 함께하는 모바일 앱 테스팅 방안 소개
 
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준 모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준
모바일 오피스를 검토하는 기업의 모바일 플랫폼 선정 기준
 
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018
클라우드 세상에서 살아남기 (2) “진화의시작: 인프라 엔지니어에서 Ops 엔지니어로”::이한주::AWS Summit Seoul 2018
 
01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축
 
Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15Essencia ui ux specification 2014 10 15
Essencia ui ux specification 2014 10 15
 
모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415모바일 앱(App) 개발 테스트 솔루션 v20160415
모바일 앱(App) 개발 테스트 솔루션 v20160415
 
Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법
 
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
클라우드 네이티브 IT를 위한 4가지 요소와 상관관계 - DevOps, CI/CD, Container, 그리고 MSA
 
Designing Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom TabletDesigning Apps for Motorla Xoom Tablet
Designing Apps for Motorla Xoom Tablet
 
운영이관업무 효율화방안
 운영이관업무 효율화방안 운영이관업무 효율화방안
운영이관업무 효율화방안
 
sap Error Report
sap Error Report sap Error Report
sap Error Report
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
관찰가능성 기능소개.ppt
관찰가능성 기능소개.ppt관찰가능성 기능소개.ppt
관찰가능성 기능소개.ppt
 
발표자료
발표자료 발표자료
발표자료
 
How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)How Google Tests Software (구글의 소프트웨어 테스팅)
How Google Tests Software (구글의 소프트웨어 테스팅)
 
Akka Fault Tolerance
Akka Fault ToleranceAkka Fault Tolerance
Akka Fault Tolerance
 

Fault tolerant system_130629

  • 1. 황희선 황선희 Fault Tolerant System 설계를 위한 패턴
  • 2. Google App Engine + Android Push Service 1. 결함 허용 시스템 에 대한 소개 2. 결함 허용 시스템 패턴 이용해 설계해보기 황희선 황선희
  • 3. Google App Engine + Android Push Service 결함 허용 시스템의 정의
  • 4. Google App Engine + Android Push Service 결함 허용 시스템? 결함 “내 결함성 시스템” “고 신뢰성 시스템” 다운이 허용될 수 없는 시스템(은행이나 e-Commerce) 실시간 프로세스 제어시스템 (좌석예약시스템 ) 결함이 인명 손실에 영향을 주는 시스템(자동차, 병원) 연 중 보수작업이 불가능한 시스템(우주 항해 시스템) 결함이 막대한 경제적 손실을 야기하는 시스템 (원전 시스템)
  • 5. Google App Engine + Android Push Service 결함을 가진 시스템이 중단 없이 서비스를 제공하기 위해서 활용할 수 있는 4가지 기능이 있습니다.
  • 6. Google App Engine + Android Push Service 결함치료기능 오류복구기능 오류완화기능 오류감지기능
  • 7. Google App Engine + Android Push Service
  • 8. Google App Engine + Android Push Service 데이터방송 TV 방송정보 노래방 애플리케이션
  • 9. Google App Engine + Android Push Service 스레드 관리 모듈에 결함이 있는 데이터 방송 TV가 있다고 생각해 봅시다
  • 10. Google App Engine + Android Push Service 사용자가 채널을 돌리는 경우
  • 11. Google App Engine + Android Push Service 이전 채널의 애플리케이션 종료 새로운 채널의 애플리케이션 실행 TV 애플리케이션 관리 모듈은
  • 12. Google App Engine + Android Push Service 스레드 관리 모듈 스레드 결함이 없는 스레드 모듈은 애플리케이션 종료 시 스레드 스레드
  • 13. Google App Engine + Android Push Service 결함을 가진 스레드 관리 모듈 스레드 애플리케이션 종료 시 스레드 스레드 결함을 가진 스레드 관리 모듈 좀비스레드 좀비스 레드
  • 14. Google App Engine + Android Push Service 애플리케이션의 실행과 종료가 반복되면 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드
  • 15. Google App Engine + Android Push Service 새로운 애플리케이션 실행 시 좀비스레드로 인해 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 실행이 느려지는 장애가 발생
  • 16. Google App Engine + Android Push Service 이 문제를 해결하기 위해 스레드 관리 모듈 좀비 스 레드 검사하는 기능 추가하였습니다. 주기적 검사기능스레드관리 모듈에 주기적으로 좀비스레드를
  • 17. Google App Engine + Android Push Service 오류 감지 기능
  • 18. Google App Engine + Android Push Service 스레드 관리 모듈 주기적 검사기능 스레드 종료 기능 좀비 스 레드 좀비 스 레드 좀비 스 레드 오류 완화를 위한 예제여전히 애플리케이션 실행과 종료 사이에서 좀비스레드가 쌓이지만 주기적으로 좀비스레드를 강제 종료 시켜주기 때문에 성능저하 장애는 방지할 수 있습니다.
  • 19. Google App Engine + Android Push Service 오류 완화 기능
  • 20. Google App Engine + Android Push Service 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 좀비 스 레드 오류 복구 기능 예제 좀비스레드로 인해 메모리 누수 오류가 발생하여 화면이 표시되지 않는 장애가 발생할 경우가 있습니다. 새로운 애플리케이션이 실행 시
  • 21. Google App Engine + Android Push Service 메모리 누수를 해결하기 위해 애플리케이션 관리 모듈 메모리 해제 기능 좀비 스레드 스레드 스레드 결과 애플리케이션 화면이 표시되지 않는 장애를 방지합니다.
  • 22. Google App Engine + Android Push Service 오류 복구 기능
  • 23. Google App Engine + Android Push Service 오류 감지, 복구, 완화 기능은 결함 자체를 제거하지 못합니다 따라서 결함을 가진 모듈이 실행되면 오류가 여전히 발생 합니다 소프트웨어 업데이트 모듈을 두어 결함자체를 치료할 수 있습니다
  • 24. Google App Engine + Android Push Service 결함 치료 기능
  • 25. Google App Engine + Android Push Service 오류 감지 기능 오류 복구 기능 오류 완화 기능 결함 치료 기능
  • 26. Google App Engine + Android Push Service 결함, 오류, 장애에 대한 용어 정리
  • 27. Google App Engine + Android Push Service 결함 (Fault) 오류 (Error) 장애 (Failure) 시스템이나 소프트웨어 - 부정확한 요구사항 명세서 - 잘못된 설계 - 코딩 오류 이 결함을 가진 부분이 실행되면 오류를 발생시킬 수 있습니다 오류가 여러 번 반복되고 이런 오류가 서비스 실행에 관련이 있으면 시스템이 시스템 명세서대로 동작하지 않는 장애를 발생 > >
  • 28. Google App Engine + Android Push Service 시스템의 결함 허용 정도를 측정하는 기준
  • 29. Google App Engine + Android Push Service 안정성 (Reliability) 특정 기간 동안 장애가 없는 정도를 의미 MTTF : Mean Time To Failure 시간 장애 수리 (복구나 완화) 장애 MTTF 안정성(=e-(1/MTTF) ) ∝ MTTF 안정성 요구사항 예제 시카고에서 로스앤젤레스로 가는 비행기 경우 MTTF가 5보다 커야 한다 비행 거리가 5이고 이 시 간에는 장애가 발생하면 안되기때문이다
  • 30. Google App Engine + Android Push Service 가용성 (Availability) 시스템이 기능 수행할 수 있는 기간이 전체 가동 기 간의 몇 퍼센트인지 나타냄 MTTR : Mean Time To Repair, MTTF 시간 장애 수리(복구나 완화) 장애 수리(복구나 완화) MTTR MTTRMTTF 가용성 (=MTTF / (MTTF+MTTR)) 가용성 ∝ (1 / MTTR), 가용성 ∝ MTTF 가용성 요구사항 예제 4ESS™ 스위치는 40년간 고장시간은 2시간만 허용한다 즉 가용할 수 없는 시간이 연간 3분이어야 한다
  • 31. Google App Engine + Android Push Service 범위(Coverage)  P(성공적으로 자동 복구됨|오류 발생)  계산 공식 = P(성공적인 오류 감지) X P(성공적인 오류 복구)  안정성과 가용성이 높은 시스템은 95% 이상의 커버리지 지향
  • 32. Google App Engine + Android Push Service 내결함 처리를 위한 Core Patterns 결함 허용 시스템을 위한 Pattern Architectural Patterns 오류 감지 Patterns 오류 복구 Patterns 오류 완화 Patterns 결함 치료 Patterns 시스템 설계 초기, 아키텍쳐 설계 시 결함 허용 기능을 위해 고려해야 할 사항이나 설계지침
  • 33. Google App Engine + Android Push Service 예제 황선희
  • 34. Google App Engine + Android Push Service 접속한 사용자들의 상태를 실시간으로 알려주는 간단한 서버를 하나 만들어 봅시다.
  • 35. Google App Engine + Android Push Service Presence serverPresence Server 부재) 응답하라2013 서버
  • 36. Google App Engine + Android Push Service 응답하라 2013 서버 업데 이트 저장
  • 37. Google App Engine + Android Push Service 응답하라 2013 서버
  • 38. Google App Engine + Android Push Service 응답하라 2013 서버
  • 39. Google App Engine + Android Push Service 응답하라 2013 서버
  • 40. Google App Engine + Android Push Service 결함 허용 시스템을 설계해보기!
  • 41. Google App Engine + Android Push Service 간단한 서버로 보이지만 고려해야 할 여러 단계가 있어요.
  • 42. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴
  • 43. Google App Engine + Android Push Service 초기 설계단계에서 고려해야 할 패턴들
  • 44. Google App Engine + Android Push Service 아키텍트는 원래 필요한 패턴들을 미리 알고 해당 시스템에 필요한 패턴들만 선택해서 목록을 만 들어야 합니다.
  • 45. Google App Engine + Android Push Service 아직 패턴에 익숙지 않으시니 응답하라2013 서버에 필요한 패턴 목록 즉 패턴 랭귀지와 패턴을 보여드리고 쓰임새를 설명할게요.
  • 46. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 완화 단위 만들기 units of mitigation 아키텍쳐
  • 47. Google App Engine + Android Push Service 완화 단위 만들기 (UNIT OF MITIGATION) 결함 허용 시스템의 기본단위 오류를 복구할 수 있는 메커니즘 포함 기능 수행 자가체크 & 정상수행 안 할 경우 멈추거나 복구 초기 단계 설계 패턴
  • 48. Google App Engine + Android Push Service 응답하라 2013 서버 완화 단위 만들기 (UNIT OF MITIGATION) 정보를 받는 부분 처리하는 부분 보내는 부분으로 나누어 각각의 단위에 셀프 체킹 기능과 자동으로 복구하는 메커니즘을 넣는다.
  • 49. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 검사하고 수정하기 Correcting Audits 완화 단위 만들기 units of mitigation
  • 50. Google App Engine + Android Push Service 검사하고 수정하기 (CORRECTING AUDITS ) 하드웨어 or 소프트웨어 에러 발생시 자 동 수정 데이터 구조의 특성 (링크드리스트, 바운더리) 위생 상태 체크(체크섬) 초기 단계 설계 패턴
  • 51. Google App Engine + Android Push Service 응답하라 2013 서버예를 들면 정보를 받는 부분에서 받은 정보가 정확한 정보인지를 체크섬으로 확인하고 틀리면 자동으로 수정하거나 리셋한다. 검사하고 수정하기 (CORRECTING AUDITS )
  • 52. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 중복된 컴포넌 트 및 기능 만들기 Redundancy 검사하고 수정하기 Correcting Audits
  • 53. Google App Engine + Android Push Service 중복된 컴포넌트 및 기능 만들기 (Redundancy) 중복된 컴포넌트나 기능을 제공하여 에러 처리를 병렬적으로 할 수 있게 함. 시스템 이용성이 증가
  • 54. Google App Engine + Android Push Service 응답하라 2013 서버이 시스템은 프로세서가 더 추가 된다는 요구사항을 가지고 있다. 프로세서가 더 추가되면 시스템을 이용할 수 있는 가용성(Availability)이 증가 된다. 중복된 컴포넌트 및 기능 만들기 (Redundancy)
  • 55. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 사람들의 간섭 을 최소화하기 Minimize human intervention 중복된 컴포넌트 및 기능 만들기 Redundancy
  • 56. Google App Engine + Android Push Service 사람들의 간섭을 최소화하기 (MINIMIZE HUMAN INTERVENTION ) 사람의 개입은 시스템의 속도를 저하시키거나 잘못된 오류를 일으키기 쉬움 최대한 사람의 간섭을 배제시킴 초기 단계 설계 패턴
  • 57. Google App Engine + Android Push Service 응답하라 2013 서버예를 들면 오류를 복구하는 과정에서 가능한 한 사람의 Yes or No같은 응답을 요구하지 않게 자동 복구로 설계한다. 사람들의 간섭을 최소화하기 (MINIMIZE HUMAN INTERVENTION )
  • 58. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 유지보수 인터 페이스 만들기 Maintenance interface 사람들의 간섭을 최소화하기 Minimize human intervention
  • 59. Google App Engine + Android Push Service 유지보수 인터페이스 만들기 (MAINTENANCE INTERFACE) 경험 있고 실력 있는 전문가는 더 빠른 시간 내에 더 잘 해결할 수 있으니 시스템을 모니터링 하거나 복구할 수 있도록 인터페이스를 둔다. 초기 단계 설계 패턴
  • 60. Google App Engine + Android Push Service 응답하라 2013 서버유지보수 인터페이스를 만들어 전문가가 현재 처리되는 상황을 모니터링하거나 오류를 처리할 수 있도록 한다. 유지보수 인터페이스 만들기 (MAINTENANCE INTERFACE) web 형식의 인터페이스
  • 61. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 책임자 두기 Someone in charge 유지보수 인터페 이스 만들기 Maintenance interface
  • 62. Google App Engine + Android Push Service 책임자 두기(SOMEONE IN CHARGE) 장애 발생시 시스템이 멈추지 않도록 에 러를 감시하고 처리하는 책임자 두기
  • 63. Google App Engine + Android Push Service 응답하라 2013 서버전체 시스템을 모니터링 하는 시스템 모니터가 있어서 오류가 발생할 경우 처리를 요청한다 책임자 두기(SOMEONE IN CHARGE)
  • 64. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 단계적으로 확대하기 Escalation 책임자 두기 Someone In charge
  • 65. Google App Engine + Android Push Service 단계적으로 확대하기 (ESCALATION) 에러복구나 에러 완화에 실패하면 다음 단계의 더 강한 액션을 취함 초기 단계 설계 패턴
  • 66. Google App Engine + Android Push Service 응답하라 2013 서버서버가 멈췄을 경우 ACK가 오는지 확인하거나 그래도 오지 않을 경우 몇 차례 재시도를 하거나 그래도 안될 경우 재시작을 한다. 단계적으로 확대하기 (ESCALATION) 단계별로 좀 더 강한 액션을 취한다.
  • 67. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 결함 감시자 두기 Fault observer 단계적으로 확대하기 escalation
  • 68. Google App Engine + Android Push Service 결함 감시자 두기 (FAULT OBSERVER) 모든 오류를 감시자에 레포트하면 결함 감시자는 관심을 가진 수신자에게 에러를 보냄 초기 단계 설계 패턴
  • 69. Google App Engine + Android Push Service 응답하라 2013 서버예를 들어 결함감시자가 오류의 발생을 유지보수 인터페이스에 알려주면 관리자는 유지보수 인터페이스를 통하여 오류를 복구 할 수 있다. 결함 감시자 두기 (FAULT OBSERVER)
  • 70. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 소프트웨어 업데이트 Software update 결함 감시자 두기 Fault observer
  • 71. Google App Engine + Android Push Service 소프트웨어 업데이트 (SOFTWARE UPDATE) 소프트웨어 업데이트를 통해 지속적으로 결함을 제거하거나 기능을 향상시킴 초기 단계 설계 패턴
  • 72. Google App Engine + Android Push Service 응답하라 2013 서버소프트웨어 업데이트 기능은 기능을 중간에 추가할 경우 고려사항이 많아지기 때문에 초기 설계단계에서 기능을 추가하여야 한다 소프트웨어 업데이트 (SOFTWARE UPDATE)
  • 73. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 소프트웨어 업데이트 Software update
  • 74. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어!
  • 75. Google App Engine + Android Push Service 오류 감지 패턴
  • 76. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 시스템 모니터 System monitor 오류 감지
  • 77. Google App Engine + Android Push Service 시스템 모니터(SYSTEM MONITOR) 시스템이 제대로 수행되는지 확인 관찰하던 컴포넌트가 멈출 경우 결함 감시자에게 레포트하고 올바른 초기화를 수행함
  • 78. Google App Engine + Android Push Service 응답하라 2013 서버시스템 상에서만 확인할 수 있는 오류를 감지하는 역할을 한다. 시스템 모니터(SYSTEM MONITOR)
  • 79. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 심장박동 Heartbeat 시스템 모니터 System monitor
  • 80. Google App Engine + Android Push Service 심장박동(HEARTBEAT) 이 방법을 통해 시스템 모니터는 관찰 하는 컴포넌트가 잘 수행 되고 있다는 것을 알 수 있음 관찰 되는 컴포넌트로부터 주기적으로 반응이 전달됨 오류 감지 패턴
  • 81. Google App Engine + Android Push Service 응답하라 2013 서버일정한 시간 간격에 맞춰서 시스템의 상태를 시스템의 나머지 부분들에 보낸다. 심장박동(HEARTBEAT)
  • 82. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 받았다고 알리기 acknowledgeme nt 심장박동 Heartbeat
  • 83. Google App Engine + Android Push Service 받았다고 알리기 (ACKNOWLEDGEMENT) 두 개의 태스크 사이에서 상대방이 살아있고 제대로 기능한다는 것을 알리는 방법 일정한 시간이 지난 후 ACK가 오지 않으면 결함 감시자에게 레포트 함 오류 감지 패턴
  • 84. Google App Engine + Android Push Service 응답하라 2013 서버송신자에게 수신자가 살아있음을 알리는 방법이다. 받았다고 알리기 (ACKNOWLEDGEMENT)
  • 85. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 실제 임계값 Realistic Threshold 받았다고 알리기 Acknowledgeme nt
  • 86. Google App Engine + Android Push Service 실제 임계값 (REALISTIC THRESHOLD) ACK를 받기 까지 기다린 시간을 결함관리자에게 오류 레포트를 함 실제 임계값과 비교하여 임계값을 넘을 경우 상황에 따른 임계값 리스트가 필요 오류 감지 패턴
  • 87. Google App Engine + Android Push Service 응답하라 2013 서버임계값을 상황에 맞게 설정하여 20ms 안에 ACK오지 않으면 오류로 간주하고 재시도를 한다 던지 실제 임계값 (REALISTIC THRESHOLD) 100ms 안에 오지 않으면 결함 관찰자에게 알리던지 하는 등 임계값에 따라 ACK, 심장박동에서 오류여부를 판단한다.
  • 88. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 체크섬 Checksum 실제 임계값 Realistic threshold
  • 89. Google App Engine + Android Push Service 체크섬 (CHECKSUM) 데이터 값이 정확한지 알아보는 방법 오류 감지 패턴
  • 90. Google App Engine + Android Push Service 응답하라 2013 서버데이터 값이 오류가 있는지 판단할 수 있도록 정보가 추가 된다. 체크섬 (CHECKSUM)
  • 91. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 일시적인 것들 은 무시하기 Riding over transients 체크섬 Checksum
  • 92. Google App Engine + Android Push Service 일시적인 것들은 무시하기 (RIDING OVER TRANSIENTS) 결함 상관관계 패턴을 통하여 일시적인 결함이라고 판단되면 발생 빈도만 모니터링 한 후 기대한 이상으로 발생하지 않을 때 해당 결함은 무시함 시스템을 모니터링 하다가 결함이 발견되어 오류 감지 패턴
  • 93. Google App Engine + Android Push Service 응답하라 2013 서버일시적인 오류를 판단하여 처리하느라 시스템에 무리가 가지 않도록 일시적인 것들은 무시하기 (RIDING OVER TRANSIENTS) 무시하기도 한다.
  • 94. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 일시적인 것들은 무시하기 Riding over transients
  • 95. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어! 두 번째 미션 클리어!
  • 96. Google App Engine + Android Push Service 오류 복구 패턴
  • 97. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 재시작 Resart 오류 복구
  • 98. Google App Engine + Android Push Service 재시작 (RESTART) 오류 복구 패턴 오류 복구가 불가능 할 때 시스템을 재 시작함.
  • 99. Google App Engine + Android Push Service 응답하라 2013 서버복구를 할 수 없을 경우 단계에 맞춰 재시작을 한다. 소프트웨어만 재시작하는 경우 하드웨어만 재시작하는 경우 재시작 (RESTART) 둘 다 재시작 하는 경우가 있다.
  • 100. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 재시도 횟수를 제한하기 Limit retries 재시작 Restart
  • 101. Google App Engine + Android Push Service 재시도 횟수를 제한하기 (LIMIT RETRIES) 오류 복구 패턴 똑같은 자극이 주어지면 똑같은 오류가 발생한다. 똑같은 오류가 발생 할 때마다. 재 시도 하지 말고 해당 오류를 다룰 수 있는 전략이 필요하다.
  • 102. Google App Engine + Android Push Service 응답하라 2013 서버같은 상황에서 계속 동일한 오류가 발생할 수 있어서 그럴 때는 다른 방법으로 해결해야 재시도 횟수를 제한하기 (LIMIT RETRIES) 한다. 예를 들어 네트워크 인터페이스가 문제일 경우 계속해서 ACK를 보내지 않도록 한다.
  • 103. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 데이터 리셋 Data reset 재시도 횟수를 제 한하기 Limit retries
  • 104. Google App Engine + Android Push Service 데이터 리셋 (DATA RESET) 오류 복구 패턴 수정할 수 없는 데이터가 있을 경우 초기값으로 리셋하기
  • 105. Google App Engine + Android Push Service 응답하라 2013 서버데이터의 구조도 복구할 수 없고 데이터 값도 알 수 없을 때 초기값으로 리셋하여 초기 단계로 전환되게 한다. 데이터 리셋 (DATA RESET)
  • 106. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 데이터 리셋 Data reset
  • 107. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어! 두 번째 미션 클리어! 세 번째 미션 클리어!
  • 108. Google App Engine + Android Push Service 오류 완화 패턴
  • 109. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 공평한자원할당 Equitable resource allocation 오류 완화
  • 110. Google App Engine + Android Push Service 공평한 자원 할당 (EQUITABLE RESOURCE ALLOCATION ) 오류 완화 패턴 모든 비슷한 요청을 요청 풀(Pool)에 넣고 우선순위에 맞춰 공평하게 자원을 할당한다.
  • 111. Google App Engine + Android Push Service 응답하라 2013 서버하나의 엔터티에서 정보를 너무 많이 요청할 경우 다른 엔터티는 느려지거나 정보를 받을 수 없기에 우선순위에 맞게 자원을 할당하여 공평한 자원 할당 (EQUITABLE RESOURCE ALLOCATION ) 정보를 전달할 수 있게 한다.
  • 112. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 리소스 할당을 위해 큐에 넣기 Queue for resources 공평한 자원할당 Equitable resource allocation
  • 113. Google App Engine + Android Push Service 리소스 할당을 위해 큐에 넣기 (QUEUE FOR RESOURCES ) 오류 완화 패턴 즉시 처리할 수 없는 요청은 큐에 넣어 순서에 맞춰 리소스를 할당 받는다.
  • 114. Google App Engine + Android Push Service 응답하라 2013 서버큐를 사용하여 요청을 처리하면 우선순위에 맞게 리소스를 할당 받을 수 있다. 리소스 할당을 위해 큐에 넣기 (QUEUE FOR RESOURCES )
  • 115. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 새로운 일부터 하기 Fresh work before stale 리소스 할당을 위 해 큐에 넣기 Queue for resources
  • 116. Google App Engine + Android Push Service 새로운 일부터 하기 (FRESH WORK BEFORE STALE) 오류 완화 패턴 LIFO 큐를 사용하여 새로운 요청을 가장 먼저 처리한다. 적어도 몇몇은 좋은 서비스를 받게 된다.
  • 117. Google App Engine + Android Push Service 응답하라 2013 서버 요청을 순서대로 처리하다 보면 나중에 들어온 요청은 또 앞에서 처리하는 시간 만큼 기다려야 하기 때문에 새로운 일부터 하기 (FRESH WORK BEFORE STALE) 새로운 요청부터 처리하면 적어도 몇몇 요청은 좋은 서비스를 받을 수 있다.
  • 118. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 표시된 데이터 Marked data 새로운 일부터 하 기 Fresh work before stale
  • 119. Google App Engine + Android Push Service 표시된 데이터(MARKED DATA) 오류가 있는 데이터에 표시를 하여 오류 처리를 할 수 있도록 룰을 정의한다.
  • 120. Google App Engine + Android Push Service 응답하라 2013 서버오류가 있는 데이터에 표시를 해주어 나중에 한꺼번에 특정 블록에서 처리하는 로직을 둘 수 있다. 표시된 데이터(MARKED DATA)
  • 121. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 표시된 데이터 Marked data
  • 122. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어! 두 번째 미션 클리어! 세 번째 미션 클리어! 네 번째 미션 클리어!
  • 123. Google App Engine + Android Push Service 결함 치료 패턴
  • 124. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 재통합 Reintegration 결함 치료
  • 125. Google App Engine + Android Push Service 재통합 (REINTEGRATION) 결함 치료 패턴 미리 정해진 절차에 따라 수정된 컴포넌트를 시스템에 재통합한다.
  • 126. Google App Engine + Android Push Service 응답하라 2013 서버소프트웨어 업데이트나 완화 기술에 의해 결함이 치료되면 치료된 컴포넌트를 재통합하여 기능을 수행토록 한다. 재통합 (REINTEGRATION)
  • 127. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 근본 원인 분석 Root cause analysis 재통합 Reintegration
  • 128. Google App Engine + Android Push Service 근본 원인 분석 (ROOT CAUSE ANALYSIS) 결함 치료 패턴 오류나 결함의 근본 원인을 분석할 때 왜? 라는 질문을 5번 이상 하면 근본 원인을 찾아 수정할 수 있다.
  • 129. Google App Engine + Android Push Service 응답하라 2013 서버일시적인 수정이 아닌 소프트웨어 업데이트 기능 같은 경우 결함을 제거할 수 있기 때문에 정확한 근본 원인을 분석하여야지 재발이 되지 않는다. 근본 원인 분석 (ROOT CAUSE ANALYSIS)
  • 130. Google App Engine + Android Push Service 아키텍처 오류감지 오류복구 오류완화 결함치료 완화 단위 만들기 단계적으로 확대하 기 시스템 모니터 재시작 공평한 자원할당 재통합 검사하고 수정하기 결함 감시자 두기 심장박동 재시도 횟수를 제한 하기 리소스 할당을 위해 큐에 넣기 근본원인분석 중복된 컴포넌트 및 기능 만들기 소프트웨어 업데이 트 받았다고 알리기 데이터 리셋 새로운 일부터 하기 사람들의 간섭을 최 소화하기 실제 임계값 표시된 데이터 유지보수 인터페이 스 만들기 체크섬 책임자 두기 일시적인 것들은 무 시하기 근본 원인 분석 Root cause analysis
  • 131. Google App Engine + Android Push Service 오류 감지 패턴 오류 복구 패턴 오류 완화 패턴 결함 치료 패턴 초기 설계단계에서 고려해야 할 패턴첫 번째 미션 클리어! 두 번째 미션 클리어! 세 번째 미션 클리어! 네 번째 미션 클리어! 다섯 번째 미션 클리어!
  • 132. Google App Engine + Android Push Service 사실은 가장 먼저!!
  • 133. Google App Engine + Android Push Service 결함허용시스템을 만들기 위해서는 가장 먼저 마음가짐이 필요했다!
  • 134. Google App Engine + Android Push Service 이 부분을 이렇게 하면 어떤 문제가 발생할까? 숨겨진 결함은 어디 있을까?
  • 135. Google App Engine + Android Push Service 발생할 여지가 있는 결함을 찾아 목록을 만든다. 그리고 나서 해결방법에 대한 패턴을 적용한다
  • 136. Google App Engine + Android Push Service 2. 제 때에 오지 않는 정보의 원 인이 되는 결함 서버가 수신자에게 정보를 보 내주지 않을 경우. 받았다고 알리기 심장박동 시스템 모니터
  • 137. Google App Engine + Android Push Service 이렇게 각 단계에 맞는 패턴을 적용하여 구성하면 응답하라 2013 결함 허용 시스템 설계가 완성 됩니다!
  • 138. Google App Engine + Android Push Service 응답하라 2013 서버 업데 이트 저장
  • 139. Google App Engine + Android Push Service Wrap up 1 < 개념 설명 >  결함 허용 시스템이 무엇인지?  결함 허용 시스템 구조의 4가지 단계  용어설명 : 결함, 오류, 장애  안정성, 가용성, 커버리지
  • 140. Google App Engine + Android Push Service Wrap up 2 < 응답하라2013 서버 >  결함 허용 시스템을 만들 때의 마음가짐  초기 설계패턴 및 오류 감지, 오류 복구, 오 류 완화 , 결함 치료 단계별 패턴
  • 141. Google App Engine + Android Push Service To do  더 많은 결함허용패턴들  실제 패턴 별 구현 방법  각자의 시스템에 결함 허용을 할 수 있도록 만들어 보기
  • 142. Google App Engine + Android Push Service 참고 문헌  Robert S. Hammer, Patterns for fault tolerant software,Wiley, 2007 < 웹사이트 >  http://www.slideshare.net/ufried/no-crash- allowed-fault-tolerance-patterns
  • 143. Google App Engine + Android Push Service
  • 144. Google App Engine + Android Push Service 감사합니다.