본문 바로가기
Books

데이터 중심 애플리케이션 설계 1장

by kyoungsun 2022. 1. 9.

책표지

데이터 중심 애플리케이션 설계를 읽고 정리한 내용입니다.

신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션이란?

신뢰성

  • 결함이 발생해도 시스템이 올바르게 동작하게 만든다는 의미
  • 잘못될 수 있는 일을 결함이라고 하고 그 원인에는 하드웨어 결함, 소프트웨어 오류, 인적 오류가 존재함
  • 결함을 예측하고 대처할 수 있는 시스템을 내결함성 또는 탄력성을 지녔다고 말함
  • 신뢰성은 원자력 발전소나 항공 교통 관제 소프트웨어 뿐만 아니라 더 일상적인 시스템에서도 필요함
    • 매출의 손실을 발생시키고 사용자들로부터 신뢰를 잃을 수 있기 때문임

확장성

  • 부하가 증가해도 좋은 성능을 유지하기 위한 전략을 의미
  • 부하는 부하 매개변수라 부르는 몇 개의 숫자로 나타낼 수 있음
  • 가장 적합한 부하 매개변수 선택은 시스템 설계에 따라 달라짐
    • 웹 서버의 초당 요청 수, 데이터베이스의 읽기 대 쓰기 비율, 대화방의 동시 활성 사용자, 캐시 적중률 등이 될 수 있음
    • 평균적인 경우가 중요할 수도 있고 소수의 극단적인 경우가 병목 현상의 원인일 수도 있음
  • 부하를 정의하고 나면 시스템 성능을 측정할 수 있음
    • 하둡(Hadoop) 같은 일괄 처리 시스템은 보통 처리량(throughput)(초당 처리할 수 있는 레코드 수나 일정 크기의 데이터 집합으로 작업을 수행할 때 걸리는 전체 시간)에 관심을 가짐
    • 온라인 시스템에서는 응답 시간(response time)이 더 중요함

유지보수성

  • 소프트웨어 비용의 대부분은 초기 개발이 아니라 유지보수에 들어감
  • 유지보수 중 고통을 최소화하고 레거시 소프트웨어를 만들지 않으려면 운용성, 단순성, 발전성을 고려하여 시스템을 설계하는 것이 필요함
  • 운용성
    • 시스템의 건강상태를 잘 관찰할 수 있고 시스템을 효율적으로 관리하는 방법을 보유해야함
  • 단순성
    • 시스템에서 복잡도를 최대한 제거해 새로운 엔지니어가 시스템을 이해하기 쉽게 만들어야함
    • 복잡도를 줄이는 최상의 도구는 추상화로 깔끔하고 직관적인 외관 아래로 많은 세부 구혐을 숨길 수 있음
  • 발전성
    • 엔지니어가 이후에 시스템을 쉽게 변경할 수 있게 만들어야함

댓글