공부/인프런 - Rookiss

Part 4-5-3. Job Queue : Command 패턴

셩잇님 2023. 12. 26. 17:47
반응형

 

Job Queue

 

 지난 시간에는 채팅 테스트를 인원 수(1, 10, 100명)를 설정한 후 직접 실행해보는 시간을 가졌다. 이 때 인원이 늘어남에 따라 나타나는 부하의 문제점을 확인하였다. 이를 처리하기 위한 기능이 Job, Task인 것을 알았으니 오늘은 이를 학습해보는 시간을 가져보자. 😎

 


 

🖥️ Command Pattern

 

 지금 작성한 스크립트의 문제점은 쓰레드가 일감을 받으면, 아래 이미지와 같이 다른 사람에게 일을 시키는 것이 아닌 일감을 받음과 동시에 이를 처리까지 모두 하고 있는 것이 문제되는 것이다. 이 때 lock의 특성까지 더 해져 한번에 하나의 쓰레만을 이용하여 일을 진행하다보니, 대기하는 쓰레드들이 쌓이는 것이다.

 

 

 그래서 이를 해결하기 위해서는 아래 이미지와 같이 다른 쓰레드들은 Queue(큐, =일감 저장소)에 일감을 그냥 두고가고 (저장), 일을 전문적으로 처리하는 쓰레드를 만들어 해당 직원이 일감을 모두 해결하는 방식으로 진행할 것이다.

 

 


 

 또한 커맨드 패턴은 정보처리기사 디자인 패턴에 나왔던 내용인데 한번 더 복기하자면 아래와 같다.

 

🎈 생성, 구조, 행위 패턴 중 행위 패턴의 일부였던 Command Pattern

 

 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행된다. 따라서 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행 할 수 있는 재사용성이 높은 클래스를 설계하는 패턴이다. 즉 사용자의 요구사항을 객체로 캡슐화하는 것이다.

 

 

 

반응형