2010-12-08 2 views
2

페이스 북 등의 소셜 네트워크를 통합하여 사용자의 친구가 읽거나 클릭하거나 댓글을 단 항목을 표시해야합니다. 어떤 아키텍처 문제가 발생합니다 :소셜 네트워크의 REST 서비스를 소비하는 데 대한 질문이 있습니까?

질문 : a) 내 app db에 사용자의 친구 목록을 캐시해야합니까? 단점은 친구 목록이 변경 될 수 있다는 것입니다. 또는 로그인 할 때마다이 목록을 가져와야합니까?

b) 사용자가 oauth를 사용하여 내 앱에 로그인하면 친구 목록을 가져 오는 가장 좋은 방법은 무엇입니까? 웹 요청 스레드에서이를 수행해야합니다. 우리의 로컬 db, 또는이 목록을 가져 오려면 다른 작업/스레드/배치 작업을 생성해야합니까?

c) 사용자 미리보기 이미지 : 사용자가 로그인하면 사용자 프로필 미리보기 이미지를 캐시하여 내 앱에서 제공해야하나요? 아니면 페이지에 프로필 pic url (소셜 사이트 가리키고 있음)을 삽입해야합니까?

답변

1

소셜 네트워크 (SN)에 통합 된 적이 없기 때문에 제 조언이 일반적입니다 (미안). 시스템의 사용

A) 캐싱

  • 어떤 종류의 당신이 기대? 목표 SN에 일정 기간 동안 앱에서 요청할 수있는 요청 수에 제한이있는 경우 중요합니다. 가설적인 예 : 한 시간에 100 건의 로그인을 얻으려고하지만 SN이 한 시간에 50 건의 요청을 제한하면 캐시해야합니다. 나쁜보기 perhaops 그러나 나는 당신이 아이디어를 얻는 는다는 것을 확실하다.
  • 얼마나 자주 데이터가 변경되고 잘못되었을 때 사람들이 신경 써야합니까? 사람들의 친구가 얼마나 자주 바뀌는 지와 대략적인 데이터 세트를 얻을 수 있다면 정확도를 유지하면서 효율적 일 것입니다.
  • 새 세트를 다시 가져 오기 전에 데이터가 변경되었는지 SN을 쿼리 할 수 ​​있습니까?
  • 데이터를 가져 오는 것과 관련된 성능 문제가 발생하면 캐싱을 고려해야합니다.

B)의 OAuth

비동기 그것을 할 수 있다면 그것은 아마 좋은 생각이 아니다. 당신은 목표 시스템에 대한 통제권이 없습니다. 그래서 일이 잘 안되면 어떻게합니까? 가능한 한 간단하게 만들고 싶을 것입니다. 나는 AJAX를 사용하는 것을 제외하고는 비동기로 작업하는 것에 대해 많이 알지 못합니다 (그러나 이것은 백엔드에있는 것처럼 들립니까?). 그래서 확실하지 않습니다.

C) 썸네일

  • 다시 연결에 대상 SN의 정책을 확인; 만약 그들이 그것을 허용한다면, 그렇지 않으면 옵션입니다 ...
  • 당신이 이미지를 당기는 것이 주요한 것이라면, 당신의 시스템보다 당신의 시스템이 더 많이 이용 될 가능성이 있습니다. 이것은 그들에게 연결하는 것이 의존성이되어서 앱이 엉망이되게 만들지는 않을 것이라고 제안합니다. 또는 가용성이 의심스러운 경우 모든 것을 함께 유지하여 일관된 앱을 제공 할 수 있습니다.
  • 호스팅 계획에 대역폭 제한이나 대역폭 관련 비용이있는 경우 연결하여 $$을 (를) 절약 할 수 있습니다. 하지만 이것이 바로 타겟 SN이 허용하지 않는 이유입니다.
  • 대상 SN이 정책을 변경하기로 결정한 경우 (링크를 차단 한 경우) 어떻게 알 수 있습니까?
  • 우연히도 StackOverflow는 연결 방식을 취하지 만이를 허용하도록 특별히 만들어진 클라우드 기반 서비스를 대상으로합니다 (알고있는 한).
관련 문제