2017-02-01 2 views
0

좋아, ELB 뒤에있는 확장 가능한 웹 계층의 탄력적 인 beanstalk 응용 프로그램이 있습니다. 간단히 말해, 웹 계층 내 특정 인스턴스를 SNS 주제에 등록 할 수 있어야합니다. 나에게 안전한 표준 IP 주소 (여기에 파이썬 How can I get the IP address of eth0 in Python?에 자세히 설명되어 있음)를 얻고 간단히 http 구독자로 그 IP를 사용하는 SNS 주제에 가입하는 것이 안전합니까?SNS 주제에 탄력적 인 beanstalk 애플리케이션 내에서 특정 인스턴스를 구독하는 방법은 무엇입니까?


왜? 좋은 질문 ...

내 데이터 모델은 많은 객체로 구성되어 있으며 그 중 많은 객체가 해당 객체를 관찰 할 수있는 사용자 집합을 가질 수 있습니다. 내 애플리케이션의이 웹 티어는 클라이언트 애플리케이션을위한 소켓 인터페이스 (socket.io 사용)를 처리한다.

사용자가 시스템에서 생성 될 때 사용자의 SNS 주제도 마찬가지이므로 관심있는 개체가 변경 될 때 해당 사용자에게 알림을 보낼 수 있습니다. 이 설정을 계획하는 방식으로 클라이언트 응용 프로그램은 socket.io를 통해 EB에 연결됩니다.이 지점에서 연결되는 서버 인스턴스는 해당 사용자의 SNS 항목에 가입합니다. 그런 다음 관심있는 객체가 변경되면 관련 사용자의 항목에 알림이 게시되어 클라이언트 응용 프로그램과 연결이 열려 있음을 서버 인스턴스에 알리고 소켓에 메시지를 보낼 수 있습니다.

클라이언트 응용 프로그램이 특정 인스턴스에 연결되어 있으므로 해당 인스턴스 만이 해당 소켓을 통해 메시지를 보낼 수 있으므로 특정 인스턴스가 웹 계층의 외부 CNAME 또는 IP 대신 구독되는 것이 중요하다고 생각합니다. 로드 밸런서를 구독하면 사용자가 연결되어 있지 않은 인스턴스에 알림이 전달 될 수 있으므로 좋지 않습니다.

나는 정상에서의 질문이 모두 필요하다고 생각하지만 내 추론에 결함이있는 경우 창조적 인 솔루션에 개방적입니까 ??

답변

0

누구나이 같은 토끼 구멍에 찔려 넣는다면 ... 해결책은 SNS와 SQS보다는 Redis pub/sub를 사용하는 것이 었습니다.