소프트웨어 설계의 비기능적 특징 – 시스템 설계 03

시스템-설계-시스템 설계 03-소프트웨어 설계 비기능적 기능-hogantech-hoganblab

머리말

현대 소프트웨어 시스템의 비기능적 특성에는 가용성(Availability), 신뢰성(Reliability), 확장성(Scalability), 유지 관리 가능성(Maintainability) 및 내결함성(Fault Tolerance)이 포함됩니다. 이러한 특성은 소프트웨어 시스템 성능과 효율성에도 영향을 미칩니다. 사용자 경험에 직접적인 영향을 미칩니다. 이 기사에서는 위의 다섯 가지 특성에 대한 심층적인 설명도 제공합니다.

비기능적 특징

시스템 설계에서는 시스템 설계 계획을 위한 요구사항을 크게 두 가지 유형, 즉 기능적 요구사항(Functional Requirement)과 비기능적 요구사항(Non Functional Requirement)으로 나눌 수 있습니다.

  • 사용자 로그인, 영상 업로드, 영상 시청 등의 기능을 포함하는 영상 시청 플랫폼 설계 등 기능적 요구사항
  • 수백만 명의 사용자 트래픽을 처리할 수 있는 비디오 시청 플랫폼 설계와 같은 비기능적 요구 사항.

여기에서 기능적 요구사항과 비기능적 요구사항이 모두 매우 중요하다는 것을 알 수 있으므로 이 기사에서는 먼저 비기능적 요구사항에 대해 설명하겠습니다.

유효성

유효성 사용자가 접속하여 정상적으로 작동할 수 있는 시스템 서비스 또는 전체 시스템 장비의 비율을 말합니다. 예를 들어, 서비스 가용성이 100%라면 시스템의 서비스가 언제든지 정상적으로 작동하고 응답할 수 있다는 의미입니다.

사용성을 측정하는 방법

가용성은 A로 표시되는 수학적 비율로 표현될 수 있으며, 값이 높을수록 좋습니다. 우리는 이를 다음과 같은 수학 공식으로 표현합니다.

A(백분율) = (총 시간 – 서비스 가동 중지 시간) / 총 시간 * 100%

유효성 연간 가동 중지 시간 월간 가동 중지 시간 주간 다운타임
90%(a9) 36.5일 72시간 16.8시간
99%(2개 9) 3.65일 7.20시간 1.68시간
99.9%(9 3개) 8.76시간 43.8분 10.1분
99.99%(9 4개) 52.56분 4분 32초 1분 01초
99.999%(9 5개) 5분 26초 25.9초 6.05초
99.9999%(9 6개) 31.5초 2.59초 0.605초
99.99999%(99초) 3.15초 0.259초 0.0605초

위 표에서 볼 수 있듯이 가용성 비율을 사용하여 시스템의 안정성을 판단할 수 있습니다. 일반적으로 트래픽이 많은 시스템은 사용자에게 영향을 미치지 않도록 가용성 비율이 100%에 가까워지기를 원합니다.

유용성 요인

다음은 가용성에 영향을 미칠 수 있는 몇 가지 요소입니다.

  • 하드웨어 오류
  • 소프트웨어 오류
  • 네트워크 문제
  • 인간의 실수
  • 자연 재해

시스템 서비스 회사는 일반적으로 가용성을 향상하기 위해 다음과 같은 다양한 조치를 취합니다.

  • 정기적인 유지보수 및 테스트 수행
  • 재해 복구 계획 구현

신뢰할 수 있음

신뢰성은 서비스가 지정된 시간 내에 해당 기능을 수행하는 속도이며, 여기서 신뢰성 지표는 다양한 운영 조건에서 시스템 서비스의 성능을 측정합니다.

우리는 신뢰성을 측정하기 위해 종종 "MTBF(Mean Between Failures)"와 "MTTR(Mean Time to Repair)"을 사용합니다.

MTBF = 총 오류 수/총 경과 시간 – 오류 합계

MTTR = 총 수리 횟수/총 유지 보수 시간

(우리는 더 높은 MTBF 값과 더 낮은 MTTR 값을 추구합니다.)

신뢰성과 가용성

