확장 가능한 프로그램: 트래픽이 점점 늘어나도 코드 수정이 없거나 최소한만 수정해서 늘어나는 작업량을 처리할수 있도록 능력 또는 확대될 수 있는 잠재력을 가진 프로그램
MSA에서 확장가능한 서비스를 만들기 위해서는 먼저 서비스에서 각 부분을 모듈 단위 분리해야한다.
분리 기준
1. 의존성이 적은 기능들은 분리 (의존성이 적어질려면 api로 호출보다는 db, 큐 등 저장소를 사용하여 의존관계를 줄여준다 )
2. .확장 가능성이 염두하고 성능 조절해야하는 단위로 분리 (특정 모듈이 독립적으로 확장할 필요 여부이다. )
위와 같이 분리를 하면 노드 밸런스 등을 앞단에 사용하고 해당 트래픽을 받는 모듈을 필요한 갯수만 띄우므로써 코드 수정이 없이 확장이 가능해진다.
주의 사항 )
1. 분할을 많이 하게 되면 네트워크 비용 등 인프라 비용이 많이 나갈 수 있다.
2. 유지 보수 할 관리 포인트가 많아진다. (자동화가 안되어 있다면)
3. 배포에 시간이 많이 소요될 수 있다. . (자동화가 안되어 있다면)
4. 지연시간에 민감하고 다른 서비스와 밀접한 연관이 있다면 분리하지 않는 것이 좋다
'ML SYSTEM 설계' 카테고리의 다른 글
LCEL (Langchain) - 의문1. 어떻게 구현되어 있는건지 (0) | 2024.04.21 |
---|---|
LCEL (Langchain) - 시작하기 (0) | 2024.04.20 |