분산 시스템은 서로 다른 시스템에 위치한 독립적인 구성 요소 및 시스템의 모음으로, 단일 유닛으로 작동하기 위해 통신합니다.
이 전체 소개에서 분산 시스템의 작동 방식과 몇 가지 실제 사례, 기본 아키텍처, 장단점 그리고 실시간 분산 스트리밍을 위한 일반적인 솔루션에 대해 알아보세요.
Apache Kafka의 최초 개발자들이 설립한 Confluent는 120개 이상의 데이터 소스를 연결하는 실시간 데이터 통합, 처리 및 분석 기능을 제공하는 완벽한 데이터 스트리밍 플랫폼입니다.
분산 컴퓨팅 및 분산 데이터베이스라고도 하는 분산 시스템은 공통의 목표를 달성하기 위해 서로 메시지를 공유하는 서로 다른 시스템에 위치한 독립적인 구성 요소의 모음입니다.
따라서 분산 시스템은 최종 사용자에게 하나의 인터페이스나 컴퓨터처럼 보입니다. 희망적인 부분은 하나의 시스템에서 장애가 발생하더라도 시스템이 함께 리소스와 정보를 극대화하면서 서비스 가용성에 영향을 미치지 않는다는 점입니다.
오늘날 데이터는 그 어느 때보다 더 많이 분산되어 있으며, 최신 애플리케이션은 더 이상 격리된 상태로 실행되지 않습니다. 대부분의 제품과 애플리케이션은 분산 시스템에 의존합니다.
분산 컴퓨팅의 가장 중요한 기능:
최신 분산 시스템은 동일한 물리적 머신에서 실행할 수 있지만 서로 메시지를 주고받으며 상호 작용하는 자율 프로세스를 포함하도록 발전했습니다.
네트워크
분산 시스템의 초기 사례는 이더넷이 발명되고 LAN(근거리 통신망)이 개발된 1970년대에 발생했습니다. 처음으로 컴퓨터에서 로컬 IP 주소를 사용하여 다른 시스템에 메시지를 보낼 수 있게 되었습니다. P2P 네트워크는 발전했고 이메일과 인터넷은 우리가 알고 있듯이 가장 크고 지속적으로 성장하는 분산 시스템의 예가 되고 있습니다. 인터넷이 IPv4에서 IPv6로 변화하면서 분산 시스템은 'LAN' 기반에서 '인터넷' 기반으로 진화했습니다.
통신 네트워크
전화와 셀룰러 네트워크도 분산 네트워크의 예입니다. 전화 네트워크는 100년 넘게 존재해 왔으며 초기의 P2P 네트워크의 사례로 시작되었습니다. 셀룰러 네트워크는 기지국이 셀이라는 영역에 물리적으로 분산되어 있는 분산 네트워크입니다. 전화 네트워크가 VOIP(Voice over IP)로 발전하면서 분산 네트워크로서의 복잡성도 계속 증가하고 있습니다.
분산 실시간 시스템
많은 업계에서는 지역 및 전 세계에 분산된 실시간 시스템을 사용합니다. 항공사는 항공 관제 시스템을, Uber와 Lyft는 배차 시스템을, 제조 공장은 자동화 제어 시스템을, 물류 및 이커머스 기업은 실시간 추적 시스템을 사용합니다.
병렬 처리
예전에는 병렬 컴퓨팅과 분산 시스템 간에 차이가 있었습니다. 병렬 컴퓨팅은 동일한 데이터와 메모리에 액세스하는 여러 스레드나 프로세서에서 소프트웨어를 실행하는 방법에 중점을 두었습니다. 분산 시스템은 자체 프로세서와 메모리를 갖춘 별도의 시스템을 의미했습니다. 오늘날 최신 운영 체제, 프로세서 및 클라우드 서비스가 등장하면서 분산 컴퓨팅에는 병렬 처리도 포함됩니다.
분산형 인공 지능
분산형 인공 지능은 대규모 컴퓨팅 파워와 병렬 처리를 사용하여 다중 에이전트를 사용하는 매우 큰 데이터 세트를 학습하고 처리하는 방식입니다.
분산 데이터베이스 시스템
분산 데이터베이스는 여러 서버 및/또는 물리적 위치에 걸쳐 있는 데이터베이스를 말합니다. 데이터는 시스템 전체에서 복제되거나 중복될 수 있습니다.
대부분의 인기 애플리케이션은 분산 데이터베이스를 사용하며 분산 데이터베이스 시스템의 동종 또는 이기종 특성을 알고 있어야 합니다.
동종 분산 데이터베이스는 각 시스템이 동일한 데이터베이스 관리 시스템과 데이터 모델을 가진 데이터베이스를 의미합니다. 새 노드와 위치를 추가하여 성능을 더 쉽게 관리하고 확장할 수 있습니다.
이기종 분산 데이터베이스는 여러 데이터 모델과 다양한 데이터베이스 관리 시스템을 허용합니다. 게이트웨이는 노드 간 데이터를 변환하는 데 사용되며 일반적으로 애플리케이션과 시스템을 병합한 결과로 발생합니다.
분산 시스템에는 서로 통신하기 위해 메시지를 전달할 수 있도록 모든 구성 요소(시스템, 하드웨어 또는 소프트웨어)를 서로 연결하는 네트워크가 있어야 합니다.
이를 이해하기 위해 분산 아키텍처의 유형, 장단점을 살펴보겠습니다.
분산 애플리케이션과 프로세스는 일반적으로 다음 네 가지 아키텍처 유형 중 하나를 사용합니다.
클라이언트-서버:
초기에 분산 시스템 아키텍처는 프린터, 데이터베이스 또는 웹 서버와 같이 공유 리소스 역할을 하는 서버로 구성되었습니다. 공유 리소스를 사용할 시기와 사용 및 표시 방법, 데이터 변경 방법, 서버로 다시 보내는 방법을 결정하는 여러 클라이언트(예: 컴퓨터 뒤에 있는 사용자)가 있었습니다. git 등의 코드 리포지토리는 코드 변경 사항을 커밋하는 개발자에게 인텔리전스가 적용되는 좋은 예입니다.
오늘날 분산 시스템 아키텍처는 웹 애플리케이션과 함께 다음과 같이 발전했습니다.
분산 시스템의 궁극적인 목표는 애플리케이션의 확장성, 성능 및 고가용성을 지원하는 것입니다.
포함된 주요 이점:
모든 엔지니어링 결정에는 장단점이 있습니다. 복잡성은 분산 시스템의 가장 큰 단점입니다. 시스템, 메시지, 당사자 간에 전달되는 데이터가 많을 수록 다음과 같은 문제가 발생합니다.
Confluent는 모든 클라우드, 온프레미스 또는 하이브리드 클라우드 환경을 위한 유일한 데이터 스트리밍 플랫폼입니다. 120개 이상의 데이터 소스를 엔터프라이즈급 확장성, 보안, 통합 기능과 연결하여 모든 분산 시스템에서 실시간 가시성을 확보하세요.
30일 무료 평가판을 지금 바로 시작하세요.