2009-06-03 2 views
4

참조 내가 가진 another SO question이, 내가 트위터 스칼라에 레일에서 이동에 대한 this article를 제공하고, 문서에서이 주석입니다되었습니다Twitter와 Scala에 대한 미들웨어의 의미는 무엇입니까?

올해 말까지, 페인 트위터 전체를 희망했다 미들웨어 인프라 및 해당 API 이 새 언어로 이식되었습니다. 루비는 으로 남아 있지만 프런트 엔드에만 있습니다. "우리는 건물 사용자에 직면 기능 레일 여전히 행복 ... 성능 현명한, 그것은 클릭하면 웹 페이지의 주위에 사람들을위한 괜찮아요. 그것은 우리가 이동 한 물건의 무거운, 비동기 처리 유형의 away 에서. "

여기서 미들웨어는 무엇을 의미합니까? 루비를 프론트 엔드에 넣으려는 것이 정확히 무엇입니까? 이것은 ORM이 거의 사용되지 않는 프론트 엔드의 레일을 의미합니까? 스칼라와 어떻게 만나는가? 이 의견은 무엇을 의미합니까?

그냥 아키텍처를 이해하려고합니다. 고맙습니다.

답변

5

N-Tier Architecture의 형식입니다. 처음에는 대부분의 사이트가 웹 서버와 데이터베이스가있는 2 계층 아키텍처로 시작합니다. 웹 서버는 사용자가 보는 페이지를 제공하는 반면, 동적 페이지는 데이터베이스에 액세스합니다.

아키텍처가 여러 계층으로 분리되어있는 경우 대개 웹 응용 프로그램이 호출 할 응용 프로그램 서버와 함께 전면에 웹 응용 프로그램이 있습니다. 이 애플리케이션 서버는 비즈니스 로직을 포함하고 애플리케이션을 기능적으로 만든다. 응용 프로그램의 "얼굴"은 물건을 예쁘게 보이게 만들고 사용자에게 표시하기 위해 서식을 지정하기 만합니다.

응용 프로그램 서버 또는 "미들웨어"는 단순히 웹 서버에서 호출 할 수있는 기능 모음입니다. 미들웨어는 대부분의 활동이 메시지를 보내는 트위터와 같은 사이트에 강력해야하며 웹 사이트에 액세스하는 사람들의 활동이 그다지 많지 않습니다.

레이어 간의 상호 연결은 표준 웹 서비스 기술 일 가능성이 있지만 웹 응용 프로그램 (Ruby on Rails)이 응용 프로그램 데이터에 액세스 할 수있는 REST 또는 다른 종류의 웹 서비스 일 수 있습니다.

레일스는 이러한 유형의 아키텍처에서 모든 ORM 및 데이터 관리를 미들웨어로 강등 시켰습니다.

미들웨어는 또한 막연한 용어이며 많은 계층으로 구성 될 수 있습니다. 따라서 이들을 N 계층이라고 부릅니다. 트위터는 메시징에 중점을 둔 미들웨어의 다른 부분을 가지고있는 반면, 다른 부분은 메시지 관리, 계정 관리 등을 담당 할 것입니다.

아이디어는 하드웨어를 추가하여 위쪽으로 확장 할 수 있습니다. 웹 페이지를 제공하는 서버 클러스터, 메시징을 처리하는 다른 클러스터, 그리고이를 지원하는 데이터베이스 서버 클러스터로 구성됩니다. 정확한 과학은 아니며 각 아키텍처는 다르지만 일반적으로 생각할 수있는 방법입니다.

+0

여전히 훌륭한 답변입니다. 고맙습니다. – johnny

-1

이 경우 메시징 인프라입니다. 아마 루비 기반의 맞춤 솔루션에서 JMS 솔루션으로 전환했을 것입니다.

+0

JMS입니까? 죄송합니다. 나는 여기서 약어를 잃어 버렸다. – johnny

1

"ruby twitter scala payne"으로 인터넷 검색을 시도해보십시오. 그러면 주제에 대해 필요한 것 이상을 얻을 수 있습니다.

필자의 (아마도 불완전한) 이해는 트위터의 "백엔드"의 상당 부분이 특히 잘 코딩되어 있지 않다는 것입니다 (Alex Payne 따옴표를 골라내는 Obie Fernandez' post 참조). 이것은 앱의 사용이 기하 급수적으로 증가하기 시작하면서 이벤트에 의해 추월 된 앱의 초기 퀵 해킹 특성에서 비롯된 것으로 보입니다. 트위터 (그리고 Rails 협회)가 지적한 손가락의 수는 그 당시에는 "실패한 것"이었습니다.

트위터는 메시지 대기열에 크게 의존하며 스칼라로 작성된 것으로 이해하는 부분입니다. 개인적인 경험이 없으므로 작업 언어를 매우 잘 선택할 수 있습니다.

1

스칼라로 마이그레이션 한 것은 Ruby-ORM-DB 백업 솔루션에서부터 Scala를 사용한 분산 메시징 시스템에 이르기까지 "대기열"메시지입니다. Twitter의 볼륨이있는 서비스에는 특별한 요구 사항이 있으며 자체 메시지 솔루션을 만들었습니다. "Kestrel"이라고합니다