고장 분류의 원인과 예방 및 대응 조치의 분석

모든 실패는 소중한 학습 기회입니다.

견적

실패는 칼을 매달려 개발자의 머리입니다. 속담, :. 없음 주오없는 다이 말 없지만, 개발자가 시간에 다이를 방지하는 방법을 더 주오의 주오을하지 않는다 어렵다.?

네 자신이 자신을 알고 알 수 있습니다. 실패를 방지하려면 관련 오류에 대한 철저한 이해가 필요합니다.

실패는 일반적으로 특정 부정적인 영향을 미치지 집중적 인 문제가 발생 기간을 의미합니다. 비즈니스 문제의 작은 볼륨은 거의 그렇지 않으면, 진정한 실패를 혼동 주요 이슈의 진행 상황을 해결하기 위해 효과에 넣어 제한된 자원의 불합리한 유통의 원인이되며, 고장의 표면이 아닌 영향을 미치지 비 집약적 인 산발적 인 문제가 실패하지 않을 수 있습니다, 그 때문에 작은 확률 이벤트가 잠재적 인 버그를 유발 할 수있다, 그것은 해결되어야하지만, 약간의 거부감과 실패로.

오류를 방지하려면 먼저 오류가 발생한 이유를 이해할 필요가있다. 다음은 실패, 분류 및 정리 이상의 분석에서 비롯됩니다.

고장의 원인

멀티 기원

실패보다 기원은, 실패의 가장 일반적인 원인을 의미합니다. 당신이 실패의 확률의 대부분을 방지 할 수 있습니다, 이러한 상황에주의.

오류 핵심 프로세스

핵심 프로세스는 전체 공정의 결과로, 잘못 링크는 전체 과정 또는 실패의 비즈니스 시나리오의 일부 집중적 인 문제로 이어질 것입니다 실패합니다. 그것은 일반적으로 코드의 조각의 주요 흐름에 추가되지만 코드는 계정에 장면이나 가난에 영향을 미치는 전체의 견고성을지지 않습니다.

예방 조치 :

  1. 변화 점을 평가! 매우 중요! 심지어 한 줄 경우, 한 주요 흐름으로, 신중 대한 영향력을 평가해야합니다. 코드의 주요 흐름에 추가 경고로, 더 길다.
  2. 필요한 시도 - 캐치를 높입니다. 추가 된 코드는 로컬 효과 경우, 예상치 못한 상황이 전체 프로세스에 영향을 미치는 비정상적인 방지 처리, 필요한 시도 - 캐치를 추가 할 수 있습니다.
  3. 가장 쉽게 일반적인 방법과 구성의 전반적인 영향 변경 (측면에 미치는 영향을 매우 큰 얼굴을 반환)하지 않는, 그리고뿐만 아니라 새로운 수정 가능합니다.
  4. 테스트 케이스의 핵심 프로세스의 광범위한 정보에 따르면 각 자료는 반환 필요합니다.
  5. 변화의 위험은 스위치를 증가시킵니다. 오류되면, 변경 사항을 즉시 닫습니다.

리얼 경우 :

견고성의 부족

서비스의 실현 후, 견고 서비스가 원활 첫 번째 장애물 오류 및 예외에 대한 올바른 응답을 실행할 수 있도록하는 것입니다, 그것은 필요한 코드 성취 자격을 갖춘 프로그래머 중 하나입니다.

불쌍한 견고성이 쉽게 인해 지역 세부, 더러운 데이터에 예상치 못한 이어질 수, 시내 전화는 전체 프로세스 및 표시에 영향을 실패합니다.

예방 조치 :

  1. 더 나은 더 많은 오류와 예외 생각.
  2. 잘 사용 시도 - 캐치 호위를합니다.
  3. 빈 문자열, 빈리스트 대체 널 (null)를 사용합니다.
  4. 시험 범위 이상 지점.

리얼 경우 :

  • null 값이 원인으로 인해 주문의 전체 목록을로드하지 못했습니다.
  • 때문에 사소한 의존 오류로 전체 세부 정보 페이지를로드하지 못했습니다됩니다.
  • 훅 문제의 코드가 아니라 테스트, 프로세스가 비정상 지점 코드를 갔을 때, 다시 시작하고 밖으로 무릎을 꿇고 직접 반복 작업을 무릎을 꿇고.

순간 높은 흐름

순간 높은 흐름은 주요 살인자의 실패로 인해 발생합니다. 순시 유량 연결 수가 전체 서비스의 안정성에 직접적인 영향을 재생 시스템 리소스, CPU 나 메모리 카드 전체 또는 급등의 부족을 초래할 것이다.

메시지 처리 애플리케이션의 경우, 높은 흐름이 순간 메시지 처리 지연 될 수 있습니다, 교통 흐름, 상태 느껴지 다음 링크에 영향을 미치는 비 - 메시징 응용 프로그램을 방해 태스킹 인터페이스 느린 응답 또는 전혀 반응을 초래할 것이기 때문.

예방 조치 :

  1. 클러스터 환경 : 각 시스템 또는 지역 클러스터의로드 밸런싱을 보장하기 위하여;
  2. 환경 형 스탠드 : 목표 전류 제한, 속도 제한 및 수를 제한합니다.
  3. 압력 측정 운동. 압력 용기의 측정 후에.

