INFRA study (2)

jw·2024년 1월 21일

공부

목록 보기
3/13
post-thumbnail

기능 & 비기능 요구사항

이 개념은 정보처리기사 공부를 할 당시, 예전 인턴을 떠올리며.. 기억에 남았던 개념이다.

간단하게 짚어보자.

기능 요구사항

기능 요구사항은 시스템이나 소프트웨어가 수행해야 하는 특정 기능이나 작업을 말한다. 시스템의 기능적인 측면에 대한 명세.

만약, SI에 외주를 맡기는 상황이라면, 업체에 이런거 해주세요~ 하는 것들이 주로 기능 요구사항이 될 것 이다.

ex) 사용자 인증 - 사용자는 아이디와 비밀번호를 사용하여 시스템에 로그인 할 수 있어야함.

비기능 요구사항

비기능 요구사항은 시스템이나 소프트웨어의 품질, 성능, 보안, 사용성 등과 관련된 요구사항으로, 시스템이 어떻게 동작해야 하는지에 대한 특성을 기술.

주로 인프라 엔지니어가 다루는, 실제로 기술적인 부분에 대한 명세를 뜻함.

ex) 보안 - 사용자 데이터는 암호화되어 저장되어야 하며, 시스템은 보안 취약점에 대한 적절한 대응을 해야함.

실제 현업에서는 해당 과정이 굉장히 중요하다고 한다. 본인도 실제로 이 요구사항들을 서로 맞추는 과정에서 소통의 중요성을.. 깨달은 경험이 있기 때문에..

이외에도 비기능 요구사항 항목들은 다양하다.

가용성

가용성이란 시스템에서 서비스를 지속적으로 이용할 수 있는 요구사항.
시스템의 신뢰성을 의미.

연속성

  • 시스템 가동률을 정의
  • 가동률이란? '서비스를 제공해야 하는 시간' 중 '실제로 서비스를 이용할 수 있었던 시간'의 비율

내결함성

내결함성은 시스템 장애의 내성에 대한 요구사항으로, 서버, 단말기, 네트워크 장비와 구성 요소등을 어느 수준에서 이중화할지, 백업과 그 복원 대상의 범위는 어디까지 할지 등을 검토

성능

성능이란 서비스를 제공할 때 시스템에서 리소스를 효율적으로 사용할 수 있는지를 나타내는 것

응답 시간

  • 서비스를 요청한 후 받을 때까지 걸린 시간

스루풋

  • 단일 시간 처리량

성능 요구 사항이 불명확하면, cpu나 메모리 등의 리소스가 부족하여 업무 처리가 늦어져서 전혀 사용할 수 없는 시스템이 될 수 있다. 하지만, 필요 이상의 리소스를 가진 거대한 서버를 준비하고 극히 일부 리소스만 사용하는 경우, 반대로 불필요한 투자로 이어지는 상황도 발생할 수 있다.
특히 시스템 이용이 피크일 때 이러한 요구사항들을 충분히 검토해야 한다.

확장성

확장성이란 시스템이 가동을 시작한 후 시스템 리소스가 부족할 때를 대비한 대책으로, 주로 두가지 구현 방법이 있다.

스케일업 & 스케일아웃

스케일업은 메모리, cpu 등 리소스를 더 큰 것으로 교체하는 것
스케일아웃은 서버 장비 자체를 증설하여 리소스를 강화하는 것

스케일업과 스케일아웃의 경우, 어느쪽이 정답이라고 말하기 굉장히 어려울 것 같다.
미래는 알 수 없기에.. 동시 사용자 수, 데이터의 양, 배치 처리 건수 등을 잘 확인, 분석하여 대책을 세우는 것이 그나마 정답이라고 할 수 있겠다.

운영 및 유지보수성

운영 및 유지보수성에서는 시스템을 안정적으로 가동하는 것을 목적으로 시스템 운영과 유지보수 서비스에 대한 요구사항을 정의

마이그레이션 (이후 글에서 다룰 예정)

보안 (이후 글에서 다룰 예정)


RPO & RTO (비기능 요구사항 - 회복성)

백업 관련 용어인 rpo(Recovery Point Objective)와 rto(Recovery Time Objective)는 비즈니스 연속성 및 재해 복구 전략에서 중요한 개념이다.

RPO

  • 의미
    rpo는 시스템이나 서비스가 중단되기 직전까지의 데이터 손실을 나타낸다. 즉, 중단 이전까지의 데이터를 얼마나 복구해야 하는지를 정의.