안정성과 가용성은 매우 비슷해 보이지만 실제로는 서로 다른 개념입니다. 신뢰성(Reliability)과 가용성(Availability)은 시스템 서비스가 합의된 SLO(서비스 수준 목표)를 충족하는지 여부를 측정하는 두 가지 중요한 지표입니다. 가용성은 시간 손실에 중점을 두고, 신뢰성은 오류 빈도에 중점을 둡니다. 가용성과 안정성은 모두 필수입니다. 이 두 가지 지표를 통해 시스템의 안정성을 판단할 수 있습니다.

확장성

확장성은 성능에 영향을 주지 않고 증가하는 작업 부하를 처리할 수 있는 시스템의 능력을 의미합니다. 예를 들어 비디오 플랫폼은 점점 늘어나는 사용자 수와 비디오 다운로드 및 재생을 처리할 수 있어야 합니다.

워크로드는 다음을 포함하여 다양한 유형이 될 수 있습니다.

  • 요청 워크로드: 시스템이 처리하는 요청 수입니다.
  • 데이터/스토리지 워크로드: 시스템에 저장되는 데이터의 양입니다.

치수

확장성의 차원은 다양합니다.

  • 크기 확장성: 확장성은 시스템에 더 많은 사용자와 데이터를 추가할 수 있음을 의미합니다.
  • 관리 확장성: 관리 확장성은 점점 더 많은 사용자가 쉽게 공유할 수 있는 단일 분산 시스템의 능력을 의미합니다.
  • 지리적 확장성: 지리적 확장성은 성능 제약에도 불구하고 프로그램이 다른 지역에 얼마나 쉽게 서비스를 제공할 수 있는지를 나타냅니다. 직설적으로 말하면 시스템은 성능에 큰 영향을 주지 않고 다양한 국가와 시간대에서 사용할 수 있습니다.

다양한 확장성

우리는 일반적으로 확장성을 언급하는데, 이는 두 가지 유형으로 나눌 수 있습니다.

수직적 확장 \ 확장

수직적 확장은 확장을 위해 더 많은 CPU나 RAM을 제공하는 등 기존 서버 장비를 업그레이드하는 것을 의미합니다. 수직 확장을 통해 서버의 메모리 용량과 성능을 확장할 수 있지만, 컴퓨터 업그레이드에는 여전히 상한선이 있으며, 장비를 무한히 업그레이드할 수 있는 방법은 없으며 일반적으로 수직 확장 비용이 매우 높습니다.

수평적 확장 \ 수평 확장

수평적 확장은 네트워크 연결을 통해 서버 수가 늘어나는 것을 말한다. 직설적으로 말하면, 시스템을 확장해야 한다면 계속해서 서버 수를 늘리고 네트워크를 통해 연결과 전송을 수행하면 비용이 상대적으로 저렴하다는 장점이 있습니다.

유지 관리성

소프트웨어 시스템을 구축하는 것 외에도 시스템을 유지 관리해야 합니다. 이러한 유지 관리 가능성은 시스템이 오류를 수정하고, 새로운 기능을 추가하고, 시스템 플랫폼을 최신 상태로 유지하고, 시스템의 정상적인 작동을 유지하기 위해 원활한 시스템 작동을 보장할 수 있음을 의미합니다.

유지보수성의 개념은 세 가지 기본 측면으로 더 세분화될 수 있습니다.

  1. 운용성(Operability): 시스템이 정상적인 상황에서 원활하게 작동하고, 장애 발생 시 정상 상태로 복구될 수 있음을 보장하는 어려움을 말합니다.
  2. 명료성(Lucidity): 코드의 복잡성을 나타냅니다. 시스템의 코드가 더 간결하고 명확할수록 이해하고 유지 관리하기가 더 쉬워지며, 그 반대도 마찬가지입니다.
  3. 수정 가능성: 새로운 기능과 수정된 기능을 쉽게 통합할 수 있는 시스템의 능력을 나타냅니다.

유지보수성(Maintainability)을 측정하는 방법

유지 관리 가능성은 서비스가 오류 발생 후 지정된 기간 내에 기능을 다시 시작할 확률입니다. 또한 서비스를 얼마나 쉽고 빠르게 정상 작동 조건으로 복원할 수 있는지 측정하는 유지 관리 지표를 사용할 수도 있습니다.

