블로그 이미지
윤영식
Full Stacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 12. 5. 10:39 Lean Agile Culture

예전 한 서버안에서 대량으로 들어오는 데이터처리를 위하여 Multi-Thread 기반 Queuing을 통하여 막힘없는 서비스를 구현했었다. 하지만 점점더 많은 데이터가 들어올 경우 Scale out을 하려면 결국 어떻게 해야 할까? 서로 다른 Stack에 있는 것들 예로 웹서버와 데이터베이스 사이, 또는 WAS와 데이터베이스사이에 Queue를 두고 사용하면 어떨까 생각해 볼 수 있다. 


  • A<->B 사이에 데이터량은 많으나 느린 성능이 예상될 경우
  • A는 계속 막힘없이 다음 C를 호출해야 할 경우
  • 정기적인 통계정보 생성 및 레포트 생성 배치 Job도 괜찮을 듯 하다. 

결국 Queue기반 Job 분산처리 Server 라고 이해하면 될듯...


▶ GearMan 이해하기

GearMan은 Queue를 하여 요청을 처리하는 Job Server이다. Scale Out을 고려하여 여러대의 서버를 운영하여 Job을 수행해야 한다면 좋은 대안으로 보인다. 



> 파란색의 Client와 Worker만 API를 사용하여 간단히 작성하면 된다. 다양한 언어에 대하여 지원한다


> Client 코드 : 함수를 문자 리터럴로 전송


> Worker 코드 : 함수를 문자 리터럴로 전송 


> 호출 흐름도 

> 구성 예시 : High Availibility와 Fault Tolerance의 분산 환경의 구성이 가능하다



posted by 윤영식