마이크로서비스 튜토리얼:이란 무엇입니까? Archi강의 및 예시

마이크로서비스란 무엇입니까?

마이크로 서비스 다양한 가장 작은 독립 서비스 단위의 컬렉션으로 애플리케이션이 구축되는 서비스 지향 아키텍처 패턴입니다. 소프트웨어 공학 잘 정의된 인터페이스를 갖춘 단일 기능 모듈로 애플리케이션을 분해하는 데 초점을 맞춘 접근 방식입니다. 이러한 모듈은 서비스의 전체 수명 주기를 소유한 소규모 팀에서 독립적으로 배포하고 운영할 수 있습니다.

"마이크로"라는 용어는 단일 개발 팀(5~10명의 개발자)이 관리할 수 있어야 하는 마이크로서비스의 규모를 나타냅니다. 이 방법론에서는 대규모 애플리케이션을 가장 작은 독립 단위로 나눕니다.

모놀리식이란? Archi강의?

평범한 용어로 말하면, 모놀리식 아키텍처는 애플리케이션의 모든 소프트웨어 구성 요소가 단일 패키지로 묶여 있는 큰 컨테이너와 같다고 할 수 있습니다.

모놀리식 아키텍처의 맥락에서 전자상거래 매장의 예를 살펴보겠습니다.

단단히 짜여 하나로 되어 있는 Archi강의
단단히 짜여 하나로 되어 있는 Archi전자상거래 응용강의

모든 전자상거래 애플리케이션에는 검색, Rev보기 및 평가 및 지불. 이러한 기능은 고객이 브라우저나 앱을 사용하여 액세스할 수 있습니다. 전자상거래 사이트 개발자가 애플리케이션을 배포하면 이는 단일 모놀리식 단위입니다. 검색, Review & Ratings 및 Payments는 동일한 서버에 있습니다. 애플리케이션을 확장하려면 이러한 애플리케이션의 여러 인스턴스(서버)를 실행해야 합니다.

마이크로서비스란? Archi강의?

마이크로 서비스 Archi강의 비즈니스 도메인을 위해 개발된 소규모 자율 서비스 모음으로 애플리케이션을 구축할 수 있는 아키텍처 개발 스타일입니다. 느슨하게 결합된 서비스 모음으로 애플리케이션을 정리하는 데 도움이 되는 구조적 스타일 아키텍처의 변형입니다. 마이크로서비스 Archi강의에는 세분화된 서비스와 경량 프로토콜이 포함되어 있습니다.

마이크로서비스 아키텍처로 개발된 전자상거래 애플리케이션의 예를 들어보겠습니다. 이 마이크로서비스 아키텍처 예에서 각 마이크로서비스는 단일 비즈니스 역량에 초점을 맞춥니다. 검색, 평가 및 Review와 Payment는 각각 인스턴스(서버)를 갖고 서로 통신합니다.

마이크로 서비스 Archi강의
마이크로 서비스 Archi강의

모놀리식에서는 Archi즉, 모든 구성 요소가 단일 모듈로 통합됩니다. 하지만 마이크로서비스에서는 Archi위의 마이크로서비스 예시와 같이 서로 통신하는 개별 모듈(마이크로서비스)로 분산되어 있다고 생각하세요.

마이크로서비스 간의 통신은 요청과 응답의 각 쌍이 독립적인 상태 비저장 통신입니다. 따라서 마이크로서비스는 쉽게 통신할 수 있습니다. 마이크로서비스에서는 Archi강의를 통해 데이터가 연합됩니다. 각 마이크로서비스에는 별도의 데이터 저장소가 있습니다. 다음에는 이 Java 마이크로서비스 튜토리얼에서는 마이크로서비스와 모놀리식 아키텍처의 차이점에 대해 알아봅니다.

마이크로서비스와 모놀리식 Archi강의

