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

⚡ 스마트 요약

마이크로서비스는 애플리케이션을 작고 독립적인 서비스 단위들의 모음으로 구축하는 서비스 지향 아키텍처 패턴입니다. 이 자료에서는 모놀리식 아키텍처와 마이크로서비스 아키텍처의 차이점, 과제, SOA와의 비교, 인기 있는 도구 및 모범 사례에 대해 설명합니다.

  • 🧩 핵심 개념: 마이크로서비스는 애플리케이션을 단일 기능을 가진 독립적으로 배포 가능한 모듈로 분해하며, 각 모듈은 5~10명의 개발자로 구성된 소규모 팀이 담당합니다.
  • 📦 단일체 대비: 모놀리식 애플리케이션은 모든 기능을 하나의 패키지로 묶어 하나의 서버에 구현하므로, 확장을 위해서는 여러 개의 전체 복사본을 실행해야 합니다.
  • 🏗️ 마이크로 서비스 Archi강의: 각 서비스는 하나의 비즈니스 기능을 처리하고, 자체 인스턴스에서 실행되며, 경량의 상태 비저장 프로토콜을 통해 통신합니다.
  • 🗄️ 연합 데이터: 각 마이크로서비스는 자체 데이터 저장소를 소유하므로 한 서비스의 데이터 모델이 변경되어도 다른 서비스에는 영향을 미치지 않습니다.
  • 🛠️ 도구 및 실무: 같은 도구 WireMockDocker와 Hystrix는 테스트, 배포 및 내결함성을 지원하며, 각 서비스를 자체 빌드를 통해 상태 비저장 방식으로 유지할 수 있습니다.

마이크로서비스 튜토리얼

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

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

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

모놀리식이란? Archi강의?

쉽게 말해, 모놀리식 아키텍처는 애플리케이션의 모든 소프트웨어 구성 요소를 하나의 패키지로 묶어 놓은 거대한 컨테이너와 같습니다. 모놀리식 아키텍처의 맥락에서 전자상거래 쇼핑몰을 예로 들어 살펴보겠습니다.

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

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

모든 전자상거래 애플리케이션에는 검색, Rev조회 및 평가, 결제와 같은 기능은 고객이 브라우저나 앱을 통해 이용할 수 있습니다. 전자상거래 사이트 개발자가 애플리케이션을 배포할 때, 이는 단일 모놀리식 유닛으로 구현됩니다. 검색, 평가, 결제와 같은 다양한 기능에 대한 코드는 각각 독립적으로 구성됩니다. Rev조회 및 평가, 결제 기능은 동일한 서버에서 실행됩니다. 애플리케이션 확장을 위해서는 이러한 애플리케이션의 여러 인스턴스(서버)를 실행해야 합니다.

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

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

마이크로서비스 아키텍처로 개발된 전자상거래 애플리케이션의 예를 들어 보겠습니다. 이 마이크로서비스 아키텍처 예시에서 각 마이크로서비스는 하나의 비즈니스 기능에 집중합니다. 검색, 평점 및 평가 등이 그 예입니다. Rev조회 및 결제는 각각 자체 인스턴스(서버)를 가지고 있으며 서로 통신합니다.

마이크로 서비스 Archi강의

마이크로 서비스 Archi강의

모놀리식에서는 Archi기존 아키텍처에서는 모든 구성 요소가 하나의 모듈로 통합됩니다. 하지만 마이크로서비스 아키텍처에서는 그렇지 않습니다. Archi구조적으로는 개별 모듈(마이크로서비스)로 분산되어 있으며, 위의 마이크로서비스 예시에서처럼 서로 통신합니다.

마이크로서비스 간의 통신은 요청과 응답의 각 쌍이 독립적인 상태 비저장 통신입니다. 따라서 마이크로서비스는 쉽게 통신할 수 있습니다. 마이크로서비스에서 Archi구조적으로 데이터는 연합됩니다. 각 마이크로서비스는 별도의 데이터 저장소를 가지고 있습니다.

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

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

마이크로서비스 과제

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

SOA와 마이크로서비스

SOA 서비스는 디렉터리 목록 역할을 하는 레지스트리를 통해 조직 내에서 관리됩니다. 애플리케이션은 레지스트리에서 서비스를 찾아 호출해야 합니다. 다시 말해, SOA 연주자가 각자의 악기로 연주하고 음악감독이 모든 사람에게 지시를 내리는 오케스트라와 같습니다.

반면에 마이크로서비스는 서비스 지향 아키텍처 스타일의 한 형태로, 하나의 소프트웨어 또는 애플리케이션이 아닌 여러 개의 작은 서비스 모음으로 애플리케이션을 구축하는 방식입니다. 마이크로서비스는 마치 무용단과 같아서 각 무용수는 독립적으로 자신의 역할을 정확히 알고 있습니다. 따라서 실수를 하더라도 어떻게 다시 원래 순서로 돌아갈지 알고 있습니다. SOA와 마이크로서비스의 자세한 비교는 아래에서 확인할 수 있습니다.

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

마이크로서비스 도구

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

WireMock 이 라이브러리는 웹 서비스를 스텁(stub)하고 모킹(mocking)하는 데 유용한 도구입니다. 특정 요청을 받았을 때 HTTP API가 반환하는 응답을 구성할 수 있으며, 마이크로서비스 테스트에도 사용됩니다.

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

2) 도커

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

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

3) 히스트릭스

Hystrix는 내결함성 시스템입니다. Java 이 도구는 마이크로서비스와 같은 분산 환경에서 원격 서비스, 시스템 및 타사 라이브러리에 대한 접근 지점을 분리하도록 설계되었습니다. 장애가 발생한 서비스를 격리하고 장애의 연쇄 효과를 방지하여 전체 시스템의 성능을 향상시킵니다.

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

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

  • 각 마이크로서비스마다 별도의 데이터 저장소를 사용합니다.
  • 코드의 완성도를 비슷한 수준으로 유지하세요.
  • 각 마이크로서비스별로 별도의 빌드를 수행합니다.
  • 각 서버는 항상 상태를 저장하지 않는 서버로 취급하십시오.

자주 묻는 질문

AI 기능은 종종 개별 마이크로서비스로 패키징되므로 애플리케이션은 모델을 직접 내장하지 않고도 API를 통해 호출할 수 있습니다. 또한 AI는 여러 서비스에서 지능형 라우팅, 자동 확장 및 이상 탐지 기능을 지원합니다.

예. AI 기반 관찰 도구는 로그, 메트릭 및 기타 요소들을 상호 연관시킵니다. trac대규모 분산 시스템에서 수동 분석보다 빠르게 장애를 감지하고, 병목 현상을 예측하고, 근본 원인을 파악하기 위해 서비스 전반에 걸쳐 모니터링을 수행합니다.

마이크로서비스는 일반적으로 상태 비저장형과 상태 저장형으로 분류됩니다. 상태 비저장형 마이크로서비스는 요청 간에 데이터를 유지하지 않는 반면, 상태 저장형 마이크로서비스는 데이터 또는 세션 상태를 유지하며, 종종 자체 전용 데이터 저장소를 사용합니다.

대형 기술 기업으로는 다음과 같은 회사들이 있습니다. Netflix, Amazon, 우버, 그리고 Spotify 마이크로서비스를 사용하여 독립적으로 확장하고 자주 배포할 수 있습니다. 이 접근 방식은 신속하고 격리된 릴리스가 필요한 트래픽이 많은 클라우드 네이티브 애플리케이션에 적합합니다.

이 게시물을 요약하면 다음과 같습니다.