ex) RPO가 1시간인 경우, 장애가 발생한 시점까지의 최신 백업 데이터가 복구되어야 합니다. 이는 시스템이나 데이터베이스의 변경 사항이 발생한 후 1시간 내에 복구되어야 함을 의미합니다.

RTO

  • 의미
    rto는 시스템이나 서비스를 복구하는데 걸리는 최대 시간을 나타낸다. 즉, 서비스가 중단된 경우 원래 운영 상태로 복구되기까지의 시간을 정의.

ex) RTO가 4시간인 경우, 장애가 발생한 후 4시간 이내에 시스템이나 서비스가 다시 가동되어야 합니다.

관계

위의 사진을 보면 알겠지만, 더 짧은 rpo를 가지면 데이터 손실이 적어진다. 하지만, 비용이 더 많이 들고, 더 복잡한 백업 솔루션을 사용해야 한다. 그리고 rto가 짧을수록 중단시간은 감소하지만, 이 역시 마찬가지로 더 빠르고 효율적인 복구 절차가 갖추어져 있어야한다.

이러한 백업 시스템을 갖추는건 비용 문제와 직결되기 때문에, 기업의 비즈니스 요구사항, 서비스 중요도 등을 고려하여 전략을 세워야한다.


운영 & 유지보수 차이 (비기능 요구사항)

둘 다 어느정도 표면적인 느낌은 알고있지만, 정확한 차이가 알고싶어 찾아봤다. GPT가 설명을 너무 잘 해준 것 같아서, 그대로 가져왔다.

운영 (Operation 또는 Operation Phase)

  • 목적: 시스템이나 소프트웨어를 실제 운용하고, 사용자에게 서비스를 제공하는 것이 목적입니다.

  • 활동:

  1. 시스템 운영 및 모니터링: 시스템을 지속적으로 운영하고, 성능을 모니터링하여 사용자에게 안정적인 서비스를 제공합니다.

  2. 사용자 지원 및 문제 해결: 사용자의 요청이나 문제에 대응하고, 서비스의 원활한 이용을 지원합니다.

  3. 성능 최적화: 시스템의 성능을 모니터링하고 최적화하여 사용자에게 효과적이고 빠른 서비스를 제공합니다.

유지보수 (Maintenance 또는 Maintenance Phase)

  • 목적: 시스템이나 소프트웨어를 현재 상태로 유지하고, 변경 또는 개선을 수행하여 기능 추가, 버그 수정, 보안 업데이트 등을 제공합니다.

  • 활동:

  1. 버그 수정: 사용자가 신고한 버그를 수정하거나, 시스템에서 발견된 문제를 해결합니다.

  2. 기능 개선 및 업그레이드: 새로운 기능을 추가하거나, 기존의 기능을 향상시키는 작업을 수행합니다.

  3. 보안 패치 및 업데이트: 보안 취약점을 해결하고, 시스템의 보안성을 유지하기 위한 업데이트를 수행합니다.

차이점

목적의 차이: 운영은 시스템을 안정적으로 운용하고 사용자에게 서비스를 제공하는 것을 목적으로 하며, 유지보수는 시스템을 현재 상태로 유지하고 개선하여 기능을 업데이트하는 것을 목적으로 합니다.

활동의 차이: 운영은 주로 시스템의 실제 운용 및 모니터링에 중점을 두며, 유지보수는 버그 수정, 기능 개선, 업그레이드 등을 수행합니다.

주기적 성격의 차이: 운영은 지속적이고 주기적인 활동이며, 유지보수는 주로 필요에 따라 이루어지는 반응적인 활동입니다.

두 단계는 협력하여 소프트웨어나 시스템의 수명 주기 전반을 관리합니다.

ex) 실패 사례
야간에 업무를 배치하는 처리 시간이 예상보다 더 많이 필요해서 야간 백업을 매일 수행할 수 없다는 것을 확인했다. 그래서 매일이 아닌 한 달에 한 번만 백업을 진행했다. 이 때문에 시스템에 장애가 발생했을 때 복구 목표 시점(rpo)은 24시간 이내가 아닌 1개월 이내로 변경되었고, 데이터 손실 분량은 더 커져서 리스크가 확대되는 것을 허용할 수밖에 없었다.

profile
『Infra Engineering』

0개의 댓글