Yunseok's Dev Blog

배운 것을 적는 블로그입니다.

데이터 중심 애플리케이션 설계 서평

오늘날 많은 애플리케이션은 계산 중심과는 다르게 데이터 중심적이다. 이 말은 애플리케이션의 성능이 CPU에 달린게 아니라 데이터의 양, 복잡도, 변화 속도가 더 중요하다는 의미다. 그래서 이 데이터를 어떻게 처리하는지에 따라서 우리의 다음과 같은 구성 요소들을 고민하며 아키텍처가 달라져야 한다.

  • 데이터를 어떻게 저장할지 (데이터 베이스)
  • 데이터 접근의 성능을 어떻게 개선할지 (캐시)
  • 데이터를 어떻게 더 효율적으로 검색할 수 있게 할지(검색 색인)
  • 데이터를 얼마나 더 지연 없이 처리를 할 수 있을지(스트림)
  • 저장된 데이터를 어떻게 분석할지(일괄 처리)

그래서 애플리케이션을 만들 때 어떤 도구와 어떤 접근 방식이 수행 중인 작업에 가장 적합한지 고민하고 선택할 수 있어야 한다.

이 책은 각 단계에서 생길 수 있는 문제점을 알려주고, 대안을 제시해 주어 어떤 기준으로 적절한 도구를 선택해야 하는지 알려주고 있다.

인상 깊었던 것

시스템에 결함이 없도록 하는 것은 불가능하다. 결함이 발생해도 장애가 발생하지 않게끔 내결함성 구조를 설계하는 것이 가장 좋다.

트위터 사례를 보면 하나의 아키텍처로 모든 경우가 만족되도록 할 수는 없다는 것을 볼 수 있었다.

데이터가 코드보다 더 오래 산다

복잡한 애플리케이션에서는 데이터를 여러 가지 방법으로 사용한다. 데이터를 사용하는 모든 다른 상황에 적합한 소프트웨어가 있을 가능성은 낮다. 그래서 원하는 애플리케이션 기능을 제공하기 위해서는 반드시 여러 소프트웨어를 함께 엮어 사용해야 한다.

배운 것

  • 단일 시스템에서는 별로 문제가 되지 않는 것들이 분산 시스템에서는 문제가 된다. 이 분산 시스템에서 충족시킬 수 없는 한계가 존재하고 이를 보완하려면 상당히 어려워서 적절한 대안이 필요하다.
  • 분산 시스템에서 데이터를 같은 상태를 유지하는 것은 상당히 어려운 일이라는 것을 배웠다.

할 수 있게 된 것

  • 상황에 맞는 적절한 도구를 고민할 수 있다.
  • 분산된 환경에서 어떤 문제가 발생할 수 있는지 알 수 있다.

더 해볼 것

  • 데이터 처리 쪽은 내가 겪어보지 못했던 세상이었다. 이번 기회에 공부해 보았는데 이 분야만 해도 공부할게 엄청 넘쳐나는 새로운 세상이 있었다. 앞으로도 이런 세상이 더 많이 있다는 것을 의식적으로 고민해 보고, 내가 모르는 세상에 대해서 더 탐구해 봐야겠다.
  • Vitess, ClickHouse, Apache Flink 새롭게 알게 된 기술들에 대해서도 알게 됐다. 어딘가에서는 이러한 기술들을 굉장히 활발하게 사용하고 연구하고 있다는 사실도 알게 되었다. 새롭게 알게 된 기술들도 탐구해 봐야겠다

Sources