Elevating Kafka: Driving operational excellence with Albertsons + Forrester | Watch Webinar

분산 시스템이란?

분산 시스템은 서로 다른 시스템에 위치한 독립적인 구성 요소 및 시스템의 모음으로, 단일 유닛으로 작동하기 위해 통신합니다.

이 전체 소개에서 분산 시스템의 작동 방식과 몇 가지 실제 사례, 기본 아키텍처, 장단점 그리고 실시간 분산 스트리밍을 위한 일반적인 솔루션에 대해 알아보세요.

Apache Kafka의 최초 개발자들이 설립한 Confluent는 120개 이상의 데이터 소스를 연결하는 실시간 데이터 통합, 처리 및 분석 기능을 제공하는 완벽한 데이터 스트리밍 플랫폼입니다.

분산 시스템의 작동 방식

분산 시스템 - 정의

분산 컴퓨팅 및 분산 데이터베이스라고도 하는 분산 시스템은 공통의 목표를 달성하기 위해 서로 메시지를 공유하는 서로 다른 시스템에 위치한 독립적인 구성 요소의 모음입니다.

따라서 분산 시스템은 최종 사용자에게 하나의 인터페이스나 컴퓨터처럼 보입니다. 희망적인 부분은 하나의 시스템에서 장애가 발생하더라도 시스템이 함께 리소스와 정보를 극대화하면서 서비스 가용성에 영향을 미치지 않는다는 점입니다.

오늘날 데이터는 그 어느 때보다 더 많이 분산되어 있으며, 최신 애플리케이션은 더 이상 격리된 상태로 실행되지 않습니다. 대부분의 제품과 애플리케이션은 분산 시스템에 의존합니다.

분산 시스템의 요소

분산 컴퓨팅의 가장 중요한 기능:

  • 리소스 공유 - 하드웨어, 소프트웨어, 데이터에 상관없이 공유 가능
  • 개방성 - 소프트웨어가 얼마나 개방적으로 개발되고 서로 공유되도록 설계되었는지 여부
  • 동시성 - 여러 시스템이 동시에 동일한 기능을 처리할 수 있음
  • 확장성 - 여러 시스템으로 확장할 때 컴퓨팅과 처리 기능이 증가함
  • 내결함성 - 시스템 일부의 장애를 쉽고 빠르게 감지하고 복구할 수 있음
  • 투명성 - 한 노드가 시스템에서 다른 노드를 찾고 통신하기 위해 가져야 하는 액세스 권한의 양.

최신 분산 시스템은 동일한 물리적 머신에서 실행할 수 있지만 서로 메시지를 주고받으며 상호 작용하는 자율 프로세스를 포함하도록 발전했습니다.

분산 시스템 예시

네트워크

분산 시스템의 초기 사례는 이더넷이 발명되고 LAN(근거리 통신망)이 개발된 1970년대에 발생했습니다. 처음으로 컴퓨터에서 로컬 IP 주소를 사용하여 다른 시스템에 메시지를 보낼 수 있게 되었습니다. P2P 네트워크는 발전했고 이메일과 인터넷은 우리가 알고 있듯이 가장 크고 지속적으로 성장하는 분산 시스템의 예가 되고 있습니다. 인터넷이 IPv4에서 IPv6로 변화하면서 분산 시스템은 'LAN' 기반에서 '인터넷' 기반으로 진화했습니다.

통신 네트워크

전화와 셀룰러 네트워크도 분산 네트워크의 예입니다. 전화 네트워크는 100년 넘게 존재해 왔으며 초기의 P2P 네트워크의 사례로 시작되었습니다. 셀룰러 네트워크는 기지국이 셀이라는 영역에 물리적으로 분산되어 있는 분산 네트워크입니다. 전화 네트워크가 VOIP(Voice over IP)로 발전하면서 분산 네트워크로서의 복잡성도 계속 증가하고 있습니다.

분산 실시간 시스템

많은 업계에서는 지역 및 전 세계에 분산된 실시간 시스템을 사용합니다. 항공사는 항공 관제 시스템을, Uber와 Lyft는 배차 시스템을, 제조 공장은 자동화 제어 시스템을, 물류 및 이커머스 기업은 실시간 추적 시스템을 사용합니다.

병렬 처리

예전에는 병렬 컴퓨팅과 분산 시스템 간에 차이가 있었습니다. 병렬 컴퓨팅은 동일한 데이터와 메모리에 액세스하는 여러 스레드나 프로세서에서 소프트웨어를 실행하는 방법에 중점을 두었습니다. 분산 시스템은 자체 프로세서와 메모리를 갖춘 별도의 시스템을 의미했습니다. 오늘날 최신 운영 체제, 프로세서 및 클라우드 서비스가 등장하면서 분산 컴퓨팅에는 병렬 처리도 포함됩니다.

분산형 인공 지능

분산형 인공 지능은 대규모 컴퓨팅 파워와 병렬 처리를 사용하여 다중 에이전트를 사용하는 매우 큰 데이터 세트를 학습하고 처리하는 방식입니다.

분산 데이터베이스 시스템

분산 데이터베이스는 여러 서버 및/또는 물리적 위치에 걸쳐 있는 데이터베이스를 말합니다. 데이터는 시스템 전체에서 복제되거나 중복될 수 있습니다.

대부분의 인기 애플리케이션은 분산 데이터베이스를 사용하며 분산 데이터베이스 시스템의 동종 또는 이기종 특성을 알고 있어야 합니다.

동종 분산 데이터베이스는 각 시스템이 동일한 데이터베이스 관리 시스템과 데이터 모델을 가진 데이터베이스를 의미합니다. 새 노드와 위치를 추가하여 성능을 더 쉽게 관리하고 확장할 수 있습니다.

