Skip to Content
데이터 집약적 애플리케이션 설계
book

데이터 집약적 애플리케이션 설계

by Martin Kleppmann
May 2025
Beginner to intermediate
616 pages
10h 32m
Korean
O'Reilly Media, Inc.
Book available
Content preview from 데이터 집약적 애플리케이션 설계

4장. 인코딩과 진화

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

모든 것이 변하고 멈춰 있는 것은 없습니다.

플라톤이 《크라틸로스》에서 인용한 에페소스의 헤라클레이토스(기원전 360년)

애플리케이션은 시간이 지남에 따라 필연적으로 변화합니다. 새로운 제품이 출시되거나, 사용자 요구사항이 더 잘 이해되거나, 비즈니스 환경이 변화함에 따라 기능이 추가되거나 수정됩니다.1장에서는 변화에 쉽게 적응할 수 있는 시스템을 구축하는 것을 목표로 해야 한다는 진화 가능성의 개념을 소개했습니다( "진화 가능성: 변화를 쉽게 만들기" 참조).

대부분의 경우 애플리케이션의 기능을 변경하려면 저장하는 데이터도 변경해야 하는데, 새로운 필드나 레코드 유형을 캡처해야 하거나 기존 데이터를 새로운 방식으로 표시해야 할 수도 있습니다.

2장에서 설명한 데이터 모델은 이러한 변화에 대처하는 방식이 다릅니다. 관계형 데이터베이스는 일반적으로 데이터베이스의 모든 데이터가 하나의 스키마를 준수한다고 가정합니다. 스키마 마이그레이션(예: ALTER 문)을 통해 스키마를 변경할 수는 있지만 어느 한 시점에 정확히 하나의 스키마가 적용된다고 가정합니다. 이와 대조적으로, 스키마 온 리드("스키멀리스") 데이터베이스는 스키마를 적용하지 않으므로 데이터베이스에는 서로 다른 시기에 작성된 이전 데이터 형식과 최신 데이터 형식이 혼합되어 있을 수 있습니다( "문서 모델의 스키마 유연성" 참조).

데이터 형식이나 스키마가 변경되면 애플리케이션 코드도 그에 따라 변경되어야 하는 경우가 많습니다(예: 레코드에 새 필드를 추가하면 애플리케이션 코드가 해당 필드를 읽고 쓰기 시작). 그러나 대규모 애플리케이션에서는 코드 변경이 즉각적으로 이루어지지 않는 경우가 많습니다:

  • 서버 측 애플리케이션의 경우 롤링 업그레이드( 단계적 롤아웃이라고도 함)를 수행하여 한 번에 몇 개의 노드에 새 버전을 배포하고 새 버전이 원활하게 실행되는지 확인한 다음 모든 노드에서 점진적으로 작업할 수 있습니다. 이렇게 하면 서비스 중단 시간 없이 새 버전을 배포할 수 있으므로 더 자주 배포하고 발전성을 향상시킬 수 있습니다.

  • 클라이언트 측 애플리케이션을 사용하면 업데이트를 한동안 설치하지 않을 수도 있는 사용자의 마음대로 할 수 있습니다.

즉, 이전 버전과 새 버전의 코드, 이전 데이터 형식과 새 데이터 형식이 동시에 시스템에 공존할 수 있습니다. 시스템이 계속 원활하게 작동하려면 양방향으로 호환성을 유지해야 합니다:

이전 버전과의 호환성

최신 코드는 이전 코드에서 작성한 데이터를 읽을 수 있습니다.

이전 버전과의 호환성

이전 코드는 최신 코드에서 작성한 데이터를 읽을 수 있습니다.

이전 버전과의 호환성은 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

머신러닝 시스템 설계

머신러닝 시스템 설계

칩 후옌
견고한 데이터 엔지니어링

견고한 데이터 엔지니어링

조 라이스, 맷 하우슬리

Publisher Resources

ISBN: 9798341653504Supplemental Content