2011-11-07 5 views
1

나는 데이터가 꽤 상호 의존적 인 두 개의 Rails 애플리케이션을 가지고있다. Django에서 다른 응용 프로그램의 모델에 쉽게 액세스하거나 다른 방법으로 공유해야하는 경우, 이는 두 프로젝트를 모두 프로젝트에 포함시키고 다른 응용 프로그램의 모델을 가져올 수 있기 때문에 사소한 일이었습니다. 이 시점에서 나는 Django의 ORM을 사용하여 다른 앱의 데이터베이스에있는 객체에 액세스 할 수 있었으며 일관성 있고 멋진 도구였습니다.Rails 애플리케이션 간의 데이터 액세스 우수 사례?

레일즈에서 압도적 인 분위기를 얻으려는 방법은 다른 응용 프로그램에서 요청할 각 작업에 대해 각 응용 프로그램에 RESTful API 후크를 작성하는 것입니다. 깨끗하고 충분한 모듈 보인다, 그러나 다음과 같이 내가 상황을 가지고 있기 때문에 혼란스러워하기 시작하고있다, •

  • 응용 프로그램 A는 응용 프로그램 B에서 데이터를 가져올 필요가 응용 프로그램에

    1. 만들기 GET 요청을, 그래서 그것은 GET한다 응용 프로그램 B에서 API 후크 요청.
    2. B의 컨트롤러에있는 기능의 일부로 A의 데이터 모델에 속한 데이터가 필요하므로 A에 요청합니다.
    3. 2-3 단계가 연속적으로 발생합니다

    이것이 확장 성의 악몽을 자아내는 것은 명백합니다. 우리의 경우, 새로운 요청이 원래의 요청이 완료되기를 기다리고 있지만 새로운 요청이 완료 될 때까지 결코 기다릴 수없는 경쟁 조건 때문에 요청이 시간 초과됩니다. 우리는 더 많은 웹 서버 프로세스를 추진할 수 있지만 이러한 두 가지 응용 프로그램을 모두 유지 관리 할 때 이러한 불필요한 GET 요청을 처리하지 않는 더 나은 방법이 필요하다고 생각합니다.

    궁극적으로, 제 질문은 1) GET 요청을 발행하는 것보다 다른 Rails 응용 프로그램의 데이터를 얻는 방법이 더 직접적입니까? 아니면 실제로 그것을 죽이는 방식으로 실제로 멋진 디자인을 사용하려고합니까? 2) 디자인 패턴에 맞서 싸우는 경우 정말 좋은 접근 방법입니다.이 앱의 데이터를 서로 의존하여 발생시키는 문제를 해결하는 데 도움이되는 일반적인 조언이 있습니까? 이런 조건? 나는 앱 B가 필요로하는 정보를 A 앞에서 필요로 할 것임을 알았습니다. (바로 지금은 하나의 필드지만 나중에는 더 많은 정보가 될 수 있습니다.) 오른쪽?

  • +1

    이 응용 프로그램 B가를 완료하기 위해 응용 프로그램 A로부터 데이터를 필요로가는 경우 응용 프로그램 A의 요청과 함께 해당 데이터를 응용 프로그램 B에 전달하는 이유는 무엇입니까? –

    답변

    2

    공유 데이터/모델이 많은 경우 해당 모델을 보석/플러그인에 넣고 두 앱에서 사용하십시오. 그래도 DB 구성은 응용 프로그램마다 유지해야합니다.

    그 내용이 밀접하게 짜여져 있다면, 한쪽 또는 양쪽 앱이 올바르게 작동한다고 100 % 확신하지 못했습니다.

    +0

    나는 그것을 보석으로 만드는 것이 완벽한 후보자라고 생각한다. 해당 코드는 짧은 링크를 만들고 추적하는 응용 프로그램 모듈입니다. 이제는 자체 모듈이 될만큼 충분히 중요합니다. 감사! – Aaron

    +0

    @Aaron 문제가 없습니다. 몇 주 전에 주 앱에서 관리자 부분을 분리하려고 할 때도 똑같은 작업을 수행했습니다. –