이기종 분산 데이터베이스는 여러 데이터 모델과 다양한 데이터베이스 관리 시스템을 허용합니다. 게이트웨이는 노드 간 데이터를 변환하는 데 사용되며 일반적으로 애플리케이션과 시스템을 병합한 결과로 발생합니다.

분산 시스템 아키텍처

분산 시스템에는 서로 통신하기 위해 메시지를 전달할 수 있도록 모든 구성 요소(시스템, 하드웨어 또는 소프트웨어)를 서로 연결하는 네트워크가 있어야 합니다.

  • 그러한 네트워크는 IP 주소로 연결되거나 케이블을 사용하거나 심지어 회로 기판에서도 연결될 수 있습니다.
  • 시스템 간에 전달되는 메시지는 데이터베이스, 개체, 파일과 같이 시스템이 공유하고자 하는 데이터 형식을 포함합니다.
  • 메시지의 전송, 수신, 승인 또는 실패 시 노드 재시도 방식 등 메시지가 안정적으로 전달되는 방식은 분산 시스템의 중요한 특징입니다.
  • 분산 시스템은 서비스와 애플리케이션의 확장 필요성과 새로운 시스템을 추가하고 관리해야 할 필요에 의해 탄생했습니다.분산 시스템 설계에서 고려해야 할 주요 균형점은 복잡성과 성능입니다.

이를 이해하기 위해 분산 아키텍처의 유형, 장단점을 살펴보겠습니다.

분산 시스템 아키텍처의 유형:

분산 애플리케이션과 프로세스는 일반적으로 다음 네 가지 아키텍처 유형 중 하나를 사용합니다.

클라이언트-서버:

초기에 분산 시스템 아키텍처는 프린터, 데이터베이스 또는 웹 서버와 같이 공유 리소스 역할을 하는 서버로 구성되었습니다. 공유 리소스를 사용할 시기와 사용 및 표시 방법, 데이터 변경 방법, 서버로 다시 보내는 방법을 결정하는 여러 클라이언트(예: 컴퓨터 뒤에 있는 사용자)가 있었습니다. git 등의 코드 리포지토리는 코드 변경 사항을 커밋하는 개발자에게 인텔리전스가 적용되는 좋은 예입니다.

오늘날 분산 시스템 아키텍처는 웹 애플리케이션과 함께 다음과 같이 발전했습니다.

  • 3계층: 이 아키텍처에서는 클라이언트가 더 이상 지능적일 필요가 없으며 처리 및 의사 결정을 수행하기 위해 중간 계층에 의존할 수 있습니다. 최초의 웹 애플리케이션 대부분이 이 범주에 해당합니다. 중간 계층은 상태 비저장일 수 있는 클라이언트로부터 요청을 수신하고 데이터를 처리한 다음 서버에 전달하는 에이전트라고 할 수 있습니다.
  • 다중 계층: 엔터프라이즈 웹 서비스는 처음에 n 계층 또는 다중 계층 시스템 아키텍처를 생성했습니다. 이로 인해 비즈니스 로직을 포함하고 데이터 계층 및 프레젠테이션 계층과 모두 상호 작용하는 애플리케이션 서버가 대중화되었습니다.
  • P2P: 이 아키텍처에는 어려운 작업과 지능적인 작업을 수행하는 중앙 집중식 시스템이나 특수 시스템이 없습니다. 모든 의사 결정과 책임은 관련된 시스템에 분할되며 각 시스템은 클라이언트 또는 서버 역할을 맡을 수 있습니다. 블록체인은 이에 대한 좋은 예시입니다.

분산 시스템의 장단점

분산 시스템의 장점:

분산 시스템의 궁극적인 목표는 애플리케이션의 확장성, 성능 및 고가용성을 지원하는 것입니다.

포함된 주요 이점:

  • 제한이 없는 수평적 확장 - 필요할 때마다 시스템을 추가할 수 있습니다.
  • 짧은 지연 시간 - 사용자와 지리적으로 가까운 곳에 시스템을 배치하면 사용자에게 서비스를 제공하는 데 걸리는 시간을 줄일 수 있습니다.
  • 내결함성 - 하나의 서버나 데이터 센터가 다운되더라도 다른 서버나 데이터 센터에서 여전히 서비스 사용자에게 서비스를 제공할 수 있습니다.
  • 분산 시스템의 장점:

분산 시스템의 단점:

모든 엔지니어링 결정에는 장단점이 있습니다. 복잡성은 분산 시스템의 가장 큰 단점입니다. 시스템, 메시지, 당사자 간에 전달되는 데이터가 많을 수록 다음과 같은 문제가 발생합니다.

  • 데이터 통합 및 일관성 - 분산 시스템에서 애플리케이션의 데이터 및 상태에 대한 변경 순서를 동기화하는 것은 특히 노드가 시작, 중단 또는 장애가 발생할 때 까다로운 작업입니다.
  • 네트워크 및 통신 장애: - 메시지가 올바른 노드로 전달되지 않거나 잘못된 순서로 전달되어 통신과 기능에 장애가 발생할 수 있습니다.
  • 관리 오버헤드 - 분산 시스템의 운영과 장애에 대한 가시성을 확보하기 위해 더 많은 인텔리전스, 모니터링, 로깅, 로드 밸런싱 기능을 추가해야 합니다.

분산 스트리밍 플랫폼이 도움이 되는 방법

Confluent는 모든 클라우드, 온프레미스 또는 하이브리드 클라우드 환경을 위한 유일한 데이터 스트리밍 플랫폼입니다. 120개 이상의 데이터 소스를 엔터프라이즈급 확장성, 보안, 통합 기능과 연결하여 모든 분산 시스템에서 실시간 가시성을 확보하세요.

30일 무료 평가판을 지금 바로 시작하세요.