소켓 분산작업을 위해 아키텍쳐를 구상하면서 3가지의 파트로 socket을 분리하였다.
로드 밸런싱 서버(Road Balancing Server)
에이전트가 처음 접근하는 서버로 붙어야하는 서버의 ip&port를 알려준다.
브릿지 서버(Bridge Server)
WAS에서 접근하는 서버로 N개의 소켓의 정보와 관련정보를 전부 가지고 있다.
기존 소켓 서버(Socket)
기존 소켓의 기능을 제공하며, 로드 밸런싱 서버와 브릿지 서버에 연결되어있다.
이때, 처음 적용한 방식은 각 파트별로 repository 관리하는 방식이었다.
각 버전별, 기능별로 구성이 다르기 때문에 아래와 같이 구성을 했었다.
모노레포는 모놀리식 저장소(monolithic repository)라는 뜻으로, 프로젝트에 필요한 모든 코드를 하나의 저장소(repository)에 포함시키는 개발 방법론입니다. 모든 코드가 하나의 저장소에 저장되기 때문에 복잡한 의존성 문제를 해결할 수 있고, 코드 공유와 재사용성이 용이해집니다.
💡 현재는 yarn workspace로 점진적 yarn berry workspace 적용
각 패키지에 node_modules는 yarn workspace로 nodeLink로 연결 해줍니다.
하단과 같이 private과 workspace를 설정합니다.
//root package.json
{
...
"private": true,
"workspaces": [
"packages/**/*"
],
...
}
모노레포로 구성을 변경 후 새로운 라이브러리를 적용방식은 다음과 같습니다.
yarn add -W 라이브러리
yarn workspace 패키지명 add 라이브러리
공통 표준을 repository 를 따로 구성하여 적용