소프트웨어 아키텍처 개발 및 연구 현황

소프트웨어 아키텍처 연구 현황

소프트웨어 아키텍처의 개발은 단일 아키텍처, 분산 아키텍처, SOA 아키텍처 및 마이크로 서비스 아키텍처의 네 단계를 거쳤습니다.

1.3.1 모놀리식 아키텍처

웹 애플리케이션 개발 초기에는 대부분의 웹 엔지니어가 모든 기능을 하나의 프로젝트 프로젝트로 통합하고 war 패키지의 모든 기능을 서버에 배포했으며 애플리케이션 클러스터와 데이터베이스 클러스터를 배포하여 시스템 성능을 향상했습니다. 이 모드에서는 프로젝트 구조가 간단하고 초기 개발 비용이 낮으며 주기가 짧고 개발 효율성이 높습니다.모듈 간의 상호 작용은 로컬 메서드 호출을 사용하여 배포 및 테스트가 쉽습니다. 그러나 단점도 분명합니다. 모든 기능이 하나의 프로젝트에 통합되어 있어 대형 프로젝트보다 규모가 크면 개발, 확장 및 유지 관리가 쉽지 않습니다. 버전 반복 속도가 점차 느려지고 위치를 수정하려면 전체 응용 프로그램을 컴파일, 배포 및 시작해야 하며 개발 및 테스트 주기가 너무 깁니다. 확장성이 떨어지고 클러스터 방식을 통해 수평적 확장이 이루어지므로 특정 비즈니스의 요구에 따라 확장할 수 없습니다.

1.3.2 분산 아키텍처

단일 아키텍처가 부족하고 향후 대규모 프로젝트의 개발 요구를 충족시키기 위해 많은 회사가 비즈니스 수직 차이에 따라 단일 시스템을 여러 시스템으로 분할합니다.시스템은 서로 상호 작용하여 사용자의 시스템을 완성합니다. 업무 처리가 가능하고 각 시스템을 분산 방식으로 배치할 수 있습니다. , 이 아키텍처는 분산 아키텍처가 됩니다. 분산 아키텍처는 시스템에 로드 밸런싱 기능을 제공하고 모듈 간의 코드 결합을 줄이며 시스템의 유연성을 향상시킵니다. 단점은 데이터 중복, 기능 중복 및 하위 시스템 간의 높은 결합이 있다는 것입니다. 온디맨드 확장의 세분성은 충분하지 않으며 동일한 하위 시스템의 다른 비즈니스에 대해 실현될 수 없습니다.
여기에 이미지 설명 삽입

1.3.3 SOA 아키텍처

SOA는 서로 다른 비즈니스 기능을 서비스로 나누고 잘 정의된 인터페이스와 프로토콜을 통해 연결하는 분산 아키텍처를 기반으로 하는 서비스 지향 아키텍처입니다. 장점은 반복되는 기능을 서비스로 추출하고, 개발 효율을 높이고, 시스템이 제공하는 재사용성과 유지보수성을 향상시키는 것입니다. 다양한 서비스의 특성에 따라 확장될 수 있습니다. 단점은 시스템과 서비스 간의 경계가 모호하여 추출된 서비스의 입도가 너무 크고 시스템과 서비스 간의 결합도가 높다는 점입니다. ESB를 사용하지만 서비스 인터페이스 프로토콜이 고정되어 있지 않고 종류가 많아 시스템 유지에 도움이 되지 않는다.
여기에 이미지 설명 삽입

1.3.4 마이크로서비스 아키텍처

SOA 아키텍처의 아이디어를 기반으로 대규모 프로젝트 및 다중 클라이언트를 위한 모바일 인터넷의 요구 사항을 충족하기 위해 서비스 계층을 세분화된 부서로 나누고 각 분할된 서비스는 특정 비즈니스 기능만 완료합니다. 예를 들어 주문 서비스는 주문 관련 업무만 구현하고 사용자 관리 관련 업무는 사용자 서비스 구현 등으로 서비스의 입도가 매우 작기 때문에 마이크로 서비스 아키텍처라고 합니다. 장점은 서비스 분할의 세분성이 미세하여 리소스 재사용에 도움이 되고 개발 효율성을 향상시킨다는 것입니다. 각 서비스에 대한 최적화 계획을 보다 정확하게 수립하고 필요에 따라 확장할 수 있습니다. 인터넷 시대에 맞게 제품 반복주기가 짧아졌습니다. 그러나 비즈니스 프로세스가 네트워크 상호 작용을 통해 완료하려면 여러 마이크로 서비스가 필요하기 때문에 개발의 복잡성이 증가한다는 단점도 분명합니다. 마이크로 서비스가 너무 많고 서비스 거버넌스 비용이 높아 시스템 유지 관리에 도움이 되지 않습니다. 따라서 소규모 프로젝트의 아키텍처에는 적합하지 않습니다.

2014년 Martin Fowler와 James Lewis는 마이크로서비스 개념을 공동으로 제안했습니다. 마이크로서비스 아키텍처는 SOA의 구현으로 볼 수 있는데, 마이크로서비스를 이전에 사용했던 넷플릭스는 마이크로서비스가 세분화된 SOA라고 믿고 있다. 마이크로서비스 아키텍처는 그림 1-1에 나와 있으며 마이크로서비스와 SOA 간의 비교는 표 1-2에 나와 있습니다. 마이크로서비스는 애플리케이션을 더 세밀하게 분할하고 각 서비스는 RESTful API 또는 RPC(원격 프로시저 호출)를 통해 통신합니다.
여기에 이미지 설명 삽입

2016년에 Pivotal 팀은 Spring Boot[5]를 기반으로 빠르게 구축된 Spring Cloud 서비스 거버넌스 프레임워크를 출시했습니다. Spring Boot는 Spring 프레임워크를 기반으로 개선되었으며, Spring의 번거로운 구성을 구성보다 관례의 원칙에 따라 단순화합니다. Spring의 가장 큰 공헌은 관점 지향 프로그래밍(AOP, Aspect Oriented Programming)과 제어 반전(IoC, Inversion of Control)에 있으며, 현재 Spring은 여전히 ​​백엔드 개발에서 선두 위치에 있습니다. Spring Cloud에는 Spring Boot의 뛰어난 기능이 포함되어 있으며 서비스 검색 및 등록, 서비스 퓨즈, 로드 밸런싱, 게이트웨이 라우팅 및 링크 추적과 같은 구성 요소를 포함하는 완전한 솔루션 세트를 구축합니다. 1세대 Spring Cloud는 Spring Cloud Netflix를 기반으로 합니다.Spring Cloud Netflix가 유지 관리 상태에 들어간 이후 2세대는 Alibaba 팀의 오픈 소스 Spring Cloud Alibaba를 기반으로 합니다.현재 Spring Cloud Alibaba는 성공적으로 인큐베이팅되었습니다. Spring Cloud Alibaba는 널리 사용되어 온 Nacos, Sentinel, RocketMQ 및 Spring Cloud Gateway를 포함하여 Alibaba 팀의 뛰어난 오픈 소스 구성 요소를 통합합니다.

추천

출처blog.csdn.net/qq_45473439/article/details/124093940