서문
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
최근 몇 년간 소프트웨어 엔지니어링, 특히 서버 측 및 백엔드 시스템 분야에서 일했다면 데이터 저장 및 처리와 관련된 수많은 유행어를 접해 보셨을 것입니다. NoSQL! 빅 데이터! 웹 스케일! 샤딩! 궁극적인 일관성! ACID! CAP 정리! Cloud 서비스! MapReduce! 리얼타임!
지난 10년 동안 우리는 데이터베이스, 분산 시스템, 그리고 그 위에 애플리케이션을 구축하는 방식에서 많은 흥미로운 발전을 목격했습니다. 이러한 발전의 원동력에는 여러 가지가 있습니다:
-
구글, 마이크로소프트, 아마존, 페이스북, 링크드인, 넷플릭스, 트위터와 같은 인터넷 기업들은 엄청난 양의 데이터와 트래픽을 처리하고 있으며, 이러한 규모를 효율적으로 처리할 수 있는 새로운 도구를 만들어야만 했습니다.
-
기업은 개발 주기를 짧게 유지하고 데이터 모델을 유연하게 유지하여 민첩하게 가설을 테스트하고 새로운 시장 인사이트에 신속하게 대응할 수 있어야 합니다.
-
무료 오픈 소스 소프트웨어는 많은 환경에서 상용 또는 맞춤형 사내 소프트웨어보다 선호되고 있으며 매우 성공적으로 자리 잡았습니다.
-
CPU 클럭 속도는 거의 증가하지 않고 있지만 멀티코어 프로세서는 표준이 되었고 네트워크는 점점 더 빨라지고 있습니다. 이는 병렬 처리가 증가할 수밖에 없음을 의미합니다.
-
소규모 팀으로 작업하는 경우에도 이제 Amazon Web Services와 같은 서비스형 인프라(IaaS) 덕분에 여러 컴퓨터와 여러 지역에 분산된 시스템을 구축할 수 있습니다.
-
이제 많은 서비스가 고가용성을 기대하며, 가동 중단이나 유지보수로 인한 장시간의 다운타임은 점점 더 용납할 수 없는 일이 되고 있습니다.
데이터 집약적인 애플리케이션은 이러한 기술 발전을 활용하여 가능성의 한계를 뛰어넘고 있습니다. 데이터의 양, 데이터의 복잡성, 데이터의 변화 속도 등 데이터가 주요 과제인 애플리케이션을 데이터 집약적이라고 부르는 반면, CPU 사이클이 병목 현상인 컴퓨팅 집약적 애플리케이션은 데이터 집약적이라고 부릅니다.
데이터 집약적인 애플리케이션이 데이터를 저장하고 처리하는 데 도움이 되는 도구와 기술은 이러한 변화에 빠르게 적응해 왔습니다. 새로운 유형의 데이터베이스 시스템("NoSQL")이 많은 관심을 받고 있지만 메시지 큐, 캐시, 검색 인덱스, 배치 및 스트림 처리를 위한 프레임워크와 관련 기술도 매우 중요합니다. 많은 애플리케이션이 이 중 일부를 조합하여 사용합니다.
이 공간을 가득 채우고 있는 유행어는 새로운 가능성에 대한 열정의 표시이며, 이는 좋은 일입니다. 하지만 소프트웨어 엔지니어이자 아키텍트인 우리가 좋은 애플리케이션을 구축하려면 다양한 기술과 그 장단점을 기술적으로 정확하고 정확하게 이해해야 합니다. 이러한 이해를 위해서는 유행어보다 더 깊이 파고들어야 합니다.
다행히도 기술의 급격한 변화 뒤에는 특정 도구의 버전에 관계없이 ...