5

일반적인 네트워킹 기능 (메시징, 벽 등)이있는 레일 앱을 출시하는 데 거의 다름. 요청/응답주기에서 벗어난 작업에 대해 일종의 백그라운드 처리 (Bj 가능성이 높음)를 사용하고 싶습니다. 사용자가 가입 이메일을 통해 이메일 알림에 친구를 초대 할 때이 일어날 것Amazon SQS가 올바른 선택입니까? 레일 성능 문제

.

데이터베이스에서 이러한 초대 및 알림을 삭제하고 모델을 사용한 다음 x 분마다 작업자 프로세스로 처리해야하는지 또는 Amazon SQS를 사용해야하는지, 메시지 및 거기에 초대하여 내 작업자가 Amazon SQS에서 처리하여 (초대/통지 보내기) 처리 할 수있게하십시오.

아마존의 접근 방식은 내 데이터베이스를로드받을 것이다 그러나 나는 거기에서 메시지를 검색하는 속도가 느린 것 같다.

당신은 어떻게 생각하십니까? 당신이 레일의 성능 문제가 있지만이 특정에 대해 알고

답변

12

귀하의 제목 상태? 나머지 질문에서 가능한 미래의 성능 문제를 예상하고있는 것처럼 들립니다. 성능 문제를 현명하게 처리하는 유일한 방법은 응용 프로그램을 야생으로 가져 와서 프로파일 링하는 것입니다. 이렇게하면 실제 성능 문제가 무엇인지에 대한 경험적 데이터를 얻을 수 있습니다.

아마존 SQS 무료 아님을 감안할 때 데이터베이스 부하가 문제가되면 그것을 사용하는 것은 거의 확실 응용 프로그램에 복잡성을 추가 할 사실은, 나는 그것을 경우로 마이그레이션 것입니다. 문제가 발생하기 전에 두 번째 추측을 시도하지 마십시오. 앱이 실제로 실행될 때 다른 문제에 직면 할 가능성이 높으므로 일부는 고려하지 않았을 가능성이 높습니다.

요점은 백그라운드 처리를 사용하기로 결정했기 때문입니다. 즉, 즉시 처리되지 않는 모든 종류의 처리가 Rails의 요청/응답주기에 속하지 않는다는 점에서 올바른 결정입니다. Rails 프로세스를 차단합니다. 필요한 경우 나중에 Amazon으로 확장 할 수 있습니다.

+0

, 즉 아마 최고의 : 그것은 아마존 SQS 다시 어떤 펀치를 보유하지 않고 StormMQ를 비교로

나는 재미있는이 블로그 시리즈를 발견했다. 나는 단지 준비를 원하고 완벽 주의자이기 때문에 가능한 한 많이 예상하려고 노력합니다. 그러나 여기에서는 멋진 백그라운드 프로세스를 설정하고 필요할 경우 큐의 저장소를 변경합니다. 감사 –

3

나는 당신이 당신이 필요하지 않은 경우 응용 프로그램을 지나치게 복잡하게하지 않으려 존 Topley에 동의합니다. 그런 종류의 결정을 일찍하는 것이 좋을 때가 있다고 말하면서 처음부터 높은 짐을 예상합니까? 기존 사용자에게이 기능을 공개하고 있습니까, 아니면 이륙 할 수도 안되는 공개 사이트입니까?

당신이 다음이 좋은 단계가 될 수있는 처음부터 많은 양의 트래픽을 처리해야합니다 알고 있다면. SQS를 사용하기 위해 돈을 쓰고 싶지 않다면 RabbitMQ와 같은 자유 대기열 솔루션을 살펴보십시오.

나는 현재 SQS를 통해 한 달에 몇 백만 메시지를 밀어 꽤 잘 작동합니다. 수시로 다운되거나 느려지도록 계획하십시오. 따라서 재시도 기능과 지수 적 백 오프가 필요합니다. 좋은 점 중 하나는 한 번에 10 개의 메시지를 가져와 대기열을 빠르게 처리 할 수 ​​있다는 것입니다. 하나의 요청을 사용하여 10 개의 메시지를 가져 와서 1을 1 씩 처리 할 수 ​​있습니다.

4

아마존 EC2에서 이미 호스팅 되었습니까? 기존 앱을 AWS로 옮겨서 SQS를 사용할 수는 없지만 이미 Amazon의 인프라를 사용하고 있다면 SQS는 훌륭한 선택입니다. RabbitMQ와 같은 자신 만의 메시징 시스템을 설정할 수도 있지만 SQS를 사용하면 걱정할 필요가없는 것이 하나 있습니다.

delayed_job 또는 background_job과 같이 백그라운드 처리를 백그라운드에 추가하는 옵션이 많이 있지만 개인적인 선호는 Workling입니다. 그것은 당신에게 당신의 작업의 실제 구현을 변경하지 않고도 다른 배경 주자를 연결할 수있는 멋진 추상화 계층을 제공합니다.

나는 Workling fork that adds an SQS client을 유지하고 있습니다. 몇 가지 단점이 있습니다 (자세한 내용은 my blog post의 의견을 읽으십시오). 그러나 전반적으로 그것은 마지막 시작시에 잘 작동했습니다.

나는 또한 SQS를 별도의 Ruby (Rails가 아닌) 프로젝트에 사용했으며 일반적으로 안정적이고 빠르다고 생각했습니다. James가 지적한 것처럼, 최대 10 개의 메시지를 한 번에 읽을 수 있으므로 분명히 할 수 있습니다. (Workling SQS 클라이언트가이 작업을 수행하고 로컬에서 메시지를 버퍼링합니다).

0

EC2로 이동하는 데 문제가 있으면 onlinemq.com과 같은 다른 서비스를 사용할 수 있습니다.

2

아마존 SQS는 다음과 같은 것들이 중요하게 경우를 제외하고 좋은 서비스입니다 :

  • 성능
  • 법률
  • 감사 및 거래
  • 메시징 숙어 메시지 등록
  • 보안, 정품 및 대기열
  • 허가

이 중 중요한 것이 있으면 StormMQ, RabbitMQ 또는 onlinemq.com과 같은 실제 엔터프라이즈 MQ 서비스를 살펴 봐야합니다. 동의 http://blog.stormmq.com/2011/01/06/apples-and-oranges-performance/