마이크로서비스 튜토리얼:이란 무엇입니까? Archi강의 및 예시
⚡ 스마트 요약
마이크로서비스는 애플리케이션을 작고 독립적인 서비스 단위들의 모음으로 구축하는 서비스 지향 아키텍처 패턴입니다. 이 자료에서는 모놀리식 아키텍처와 마이크로서비스 아키텍처의 차이점, 과제, SOA와의 비교, 인기 있는 도구 및 모범 사례에 대해 설명합니다.
마이크로서비스란 무엇입니까?
마이크로 서비스 다양한 가장 작은 독립 서비스 단위의 컬렉션으로 애플리케이션이 구축되는 서비스 지향 아키텍처 패턴입니다. 소프트웨어 공학 잘 정의된 인터페이스를 갖춘 단일 기능 모듈로 애플리케이션을 분해하는 데 초점을 맞춘 접근 방식입니다. 이러한 모듈은 서비스의 전체 수명 주기를 소유한 소규모 팀에서 독립적으로 배포하고 운영할 수 있습니다.
"마이크로"라는 용어는 마이크로서비스의 크기를 나타내며, 이는 단일 개발팀(5~10명의 개발자)이 관리할 수 있어야 함을 의미합니다. 이 방법론에서는 대규모 애플리케이션을 가장 작은 독립적인 단위로 나눕니다.
모놀리식이란? Archi강의?
쉽게 말해, 모놀리식 아키텍처는 애플리케이션의 모든 소프트웨어 구성 요소를 하나의 패키지로 묶어 놓은 거대한 컨테이너와 같습니다. 모놀리식 아키텍처의 맥락에서 전자상거래 쇼핑몰을 예로 들어 살펴보겠습니다.
단단히 짜여 하나로 되어 있는 Archi전자상거래 응용강의
모든 전자상거래 애플리케이션에는 검색, Rev조회 및 평가, 결제와 같은 기능은 고객이 브라우저나 앱을 통해 이용할 수 있습니다. 전자상거래 사이트 개발자가 애플리케이션을 배포할 때, 이는 단일 모놀리식 유닛으로 구현됩니다. 검색, 평가, 결제와 같은 다양한 기능에 대한 코드는 각각 독립적으로 구성됩니다. Rev조회 및 평가, 결제 기능은 동일한 서버에서 실행됩니다. 애플리케이션 확장을 위해서는 이러한 애플리케이션의 여러 인스턴스(서버)를 실행해야 합니다.
마이크로서비스란? Archi강의?
마이크로 서비스 Archi강의 비즈니스 도메인을 위해 개발된 소규모 자율 서비스 모음으로 애플리케이션을 구축할 수 있는 아키텍처 개발 스타일입니다. 느슨하게 결합된 서비스 모음으로 애플리케이션을 정리하는 데 도움이 되는 구조적 스타일 아키텍처의 변형입니다. 마이크로서비스 Archi강의에는 세분화된 서비스와 경량 프로토콜이 포함되어 있습니다.
마이크로서비스 아키텍처로 개발된 전자상거래 애플리케이션의 예를 들어 보겠습니다. 이 마이크로서비스 아키텍처 예시에서 각 마이크로서비스는 하나의 비즈니스 기능에 집중합니다. 검색, 평점 및 평가 등이 그 예입니다. Rev조회 및 결제는 각각 자체 인스턴스(서버)를 가지고 있으며 서로 통신합니다.
마이크로 서비스 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강의
- 각 마이크로서비스마다 별도의 데이터 저장소를 사용합니다.
- 코드의 완성도를 비슷한 수준으로 유지하세요.
- 각 마이크로서비스별로 별도의 빌드를 수행합니다.
- 각 서버는 항상 상태를 저장하지 않는 서버로 취급하십시오.



