cleanUrl: /data-intensive/reliable-scalable-and-maintainable-applications
share: true

오늘날의 대부분의 애플리케이션은 계산중심이 아닌 데이터중심적이다. CPU 성능은 성능을 제한하는 요소가 아니고, 문제는 데이터의양, 복잡도, 변화 속도 이다.

<script async src="<https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js>"></script>
<ins class="adsbygoogle"
     style="display:block; width: 100%;"
     data-ad-format="fluid"
     data-ad-layout-key="-fb+5w+4e-db+86"
     data-ad-client="pub-8946038251809377"
     data-ad-slot="5490836264"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>

많은 app은 다음의 기능을 필요로 한다.

많은 생각 없이 application 을 만들 수 있는 이유는 데이터 시스템이 충분히 추상화가 되어있기 때문이다.

하지만, 간단한 일이 아니다. application 의 요구사항은 다르고 각 시스템마다 다양한 특성을 가지고 있기 때문에 어떤 도구어떤 접근 방식이 수행중인 작업에 적합한지 생각해야 한다.

이 책은 시스템의 원칙실용성, 그리고 이를 활용한 데이터 중심 애플리케이션을 개발하는 방법을 담고있다.

신뢰할 수 있고, 확장 가능하며, 유지보수하기 쉽게 만들기 위한 기초적인 노력을 먼저 살펴본다.

<script async src="<https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js>"></script>
<ins class="adsbygoogle"
     style="display:block; width: 100%;"
     data-ad-format="fluid"
     data-ad-layout-key="-fb+5w+4e-db+86"
     data-ad-client="pub-8946038251809377"
     data-ad-slot="5490836264"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>

데이터 시스템에 대한 생각 (Thinking About Data Systems)

DB, queue, cache 등 매우 다른 범주에 속하는 도구이지만, 각각은 다른 접근 패턴을 가지고 있으면서도 그 경계가 조금씩 허물어지고 있다.

점점 application 은 단일 도구로 데이터 처리와 저장을 모두 만족시킬 수 없다. 대신에 작업(work)을 하나의 도구에 효율적으로 수행할 수 있는 task 로 쪼개고, 그 각 도구들을 application code 를 이용해 연결한다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f19b6692-2072-4a65-9a41-1bd5f0c5bf1f/Screen_Shot_2021-03-22_at_23.46.15.png

다양한 구성요소를 결합한 데이터 시스템의 예