tomcat queue
인터페이스
async
was로 들어온 request는 톰캣 큐에 쌓인다. 그런데 톰캣 queue의 캐파보다 더 많은 request가 들어온다면? was가 터질 수 있다.
이러한 문제를 방지하기 위해 was와 request queue를 분리할 필요가 있다. 더하여, 인터페이스에 대한 요건이 추가될 수 있다. 통신 방식을 async와 sync로 정한다든지, dto 간 맵핑을 수행해준다든지 하는 것들이다.
인터페이스는 새로운 개념이 아니다. 예전부터 사용해오던 것이고. kafka는 오픈소스로 개발해 유명해진 인터페이스이다. 금융권에서는 eai, mca, fep 등의 인터페이스 제품을 써왔다.
B 서버를 호출하는 데 response가 오기까지 10초가 걸렸다. 이거 때문에 우리 서버가 맨날 터져서.. async로 호출하는 것을 고려했었다. javascript나 scala에서는 손쉽게 사용했었으니까 쉬울 줄 알았다. 그런데 java에서 async를 구현한다는 게 생각보다 복잡했다!!
javascript 예시를 살펴보자. async를 구현하려면 비동기 동작을 쌓아두는 task queue와 이 큐를 관리하는 event loop가 필요하다. 이거를 언어나 프레임워크에서 지원해준다면 땡큐지만, 그렇지 않다면 서버 단에서 구현해야 한다 ㅎㅎ
결국은 사내 인터페이스 시스템을 접하고, 인터페이스에서 지원하는 async를 이용해서 문제를 해결했다.