마이크로 서비스 단단히 짜여 하나로 되어 있는 Archi강의
전체 애플리케이션의 모든 단위는 가장 작아야 하며 하나의 특정 비즈니스 목표를 달성할 수 있어야 합니다. 모든 비즈니스 목표를 위한 단일 코드 기반
서비스 시작이 비교적 빠르다 서비스 시작에 더 많은 시간이 소요됨
결함 격리가 쉽습니다. 한 서비스가 중단되더라도 다른 서비스는 계속 작동할 수 있습니다. 오류 격리는 어렵습니다. 특정 기능이 작동하지 않으면 전체 시스템이 다운됩니다. 이 문제를 처리하려면 애플리케이션을 다시 빌드하고, 다시 테스트하고, 다시 배포해야 합니다.
모든 마이크로서비스는 하나의 변경 사항이 다른 마이크로서비스에 영향을 미치지 않도록 느슨하게 결합되어야 합니다. 모놀리식 아키텍처는 긴밀하게 결합되어 있습니다. 코드의 한 모듈에서 변경하면 다른 모듈에 영향을 미칩니다.
기업은 더 높은 ROI를 생성하는 서비스에 더 많은 리소스를 배포할 수 있습니다. 서비스가 분리되지 않아 개별적인 자원 할당이 불가능함
자주 사용하는 서비스에 더 많은 하드웨어 리소스를 할당할 수 있습니다. 위의 전자상거래 예시에서는 결제에 비해 상품 목록을 확인하고 검색하는 사용자가 더 많습니다. 따라서 검색 및 제품 목록 마이크로서비스에 더 많은 리소스를 할당할 수 있습니다. 애플리케이션 확장은 어렵고 낭비적입니다.
마이크로서비스는 항상 일관되고 지속적으로 사용 가능합니다. 프로세스를 처음부터 시작해야 하므로 개발 도구에 과부하가 걸립니다.
데이터가 연합됩니다. 이를 통해 개별 마이크로서비스는 필요에 가장 적합한 데이터 모델을 채택할 수 있습니다. 데이터는 중앙 집중화되어 있습니다.
소규모 집중 팀. 병렬적이고 빠른 개발 대규모 팀과 상당한 팀 관리 노력이 필요함
한 마이크로서비스의 데이터 모델 변경은 다른 마이크로서비스에 영향을 주지 않습니다. 데이터 모델의 변경은 전체 데이터베이스에 영향을 미칩니다
잘 정의된 인터페이스를 사용하여 다른 마이크로서비스와 상호 작용 적용 할 수 없음
마이크로서비스는 프로젝트가 아닌 제품에 초점을 맞춘 원칙에 따라 작동합니다. 전체 프로젝트에 중점을 두세요
코드 베이스 간에는 상호 종속성이 없습니다. 다양한 마이크로서비스에 다양한 기술을 사용할 수 있습니다. 하나의 기능이나 프로그램은 다른 기능이나 프로그램에 종속됩니다.

마이크로서비스 과제

  • 마이크로서비스는 서로 의존하며 서로 통신해야 합니다.
  • 모놀리식 시스템과 비교할 때, 다양한 기술을 사용하여 개발된 모니터링할 서비스가 더 많습니다. 프로그래밍 언어.
  • 분산 시스템이기 때문에 본질적으로 복잡한 모델입니다.
  • 다양한 서비스에는 별도의 메커니즘이 있으므로 구조화되지 않은 데이터에 대해 많은 양의 메모리가 발생합니다.
  • 연쇄적인 문제를 방지하려면 효과적인 관리와 팀워크가 필요합니다.
  • 문제가 한 버전에서 사라졌다가 최신 버전으로 다시 나타나면 문제를 재현하는 것은 어려운 작업이 됩니다.
  • 마이크로서비스에서는 독립 배포가 복잡합니다.
  • 마이크로서비스 아키텍처는 많은 운영 오버헤드를 가져옵니다.
  • 새로운 서비스가 시스템에 추가되면 애플리케이션 관리가 어렵습니다.
  • 이기종 분산 마이크로서비스를 지원하려면 다양한 기술 전문가가 필요합니다.
  • 마이크로서비스는 다양한 비즈니스 작업에 대해 서로 다른 서버 공간을 유지해야 하므로 비용이 많이 듭니다.

SOA와 마이크로서비스

SOA 서비스는 디렉토리 목록 역할을 하는 레지스트리에 의해 조직 내에서 유지 관리됩니다. 애플리케이션은 레지스트리에서 서비스를 조회하고 서비스를 호출해야 합니다.

다른 세계에서는, SOA 연주자가 각자의 악기로 연주하고 음악감독이 모든 사람에게 지시를 내리는 오케스트라와 같습니다.

반면, 마이크로서비스는 하나의 소프트웨어나 애플리케이션 대신 여러 개의 작은 서비스의 모음으로 애플리케이션을 구축하는 서비스 지향 아키텍처 스타일의 한 형태입니다.

마이크로서비스는 마치 각 댄서가 독립적이고 무엇을 해야 할지 아는 극단과 같습니다. 따라서 몇 가지 단계를 놓치더라도 올바른 순서로 돌아가는 방법을 알고 있습니다. 이제 이 마이크로서비스 아키텍처 튜토리얼에서 SOA와 마이크로서비스의 차이점에 대해 알아보겠습니다.

SOA와 마이크로서비스의 자세한 비교는 다음과 같습니다.

