마이크로 서비스 접근법의 긍정과 부정에 대해 이야기 해 봅시다.
첫 번째 부정. 마이크로 서비스를 만들면 코드에 고유 한 복잡성이 추가됩니다. 오버 헤드를 추가하고 있습니다. 환경을 복제하기 어렵게 만듭니다 (예 : 개발자). 간헐적 인 디버깅 문제를 더욱 어렵게 만들고 있습니다.
실제 단점을 설명하겠습니다. 페이지를 생성하는 동안 호출 된 100 개의 마이크로 서비스가 있고 각각 99.9 %의 시간이 올바른 경우를 가정 해보십시오. 그러나 시간의 0.05 %가 잘못된 결과를 낳습니다. 그리고 0.05 %의 시간은 연결 요청에 TCP / IP 시간 초과가 필요하고 5 초가 걸리는 느린 연결 요청이 있습니다. 요청한 시간의 약 90.5 %가 완벽하게 작동합니다. 그러나 약 5 %의 시간 동안 잘못된 결과가 발생하고 약 5 %의 시간이 페이지가 느립니다. 재현 할 수없는 모든 실패에는 다른 원인이 있습니다.
모니터링, 재생 등을위한 툴링에 대해 많은 생각을하지 않는 한, 이것은 혼란스러워 질 것입니다. 특히 하나의 마이크로 서비스가 다른 마이크로 서비스를 호출하면 다른 마이크로 서비스는 몇 개의 계층을 호출합니다. 일단 문제가 생기면 시간이지나면서 악화 될뿐입니다.
좋습니다, 이것은 악몽처럼 들립니다 (그리고 한 회사 이상이이 길을 따라 가면서 스스로 큰 문제를 일으켰습니다). 성공은 당신이 잠재적 인 단점을 분명히 알고 있으며이를 해결하기 위해 지속적으로 노력하는 것만 가능합니다.
그렇다면 그 모 놀리 식 접근법은 어떻습니까?
모 놀리 식 애플리케이션은 마이크로 서비스만큼 모듈화하기 쉽다는 것이 밝혀졌습니다. 그리고 함수 호출은 실제로 RPC 호출보다 저렴하고 안정적입니다. 따라서 더 안정적이며 더 빠르게 실행되며 코드가 적게 든다는 점을 제외하고는 같은 것을 개발할 수 있습니다.
그렇다면 왜 회사가 마이크로 서비스 접근 방식으로 이동합니까?
대답은 확장 할 때 모 놀리 식 응용 프로그램으로 수행 할 수있는 작업에 제한이 있기 때문입니다. 사용자가 많거나 요청이 많으면 데이터베이스가 확장되지 않고 웹 서버가 코드를 메모리에 보관할 수없는 등의 시점에 도달합니다. 또한 마이크로 서비스 접근 방식을 통해 애플리케이션을 독립적으로 증분 업그레이드 할 수 있습니다. 따라서 마이크로 서비스 아키텍처는 애플리케이션을 확장하는 솔루션입니다.
필자의 개인적인 경험은 스크립팅 언어 (예 : Python)의 코드에서 최적화 된 C ++로 전환하면 일반적으로 성능과 메모리 사용 모두에서 1-2 배 정도 향상 될 수 있다는 것입니다. 다른 방식으로 분산 아키텍처를 사용하면 리소스 요구 사항이 크게 증가하지만 무한 확장 할 수 있습니다. 분산 아키텍처를 작동시킬 수는 있지만 더 어렵습니다.
따라서 개인 프로젝트를 시작하는 경우 모 놀리 식으로 진행하십시오. 잘하는 법을 배우십시오. (Google | eBay | Amazon | etc)이 있으므로 배포하지 마십시오. 분산 된 대기업에 상주하는 경우 회사의 운영 방식에주의를 기울이고 망치지 마십시오. 전환을해야한다면, 매우 잘못하기 쉬운 일을하기 때문에 조심해야합니다.
공시, 저는 모든 규모의 회사에서 약 20 년의 경험을 가지고 있습니다. 그리고 그렇습니다. 모 놀리 식 아키텍처와 분산 아키텍처가 모두 가깝고 개인적으로 보였습니다. 분산 마이크로 서비스 아키텍처는 실제로는 깨끗하고 나은 것이 아니라 필요하기 때문에해야 할 일이라는 것을 그 경험에 근거하고 있습니다.