리얼 경우 :

극단적 인 경우

극단적 인 경우 질문에서 시스템을 일으키는 원인이되는 시스템의 한계에 대한 부분적인 도전의 매우 드문 이벤트의 발생을 의미합니다.

예를 들어, 순서대로 제품 유형의 수는 보통 10를 넘지 않지만 50 개 이상의 항목이 포함 된 주문의 큰 숫자의 결과로 하나의 상인 또는 구매자 브러시, 다음, 집중적 인 수출은 시간 제한 또는 인터페이스 반응을 일으키는 원인이되는 응용 프로그램이 FullGC 심각한 원인이 작업을 계속할 수 없습니다.

예방 조치 :

  1. 극단적 인 상황과 영향을 생각;
  2. 극단적 인 경우 테스트 및 설계에 앞서.

리얼 경우 :

종속 실패

의존성은 다음과 같은 경우 실패 할 수 있습니다 :

  1. 응용 프로그램이 시작하는 데 실패, 또는 ​​서비스가 시작 후 정상적으로 작동하지 않을 수 있습니다 원인이 존재하지 않는 서비스, 구성 또는 변수를 따라 또는 해당 버전은 아니다;
  2. 불안정한 에러 다수, 그것에 의존하는 서비스에 기초 고주파로 이어질 때, 응용 프로그램은 애벌란 효과를 초래 오류도 다수있다.

예방 조치 :

  1. 여러 시스템 또는 해제 많은 세부 사항을 포함하는 프로젝트, 당신은 문서, 조심스럽게 지정된 구성을 게시 작성하고 응용 프로그램에 의존의 정확성을 보장하기 위해 해제해야하는 경우. 특정 릴리스에서, 우리는 엄격하게 체크 포인트 목록과 지정 해제 명령 문서를 게시 시행해야합니다. API 버전, 항아리 버전, 종속 서비스, 구성 항목, DB 필드 : 종속성을 확인하십시오.
  2. 자동 강등. 제한 시간의 엄격한 통제, 분리 또는 불필요한 약한 의존성을 제거한다.

자본 손실

고객 자산은 개인 재산권에 매우 민감하다. 하면 자본 손실은 일반적으로 가장 높은 장애 수준, 발생합니다.

자본 손실이 일반적으로 발생합니다 직접 재정 손실을 : 처리 시스템이 고려 멱등 메시지 처리의 결과로 여러 번 반복되지 않고, 상태 필드 기반 서비스 측에 따르면 두 정당 비즈니스 금융 서비스 처리를 기본 반환 상태 필드의 서비스 측면. 잘못된 덜 된 운영자의 결과. 3. 유도 자본 손실, 일부 공연 정보 등의 쇼를 위해 배송 배송 주문과 같은 동작을 복구하기 어려운 어떤 종류를 만들기 위해 사용자를 유도;

예방 조치 : 기금 사업 1. 직접 거래는 처리를 멱등에주의 2 개 펀드 비즈니스 프로세스 상태에 따라 다릅니다.? 정보를 유도 3. 제거.

이전 및 새 마이그레이션 오류

리모델링 할 때 기술 최적화 발생했습니다. 예를 들어, 이전 모델 새로운 모델, 새로운 기술 스택의 이전 기술 스택 마이그레이션의 이전 필드, 이전 페이지가 새 페이지를 마이그레이션 할 수 있습니다. 변환을 수행, 초점은 종종 새로운 서비스를 테스트 할 수 있지만 쉽게 이전 테스트를 호환 서비스를 간과하는 것입니다.

줄이거 나 완전히 잘못 : 오래된 새로운 마이그레이션의 트레이드 오프가있다. 더 철저한 마이그레이션, 오류 및 실패 확률이 더 클 것이다, 그러나 새로운 시스템이 더 상쾌 할 것이다 기존 시스템에 약간의 타협을 할, 당신은 라인 전에 이전 시스템의 부담을 취할 것 오류의 수와 실패의 가능성이 있지만, 새로운 시스템을 줄일 수 업을 따를 수 있습니다 여전히 잘못.

예방 조치 :

  1. 션트. 또한 영향을 최소한으로 유지됩니다, 고려가 지적되지 않은 경우에도 션트, 새로운 서비스 라인 후 표면에 미치는 영향이 점차 확대되도록 할 수 있습니다.
  2. 완전 사전 평가 좋은 테스트 케이스, 테스트 엄격하게 적용.
  3. 이전 인터페이스는 새로운 인터페이스 구조로 마이그레이션 최상의 합의 된 반환 값과 일치하는 값입니다. 변경하려는 경우, 당신은 신중하게 좋은 평가해야합니다.

기존 코드

틀림없이, 기존의 코드는 스타트 업 기업을 향한 큰 공헌을 한입니다. 시간이 지남에 따라 그러나, 점점 더 많은 사업 규모, 복잡성도 빠르게 증가하고, 이전 코드 간단한 프로세스의 많은 점차적으로 "시한 폭탄"가, 지진 깜짝, 사람들은 흔들 내버려 갑자기.

