2014-02-23 6 views
0

에 나는 것입니다 응용 프로그램 만들고있어 :노드 API 아키텍처 AWS

  • iOS 및 안드로이드 모바일 애플 리케이션에서 수집 한 데이터를 표시
  • 웹 기반 "대시 보드"애플 리케이션을

앱을 사용하려면 최종 사용자가 Google에 계정을 만들어야합니다 (대부분 Facebook/Twitter 로그인을 사용하지 않습니다).

모든/호스팅 EC2/RDS/S3를 (모든 탄성 콩 줄기에 캡슐화)

| Web Browser | <----> | sails.js app | <-------> |actionhero.js API| 

                 ⬆︎ 
                 ⬆︎ 
| Mobile app(s) | <-------------------------------------/ 

는 지금까지 내가 actionhero.js에서 백업 API의 대부분을 구축했습니다 사용하여 AWS에서 호스팅 될 것입니다 AWS에서

웹 앱은 사용자의 작은 하위 집합에 불과하므로 API와 웹 앱을 구분하는 것이 좋습니다. 웹 앱보다 모바일 앱의 트래픽이 50 배 더 많을 것으로 기대합니다. API를 확장하여 sails.js 앱을 불필요하게 확장하지 않고도 모바일 사용자에게 서버를 제공 할 수 있습니다.


내 질문은 :

  1. (biuggest 알 수없는) 어떻게 처리해야 인증?sails.js 앱은 API에 대한 요청을 할 수 있어야하며 모바일 애플리케이션도 요청할 수 있어야합니다.

    우리 자신의 인증 서버를 만들기 위해 노드 모듈 oauth2orize을보고 있었지만 Connect/Express 용으로 설계되었으므로 actionhero.js 기반 API에서 활용할 수 있다고 생각하지 않습니다.

    솔루션이 OAuth 서버를 만드는 것이면 EC2 인스턴스에서 호스팅해야합니까?

  2. (AWS 관련 질문) AWS에서 "작업자 계층"환경을 구현하는 데 필요한 사용 사례를 완전히 이해하지 못했습니다. API가 해당 카테고리에 속할 이유가 있을까요?

  3. 데이터 쿼리 및 집계 작업을 실행하려면 별도의 노드 프로세스를 만들겠습니까? 그렇다면 은 자체의 EC2 인스턴스에 해당 백업자가 있어야합니까?

  4. Sails.js와 Actionhero.js는 모두 socket.io를 많이 지원합니다. Sails 앱과 내 API 사이의 통신은 지속적인 WebSocket 연결에서 발생해야합니까? 미래에 새로운 인스턴스를 생성해야한다면 그 규모가 될 것입니까?

이것은 상당히 일반적인 패턴처럼 보입니다. 이 디자인에 커다란 붉은 깃발이 있다면 전에 앞에 나 자신을 구석으로 칠하고 싶습니다. :-) 감사! (AWS 탄성 콩 줄기에 해당)

보너스 질문

내가 돛에 대해 별도의 "응용 프로그램"을 작성합니다.js 서버 및 API 서버? 그것은 그것이 어쨌든 설정하는 유일한 방법 인 것처럼 보이지만 나는 확실히하고 싶습니다.

답변

0

우리는 몇 가지 응용 프로그램에 노드와 beanstalk을 사용했습니다. 인증을 위해 사용자가 앱에 처음 액세스 할 때 계정을 생성하고 기기에 계정 ID를 저장할 수 있습니다. 사용자가 여러 기기에서 로그인 할 수있게하려면 ID/비밀번호 또는 Facebook을 사용하여 사용자를 식별 할 수있는 방법을 제공해야합니다. 그렇게하기가 어렵지 않습니다. 세션을 사용하여 로그인하고 로그인 상태를 유지하십시오. 일반적으로 세션에 사용자 ID를 저장합니다.

작업자 계층은 사용자가 앱에서 분리하려는 대상을위한 것으로, 성공했는지 여부를 알 필요가없는 작업입니다. 알림 서버가 가장 좋은 예입니다. 알림 정보를 SQS 대기열로 보낸 다음 작업자 계층으로 보내면 작업이 수행됩니다. 우리는 지금 이것을 알아 내려고하고 있습니다.

큰 집계 프로세스, 예, 다른 곳으로 가져 가면 프로덕션 서버를 먹지 않습니다. 트랜잭션이 저장되어 누적되므로 계속 진행중인 일부 데이터 집계를 만들 수 있습니다. 사실 이후 큰 롤업은 시간이 많이 걸리고 허약합니다.

소리가 예처럼 들리면 별도의 응용 프로그램이됩니다.

좋은 팁. 우리는 툴팁을 사용하여 앱용 zip 파일을 만듭니다. 노드 배치 도구입니다. 우리는 SVN에서 최신 정보를 확인하고 .svn 디렉토리를 지우는 것과 같은 작업을 수행하여 정리합니다. 간단한 문자열 교체를 수행하여 구성 파일에 구성을 적용한 다음 결과 출력을 압축합니다. 그런 다음 콩나무에로드됩니다. 실제로는 새로운 배치 작업을 수행하는 데 필요한 모든 작업과 시간이 소요됩니다. 우리는 그런 식으로 몇 분 안에 새로운 건물을 얻을 수 있습니다.

콩기름은 매우 실망 스러울 수 있습니다. 그것이 실패 할 때, 당신에게 이유를 말하기에 좋지 않습니다.