매개 변수 SOA 마이크로 서비스
디자인 유형 SOA에서 소프트웨어 구성 요소는 서비스 형태로 사용하기 위해 외부 세계에 노출됩니다. 마이크로 서비스는 SOA의 일부입니다. SOA를 구현한 것입니다.
의존 사업 단위는 종속적입니다. 그들은 서로 독립적입니다.
소프트웨어의 크기 소프트웨어 크기는 기존 소프트웨어보다 큽니다. 마이크로서비스에서는 소프트웨어의 크기가 항상 작습니다.
기술 스택 마이크로서비스에 비해 기술 스택이 낮습니다. 마이크로서비스 기술 스택은 매우 클 수 있습니다.
응용 프로그램의 성격 본질적으로 모놀리식 자연의 풀스택
독립성과 집중성 SOA 애플리케이션은 여러 비즈니스 작업을 수행하도록 구축되었습니다. 단일 비즈니스 작업을 수행하도록 구축되었습니다.
전개 배포 프로세스에는 시간이 많이 걸립니다. 배포가 간단하고 시간이 덜 소요됩니다.
비용 – 효율성 더 비용 효율적입니다. Less 비용 효율적입니다.
확장성 Less 마이크로서비스와 비교. 확장 성이 뛰어납니다.
비즈니스 로직 비즈니스 로직 구성 요소는 단일 서비스 도메인 내부에 저장됩니다. 간단한 유선 프로토콜(XML JSON이 포함된 HTTP) API는 SDK/클라이언트를 통해 구동됩니다. 비즈니스 로직은 서비스 간 레이어와 같은 엔터프라이즈 서비스 버스(Enterprise Service Bus) 전체에 존재할 수 있습니다. 미들웨어

마이크로서비스 도구

1) Wiremock: 마이크로서비스 테스트

WireMock 웹 서비스를 스텁하고 조롱하기 위한 유연한 라이브러리입니다. 특정 요청을 수신할 때 HTTP API가 반환하는 응답을 구성할 수 있습니다. 또한 마이크로서비스를 테스트하는 데에도 사용됩니다.

링크를 다운로드 :http://wiremock.org/

2) 도커

Docker는 컨테이너를 사용하여 애플리케이션을 생성, 배포 및 실행할 수 있는 오픈 소스 프로젝트입니다. 개발자는 이러한 컨테이너를 사용하여 애플리케이션을 단일 패키지로 실행할 수 있습니다. 이를 통해 라이브러리 및 기타 종속성을 하나의 패키지로 제공할 수 있습니다.

링크를 다운로드 :https://www.docker.com/

3) 히스트릭스

Hystrix는 내결함성 Java 라이브러리입니다. 이 도구는 마이크로서비스와 같은 분산 환경에서 원격 서비스, 시스템 및 타사 라이브러리에 대한 액세스 지점을 분리하도록 설계되었습니다. 실패한 서비스를 격리하고 실패의 연속적인 영향을 방지하여 전체 시스템을 개선합니다.

링크를 다운로드 :https://github.com/Netflix/Hystrix

최고의 마이크로서비스 사례 Archi강의

  • 각 마이크로서비스에 대한 별도의 데이터 저장소
  • 비슷한 성숙도 수준의 코드를 유지하세요.
  • 각 마이크로 서비스마다 별도의 빌드를 수행합니다.
  • 항상 치료하십시오 – 무국적자로 심각합니다.

요약

  • 마이크로서비스는 다양한 가장 작은 독립 서비스 단위의 모음으로 애플리케이션을 구축하는 서비스 지향 아키텍처 패턴입니다.
  • 마이크로 서비스 Archi텍처(tecture)는 비즈니스 도메인을 위해 개발된 소규모 자율 서비스 모음으로 애플리케이션을 구축할 수 있는 아키텍처 개발 스타일입니다.
  • 모놀리식 아키텍처는 애플리케이션의 모든 소프트웨어 구성 요소가 단일 패키지로 묶여 있는 큰 컨테이너와 같습니다.
  • 마이크로서비스에서는 전체 애플리케이션의 모든 단위가 가장 작아야 하며 하나의 특정 비즈니스 목표를 달성할 수 있어야 합니다.
  • 모놀리식 아키텍처에서 대규모 코드 베이스는 전체 개발 프로세스를 늦출 수 있습니다. 새로운 릴리스는 몇 달이 걸릴 수 있습니다. 코드 유지 관리가 어렵습니다.
  • 두 가지 유형의 마이크로서비스는 1) 상태 비저장(Stateless) 2) 상태 저장(Stateful)입니다.
  • 마이크로서비스 Java 서로 의지하고, 서로 소통해야 합니다. 특정 기능과 비즈니스 요구 사항을 강조하는 데 도움이 됩니다.
  • SOA(서비스 지향 아키텍처)는 동기 및 비동기 애플리케이션에 대한 요청 또는 응답 설계 모델을 기반으로 하는 분산 컴퓨팅의 진화입니다.
  • SOA에서 소프트웨어 구성 요소는 서비스 형태로 사용하기 위해 외부 세계에 노출되는 반면 마이크로 서비스는 SOA의 일부입니다. SOA를 구현한 것입니다.
  • Wiremock, Docker 및 Hystrix는 인기 있는 마이크로서비스 도구입니다.