예방 조치 : 일반 정리 및 청소.

리얼 경우 :

데이터 손실

데이터 보안은 점점 기업의 중요한 초점이되었다. SaaS는 경우, 세입자는보고 운영 허가받지 않은 데이터 수 없으며, 모든 데이터와는 서로 독립적으로 운영되도록해야한다.

예방 조치 : 민감한 데이터의 1 탈감작 2. 피 취재 3. 액세스 제어; 4. XSS 보안 문제.

리얼 경우 :

성능 문제

낮은 성능, 짧은 시간에 미치는 영향에 사업의 큰 볼륨의 얼굴에 낮은 처리량, 그것은 막힘, 지연의 원인이 오작동하는 경향이있다.

예방 조치 : 1 개 통화 볼륨 교체주기 단일 호출 2. O (nlogn) 알고리즘 3. 다중 프로세스 또는 멀티 스레드; 4. 불필요한 액세스 서비스 종속성을 줄인다.

다른 이유

장비 및 네트워크

인프라 장비 및 네트워크 문제가있는 경우, 충격이 크다, 하단에있는 인터넷에 속한다. 때 노화 장비 가동 중단 또는 하드웨어 오류, 또는 갑자기 단절 또는 네트워크 지터, 또한 쉽게 대규모의 실패로 이어집니다.

예방 조치 :

  1. 시기 적절한 검사 및 오래된 장비의 교체. 훨씬 더 비용 효과적 일, 시간, 노력, 비용 보상을 지출하는 것보다 문제를, 오래된 장비를 교체 다운 타임 더 많은 돈을 보내십시오.
  2. 예비 링크 및 엔진 룸.
  3. 단일 장애 지점을 피하십시오.

더러운 데이터

더티 데이터에 적용된 전체 더티 데이터의 연관 제약 조건의 부족에 판독 인해 에러가 발생하기 쉬운 상기 애플리케이션 로직 일련의 처리가있는 경우, 데이터가 더 더러운, 더 심각한 문제를 발생시킬 수있다.

예방 조치 :

  1. 검색 및 더티 데이터의 제거.
  2. 온라인 테스트 데이터를 피합니다.


부적절한 운영

부적절한 동작을 주로 다음과 같은 경우 :

  1. 오류의 결과로 두 동작의 동시 실행;
  2. 코드 부적절한 병합 충돌 해결;
  3. 불규칙한 동작, 오동작 제어 처리 개시 시스템의 손실.

예방 조치 :

  1. 코드 분쟁 해결을 병합, 양쪽은 확인했다.
  2. 동시에 시스템 구성 변경, 동시성을 방지하기 위해 좌표해야합니다.
  3. 낮은 피크 사업 기간에서 데이터 복원 작업.
  4. 데이터 복구 프로그램은 새로운 문제를 야기되지 않도록, 확인합니다.

문제 해결

오류가 발생하면, 첫 번째 반응은 즉각 조사 이유가 아니라 즉시 중지에 미치는 영향을 최소화했다.

  • 우리가 원인이 출시 된 결정할 수있는 경우, 즉시 방출을 롤백. 롤백 릴리스 후, 다음주의 조사 이유.
  • 적시 동기화 진행, 그래서 이해 당사자가 통보;
  • 작은 문제가 큰 실패가 될 방지하기 위해 빠른 동기화 메커니즘을 설정합니다.

실패의 가능성을 줄일뿐만 아니라 장애 사태가 사전에 계획하기 위하여.

  • 기본 빗살 의존 강도 의존성 결정 영향 표면의 강도는 불가능 발생;
  • 강한 의존성을 사용할 수없는 경우, 프로그램이 신속하게 복원 할 수 있습니다, 영향을 최소화했다.
  • 장애 운동. 대 유량 시뮬레이션 극한 조건 않으면 긴급 계획의 검출 효과 및 빠른 복구에 발생한다.

개요

실패는 모든 개발자가 꺼려 뭔가 심지어 기업의 경험이다. 그러나 실제로 과실의 다른 형태, 알 수없는, 진실, 긍정적 인 생각,과 관련된 모든 고장은 매우 가치있는 학습 기회였다. 실패,보다 깊이있는 상황을 도착과 관련된 사물의 본질을 이해하는 사람들을 안내 할 것입니다. 진정한 지식의 실패에서 배우고, 실패를 직면 방지하고 오류를 방지하지만, 더 나은 자세.

실패를 방지하려면 :

  • 첫 번째는주의입니다. 이전 된 비즈니스 기능에 반환을 고려 고려 마음의 다수, 충격 표면의 정확한 평가는 동의 수익의 일관성, 표준화 실행을 보장하기 위해 종속성을 다시 확인;
  • 강력한 높은 볼륨과 극단적 인 상황의 설계 및 구현을 고려하기 위해 낮은 성능을 피할 수 있습니다.
  • 보안 문제와 자본의 손실을 방지하기 위해 대상.
  • 엄격한 모니터링 알람 설정, 새싹 단계에서 문제를 참살.

추천

출처www.cnblogs.com/lovesqcc/p/11392064.html