728x90
1. load balancer
서버를 여러 곳에 띄우는데 한쪽이 바쁜 상태면 덜 바쁜 곳으로 요청을 인계하는 것을 말한다. 예로 nginx가 있다.
2. Asynchronous 패턴
synchronous 패턴에서는 서버가 한명의 요청에 대한 작업이 마칠때까지 client는 응답을 기다리는 상태로 멈춰있다. 사용자의 수가 많아질수록 전체적인 응답 속도가 느려진다. 문제는 사용자가 응답을 받을 때까지 아무것도 하지 못한다는 것이다.
물론 서버 컴퓨터의 cpu와 메모리를 늘려서 서버의 연산 속도를 늘려 해소할 수 있겠지만 가격이 비싸고 요청수가 다시 증가하면 문제는 반복된다.
asynchronous 패턴으로 위와 같은 문제를 해결할 수 있다.
클라이언트와 서버 사이에 message queue/cache를 둔다. apache kafka가 대표적인 프레임워크이다.
많은 클라이언트들의 요청은 순차적으로 message queue에 들어간다. 서버는 queue에서 하나씩 작업을 pull하고 처리한 결과를 queue에 넣어준다.
이렇게 클라이언트와 예측 프로세스가 분리되어 있으면 사용자는 응답을 기다리는 동안 다른 작업을 할 수 있다. 그러다가 queue에 응답이 오면 가져온다.
물론 메시지를 가져올때 시간이 걸리기 때문에 realtime이 중요하다면 이런 구조가 적절하지 않을 수 있다.
728x90
반응형
'boostcamp AI tech > boostcamp AI' 카테고리의 다른 글
Docker (1) | 2024.03.06 |
---|---|
Airflow (0) | 2024.02.26 |
Closed Book Question Answering (0) | 2024.02.22 |
Passage Retrieval - Scaling up, FAISS (0) | 2024.02.19 |
Passage Retrieval - Dense Embedding (0) | 2024.02.16 |