당신에게 꼭 필요한 마지막 엔터프라이즈 웹 아키텍처 패턴입니다. 다음까지.
목표는 다음을 수행하여 개발자 경험을 최적화하는 것입니다.
project omega 개념 증명 - 마이크로서비스 모놀리스 하이브리드
project omega 데모 - Kubernetes 마이크로서버 및 독립형 컨테이너 배포
확장성을 얻기 위해 개발자 효율성을 희생할 필요가 없다는 것을 증명하고 싶습니다. 마이크로서비스와 모놀리스의 장단점에 대한 자세한 내용은 마이크로서비스 및 모놀리스를 참조하세요.
내 생각에 많은 업계 전문가들은 이것이 우리의 주요 3가지 옵션이라고 믿게 만들 것입니다.
저는 우리가 이러한 옵션 중 어느 것도 선택할 필요가 없다는 것을 보여주고 싶습니다. 약간의 창의성을 발휘하면 단일체이자 마이크로서비스 세트인 진정한 "하이브리드"를 가질 수 있습니다. 현재 전략으로는 모놀리식과 마이크로서비스의 모든 단점을 제거할 수는 없지만 두 가지 모두의 많은 문제점을 제거할 수는 있습니다.
기술 스택은 내가 증명하려는 높은 수준의 개념과 대부분 관련이 없지만 이 프로젝트에서는 다음을 사용할 것입니다.
대규모 애플리케이션을 보유한 기업은 수평적 확장이 가능하도록 마이크로서비스를 점점 더 선호하고 있습니다. 따라서 이를 달성하기 위해 우리는 다음과 같은 것을 보고 있습니다.
다음은 수평 확장이 구현될 수 있는 한 가지 방법을 보여주는 또 다른 버전입니다.
이 길을 따라가면 결국 지역 개발에 실질적인 문제가 발생하게 됩니다. 제품이 어떤지, 개발자가 몇 명인지, 누가 어떤 작업을 얼마나 자주 작업하는지에 따라 다릅니다. 즉, 마이크로서비스를 선택하는 기업의 대부분은 개발자가 일상적인 개발을 수행하는 방법에 대해 어려운 선택을 해야 하는 상황에 처하게 될 것입니다. project omega 의 목표는 로컬에서 실행되는 동안 모든 서비스를 하나의 애플리케이션으로 결합하여 로컬에서 서비스를 실행하는 오버헤드를 제거할 수 있음을 보여주는 것입니다.
폴더 구조는 다음과 같습니다.
마이크로서비스로 배포된 모습은 다음과 같습니다.
각 인스턴스에는 모든 코드의 복사본이 있지만 특정 마이크로서비스에 대한 초기화, 서비스 엔드포인트 경로 및 작업자 프로세스만 실행합니다.
이것이 바로 SERVICE_KEY
라는 환경 변수를 찾거나 환경 변수가 없으면 모든 서비스를 초기화하기 때문에 애플리케이션을 로컬에서 모놀리스로 실행하는 것이 매우 간단한 이유입니다.
기타 서비스별 초기화의 예:
Startup이 호출되면 ProjectOmegaService
상속하는 유형에 대한 어셈블리를 검색하고 인스턴스를 생성하며 해당 서비스의 초기화 논리를 실행합니다. 로컬로 실행하면 모두 실행됩니다.
필수 구성 요소를 설치합니다.
Windows에서 실행되는 최신 버전의 Docker를 가져오려면 한동안 이 작업을 수행하지 않은 경우 WSL 2 설치 및 WSL 배포판 새로 고침과 같은 몇 가지 추가 단계가 필요할 수 있습니다. Docker 웹사이트의 지침을 따르세요.
단계:
yarn run installAll
실행합니다.yarn run syncEnvFiles
.env.server
에서 OMEGA_DEFAULT_DB_PORT
및 OMEGA_MSSQL_HOST_PORT
변경합니다.yarn run dockerDepsUpDetached
명령을 사용하여 종속성을 시작합니다.yarn run dbMigrate
때 또는 데이터베이스 업데이트로 다른 사람의 변경 사항을 받을 때 DB 마이그레이션을 실행하세요.yarn run both
(이것은 동시에 옵션 2의 명령을 실행하는 데 사용됩니다).yarn run client
실행하고 다른 터미널에서는 yarn run server
실행합니다. 처음으로 dotnet test
사용하여 단위 테스트를 실행하기 전 또는 새 DB 스키마에 단위 테스트를 추가한 후:
yarn run dockerDepsUpDetached
사용하여 실행 중이 아닌 경우 종속성을 시작합니다.yarn run testDbMigrate
dotnet test
실행하세요.Docker에서 프로덕션 및 마이크로서비스를 시뮬레이션하려면 다음을 수행하세요.
yarn run dockerDepsUpDetached
사용하여 docker 종속성이 실행되고 있는지 확인하세요.yarn run dockerRecreateFull
실행합니다.Linux에서 개발하는 경우 서버를 시작할 때 다음 오류가 발생할 수 있습니다.
System.AggregateException: 하나 이상의 오류가 발생했습니다. (inotify 인스턴스 수에 대해 구성된 사용자 제한(128)에 도달했거나 열린 파일 설명자 수에 대한 프로세스별 제한에 도달했습니다.)
이는 vscode에서 너무 많은 파일 감시를 사용하기 때문에 발생할 수 있습니다. 다음 명령을 실행하여 inotify
인스턴스 제한을 늘릴 수 있습니다(감시 제한뿐만 아니라 /etc/sysctl.conf
파일에 이미 매우 높게 설정되어 있을 수도 있음).
echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
디자인 패턴 비용 편익 분석: DesignPatternCostBenefit.md
디자인 패턴 변형: DesignPatternVariations.md
결정: Decisions.md
소프트웨어 개발 철학 및 호언장담: https://gist.github.com/mikey-t/3d5d6f0f5316abf9e74fb553be9fdef3