예를 들어, 30분 안에 95% 시스템 요소의 서비스 가능성을 고려하십시오. 이 경우 시스템 구성 요소가 30분 이내에 완전히 정상 상태로 돌아올 확률은 0.95입니다. 우리는 M의 척도로 MTTR(평균 수리 시간)을 사용합니다.

MTTR = 총 수리 횟수/총 유지 보수 시간

즉, MTTR은 고장난 구성요소를 수리하고 복원하는 데 걸리는 평균 시간입니다. 우리의 목표는 MTTR의 가치를 낮추는 것입니다.

결함 허용

내결함성이란 무엇입니까?

대규모 실제 애플리케이션에는 일반적으로 수십억 명의 사용자의 요청을 받아들이고 대량의 데이터를 저장하는 수백 개의 서버와 데이터베이스가 있습니다. 또한 이러한 애플리케이션에는 데이터 보안을 보장하고 단일 장애 지점을 방지하여 집중적인 프로그램을 다시 실행할 필요를 방지하는 메커니즘이 필요합니다.

내결함성은 하나 이상의 시스템 구성 요소에 장애가 발생하더라도 시스템이 계속 실행되는 능력을 나타냅니다. 여기서 시스템 구성 요소는 소프트웨어일 수도 있고 하드웨어일 수도 있지만 실제로는 완전한 내결함성 소프트웨어 시스템을 설계하는 것이 매우 어렵습니다.

내결함성 기술

하드웨어나 소프트웨어에 장애가 발생하면 결국 데이터에 영향을 미치게 됩니다. 내결함성은 다양한 기술과 방법을 통해 달성할 수 있지만 여전히 시스템 구조에 따라 다릅니다.

  • 복제: 이는 가장 널리 사용되는 내결함성 기술 중 하나입니다. 이 기술은 특히 데이터베이스에도 사용됩니다. 시스템의 개인 서버에 오류가 발생하면 해당 시스템에 또 다른 오류가 발생하더라도 자동으로 변환됩니다. 에 의해.
  • 체크포인팅(Checkpointing): 체크포인팅은 오류나 서비스 장애가 발생할 경우 향후 빠른 점검을 용이하게 하기 위해 시스템 상태를 데이터베이스에 백업하는 방법입니다. 분산 시스템에 장애가 발생하면 엔지니어가 이를 수리할 수 있도록 이전 체크포인트에서 현재 데이터를 얻을 수 있습니다.

결론

이 기사에서는 시스템 가용성(Availability), 신뢰성(Reliability), 확장성(Scalability), 유지 관리 가능성(Maintainability) 및 내결함성(Fault Tolerance)과 같은 중요한 개념에 대해 설명합니다.

  1. 유효성(유효성)사용자에게 시스템의 가용성을 나타냅니다.
  2. 신뢰할 수 있음(신뢰할 수 있음)시스템 오류 가능성을 나타냅니다.
  3. 확장성(확장성)작업 부하를 처리하는 시스템의 능력을 나타냅니다.
  4. 유지보수성(유지보수성)시스템 유지 관리의 용이성을 나타냅니다.
  5. 결함 허용(결함 허용)오류를 견딜 수 있는 시스템의 능력을 나타냅니다.

이러한 개념을 이해하고 적절한 기술을 채택하면 개발자가 보다 안정적이고 효율적이며 사용하기 쉬운 시스템을 구축하는 데 도움이 될 수 있습니다.

다음은 시스템 가용성, 안정성, 확장성, 유지 관리성 및 내결함성을 개선하기 위한 몇 가지 제안 사항입니다.

  • 중복 설계 채택: 여러 시스템 요소 또는 노드를 사용하여 시스템 내결함성을 향상시킵니다.
  • 정기적인 유지 관리를 수행합니다. 장애를 방지하기 위해 시스템을 정기적으로 점검하고 업데이트합니다.
  • 확장 가능한 아키텍처를 사용합니다. 증가하는 사용자 요구 사항이나 데이터 볼륨에 맞게 쉽게 확장할 수 있는 시스템을 설계합니다.
  • 입증된 기술 사용: 입증되고 신뢰할 수 있는 기술을 사용하여 시스템 안정성을 향상시킵니다.
  • 철저한 테스트를 위해: 잠재적인 문제를 식별하고 해결하려면 시스템을 배포하기 전에 철저하게 테스트하십시오.

코멘트를 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

ko_KR한국어