본문 바로가기
데이터베이스

분산 환경에서 고려해야할 것들

by 흰색남자 2022. 9. 20.

https://d2.naver.com/helloworld/206816

 

 

  • 가용성(Availability): 웹 사이트의 가용성은 많은 회사의 명성과 기능에 절대적으로 중요한 것이다. 예를 들어 Amazon.com과 같은 온라인 마켓 사이트에서 몇 분간 서비스가 제대로 동작하지 않으면, 회사는 수천 혹은 수만 달러의 손실을 입게 된다. 따라서 항상 가용적이고 장애에 유연한 아키텍처를 가지는 것은 가장 기본적인 비즈니스 요구사항이라 할 수 있다. 분산 시스템에서 높은 가용성을 얻기 위해, 중요한 컴포넌트의 이중화와 실패가 발생했을 경우에 대한 빠른 복구 방법, 문제가 발생할 때 일부만으로 동작할 수 있게 해 전면 장애가 발생하지 않게 하는 구성(graceful degradation)에 대한 고려가 필요하다.
  • 성능(Performance): 대부분의 웹 사이트에서 성능은 매우 중요한 고려사항이다. 웹 사이트의 속도는 사용성, 만족도 뿐 아니라 수익 및 유지에 직접적으로 연관이 있는 검색 엔진의 랭킹에도 중요한 영향을 미친다. 결과적으로 빠른 응답 시간과 낮은 레이턴시를 위해서 최적화된 시스템을 만드는 것은 중요하다.
  • 신뢰성(Reliability): 항상 똑같은 요청에는 똑같은 결과를 제공해야 한다. 시스템이 항상 정상적으로 동작해야 한다는 말이다. 데이터가 변하거나 업데이트되고 나면 업데이트된 새로운 데이터를 반환해야 한다. 어떤 데이터가 시스템에 저장된 이후 사용자가 해당 데이터를 검색할 때 항상 그 결과가 반환된다는 것을 사용자들이 알게 할 필요가 있다.
  • 확장성(Scalability): 대규모의 분산 시스템에서라면 규모 자체는 확장성에서 고려해야 할 하나의 측면에 불과하다. 중요한 것은 더 많은 부하를 처리할 수 있도록 처리량을 증가시키기 위해 필요한 노력이다. 시스템의 확장성이란 시스템의 여러 특징이나 기능/비기능 한계 상황으로 설명될 수 있다. 예를 들어 얼마나 많은 추가적인 트래픽을 처리할 수 있는지, 저장 공간을 추가하기가 얼마나 쉬운지, 얼마나 더 많은 트랜잭션을 처리할 있는지와 같은 것들 말이다.
  • 관리성(Manageability): 쉽게 운용할 수 있는 시스템을 설계하는 것은 또 다른 중요한 고려 사항이다. 시스템의 관리성이란 운용(유지와 업데이트)의 확장성과 같은 말이다. 관리성이 좋아지려면 문제 발생 시 분석이 용이해야 하며 문제를 이해하기 쉬워야 한다. 그리고 업데이트와 수정, 시스템 운용 자체가 쉬워야 한다(주기적으로 하는 일을 실패나 예외 없이 수행할 수 있다면 얼마나 좋을까?).
  • 비용(Cost): 비용은 중요한 요소다. 비용은 물론 하드웨어와 소프트웨어 비용을 포함하지만, 시스템을 배포하고 관리하는 비용 또한 중요하게 고려해야 한다. 이러한 비용에는 시스템이 빌드하는 데 걸리는 시간, 시스템을 실행시키는 데 드는 운용 노력의 양, 모든 고려해야 할 사항에 대해서 필요한 교육 비용까지 포함된다. 즉 비용은 시스템 소유에 필요한 모든 비용이다.