전통문화대전망 - 전통 미덕 - 소프트웨어 아키텍처 소개-계층형 아키텍처, 이벤트 중심, 마이크로서비스 아키텍처 및 클라우드 기본 아키텍처
소프트웨어 아키텍처 소개-계층형 아키텍처, 이벤트 중심, 마이크로서비스 아키텍처 및 클라우드 기본 아키텍처
적합한 아키텍처는 소프트웨어 성공의 가장 중요한 요소 중 하나입니다. 대형 소프트웨어 회사는 일반적으로 전문 설계자 직위를 가지고 있으며 숙련된 프로그래머만 맡을 수 있습니다.
O'Reilly 는 가장 흔히 볼 수 있는 다섯 가지 소프트웨어 아키텍처를 소개하는 무료 팜플렛인' 소프트웨어 아키텍처 모델' (PDF) 을 출간했습니다. 아주 좋은 입문서입니다.
소프트웨어 아키텍처는 소프트웨어의 기본 구조입니다. 아키텍처의 본질은 관리의 복잡성입니다. 구조가 중요하지 않다고 생각한다면, 당신이 충분히 복잡하지 않거나 관리 복잡성이 좋지 않을 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언) 건축 도안은 많지만 추상적인 침전을 거쳐 몇 가지밖에 없다.
1. 계층형 아키텍처 (보다 전통적인 단일 아키텍처)
2. 이벤트 중심 아키텍처 (일반적으로 로컬 애플리케이션 시나리오에서 비동기 디커플링을 구현하는 데 적합)
3. 마이크로커널 아키텍처 (플러그인 아키텍처라고도 함) 는 개발이 어렵고 일반적으로 Eclipse 와 같은 도구 소프트웨어 개발에 사용되며 분산 비즈니스 시나리오에 적합하지 않습니다.
4. 마이크로 서비스 아키텍처 (단일 아키텍처가 직면 한 문제를 해결하는 현재 인기있는 서비스 아키텍처, 민첩한 개발 및 신속한 반복에 적합)
5. 클라우드 아키텍처 (-Docker, Kubernetes 및 서비스 그리드 기반 클라우드 기본 아키텍처).
원문의 기초 위에서, 나는 내 생각에 근거하여 약간의 조정을 했다.
계층형 아키텍처는 가장 일반적인 소프트웨어 아키텍처이자 사실상 표준 아키텍처입니다. 어떤 구조를 사용하는지 모르면 사용하세요.
이 아키텍처는 소프트웨어를 여러 수평 계층으로 나눕니다. 각 계층에는 명확한 역할과 분업이 있으므로 다른 계층의 세부 사항을 알 필요가 없습니다. 각 계층은 인터페이스를 통해 서로 통신합니다.
소프트웨어가 몇 개의 계층으로 나누어야 하는지 명확한 합의가 없지만 4 계층 구조가 가장 흔하다.
일부 소프트웨어는 논리적 계층 (비즈니스) 과 지속성 계층 사이에 서비스 계층을 추가하여 서로 다른 비즈니스 논리 요구 사항에 공통된 인터페이스를 제공합니다.
사용자의 요청은 이 4 개 계층을 통해 순차적으로 처리되며 어떤 계층도 건너뛸 수 없습니다.
우세
열세
이벤트는 상태 변경 시 소프트웨어가 보내는 알림입니다.
이벤트 중심 아키텍처는 이벤트를 통해 통신하는 소프트웨어 아키텍처입니다. 그것은 네 부분으로 나뉜다.
이벤트 중심 아키텍처의 핵심 구성 요소:
간단한 프로젝트의 경우 이벤트 대기열, 배포자 및 이벤트 채널을 결합하여 전체 소프트웨어를 이벤트 에이전트와 이벤트 처리기의 두 부분으로 나눌 수 있습니다.
우세
열세
이벤트 중심 아키텍처는 상태 시스템 처리와 같은 통신 제품에도 널리 사용됩니다. 이벤트 중심 아키텍처는 최상위 계층 아키텍처에 적합하지 않지만 로컬 구현에 적합하며 통신 소프트웨어의 거의 모든 곳에 있습니다.
마이크로커널 아키텍처 (Microkernel architecture) 는 "플러그인 아키텍처" 라고도 하며, 소프트웨어의 커널이 상대적으로 작으며, 주요 기능 및 비즈니스 논리는 플러그인에 의해 구현됩니다.
코어에는 일반적으로 시스템의 최소 기능만 포함됩니다. 플러그 인은 서로 독립적이므로 상호 의존적인 문제를 피하기 위해 플러그 인 간의 통신을 최소화해야 합니다.
우세
열세
마이크로 커널 아키텍처는 설계 및 개발이 어렵습니다. 즉, 많은 장점이 있지만 엔터프라이즈 제품에 널리 사용되지 않습니다.
마이크로서비스 아키텍처는 SOA (서비스 지향 아키텍처) 의 업그레이드입니다.
각 군종은 독립적으로 배치된 단위이다. 이러한 장치는 분산되고 서로 분리되며 REST 및 SOAP 와 같은 원격 통신 프로토콜을 통해 연결됩니다.
마이크로 서비스 아키텍처는 세 가지 구현 모드로 나눌 수 있습니다.
Spring Cloud, Dubbo, ServiceComb 등과 같은 오픈 소스 마이크로서비스 프레임워크가 많이 있습니다.
우세
열세
클라우드 아키텍처 (현재 -Cloud Native) 는 확장성 및 동시성 문제를 주로 해결하며 가장 쉽게 확장할 수 있는 아키텍처입니다.
확장성이 뛰어난 이유는 클라우드 기반 컴퓨팅 리소스의 유연한 확장성 때문입니다. 그런 다음 비즈니스 처리 기능을 프로세스 단위로 캡슐화합니다. 액세스 횟수가 증가하면 새 프로세스 단위 (Docker 컨테이너) 가 생성됩니다. 액세스 횟수가 줄어들면 프로세스 단위 (Docker 컨테이너) 가 닫힙니다. 중앙 데이터베이스가 없어 확장성의 가장 큰 병목 현상이 사라졌다. 각 프로세스 단위의 데이터는 별도의 하위 라이브러리이기 때문입니다.
이 모델은 주로 프로세스 단위와 가상화 미들웨어의 두 부분으로 나뉩니다.
가상 미들웨어는 다음 네 가지 구성 요소로 구성됩니다.
Docker, Kubernetes 등의 컨테이너화 기술이 급속히 발전함에 따라 클라우드 아키텍처에 대한 설명은 이미 시대에 뒤떨어졌다. 현재 최신 클라우드 기본 아키텍처는 Docker+Kubernetes, 특히 컨테이너 배열 Kubernetes 가 사실상 업계 표준이 되었습니다.
클라우드 기본 아키텍처의 주요 특징:
주요 목표:
1. 개발자가 비즈니스 로직 구현에 집중하고 나머지는 컨테이너 클라우드 플랫폼에 전달하도록 합니다.
2. 비즈니스 시스템의 빠른 반복 및 비즈니스의 빠른 변화와 발전을 지원합니다.
3. * * * 서비스 시스템을 핵심으로 하는 비즈니스 센터 구축
다음은 클라우드 및 마이크로서비스 아키텍처를 기반으로 클라우드 기본 어플리케이션을 구축하는 새로운 소매업체를 위해 설계한 클라우드 기본 아키텍처 다이어그램입니다. 여기서 클라우드는 공용 클라우드, 사설 클라우드, 혼합 클라우드 등이 될 수 있습니다.
이것들은 다른 각도에서 건물을 분류한 것이다. 실제 응용 프로그램에서는 다양한 아키텍처가 고립되어 있지 않으며 비즈니스 환경 및 비즈니스 요구 사항에 따라 통합하고 접목할 수 있습니다. 각 아키텍처에는 장점과 단점이 있습니다. 장점과 단점은 말할 필요도 없이 도구 엔지니어링 (예: 자동 게시 도구, 자동 테스트 등) 을 통해 피할 수 있습니다. ), 이것은 소프트웨어 아키텍처에 매우 중요합니다.