2010-08-26 3 views
5

정부 계약의 경우 트래픽 모니터링 아키텍처를 구축 할 것을 제안합니다. 다음과 같은 구성 요소가 있습니다 :여기 SOA에 대해 이야기하고 있습니까?

  • 비디오 카메라가 관심 영역 주변에 설치되었습니다. 카메라는 카메라의 위치와 방향 및보기 매개 변수를 인식합니다.
  • 거리, 건물 등을 쿼리 할 수있는 GIS 맵 서버
  • 알고리즘은 원시 비디오 및 거리 위치 정보를 받아 자동차 위치를 출력합니다.
  • 또 다른 알고리즘은 자동차 위치와 매우 낮은 레벨의 거리 정보를 취하며 어떤 자동차가 비정상적으로 운전하는지에 대한 정보를 제공합니다.
  • 다른 데이터베이스는 시간이 지남에 따라 자동차 위치 및 이상 보고서에 대한 정보를 수집하며 나중에이를 쿼리 할 수 ​​있습니다.
  • 정보에 통일 된 인터페이스를 제공하기 위해 프록시 데이터베이스 (보다 정확하게는 파사드)가 아카이브 데이터베이스 및 실시간 알고리즘에 설정됩니다.
  • 클라이언트가 프록시와 스트리트 서버에 연결되어 화면의 트래픽 상황을 다양한 그림으로 그립니다.

저는 SOA가 무엇인지 배우고 있습니다. 이것이 SOA (Service Oriented Architecture)의 이상적인 후보입니까? 나는 SOA 서비스가 무국적이어야한다는 말을 들었다. (또는 단지 RESTful 서비스 일까?) 또한 숨겨진 복잡성이 증가하고,해야 할 일이 있기 때문에 한 서비스를 다음 서비스로 파이프하는 것이 바람직하지 않다고 들었다. ("오케스트레이션"?). 위의 서비스는 모듈화되고 재사용 가능합니다. 예를 들어, 카메라, 다양한 유형의 차량 감지 및 변형 알고리즘, 분산 데이터베이스 및 많은 고객이있을 것입니다. 이벤트를 처리 할 수있는 기능이 필요합니다. 예를 들어, 서비스에 등록하고 큰 트럭이이 지점을 지나갈 때마다 알림을 받고 싶을 수 있습니다.

이것이 SOA에 이상적으로 구현되어 있지 않다면, 내가 어디에서 봐야할까요? 이것이 SOA에 이상적이라면, 이것을 설계 할 때 어디에서 시작해야할까요? (기본적으로 Wikipedia의 SOA 페이지를 읽는 것으로 시작하고 있습니다.) 여기를 살펴볼 좋은 사례가 있습니까?

답변

5

그렇습니다. SOA는이 경우에 이상적입니다 (복잡한 기술이 혼합 된 복잡한 분산 시스템).하지만이 개념의 사운드를 통해 SOA 개념을 익히기 위해서는 더 많은 연구가 필요합니다. 어떤 스트레칭으로도 어려운 개념은 아니지만 실제로는 간단하지만 그렇게 할 수있는 방법이 없습니다. 나는 SOA case studies for similarly-sized projects의 성공과 실패로가는 것이 좋습니다.

하위 시스템 중 하나에 대한 외관을 언급합니다. 동일한 개념을 다른 구성 요소로 확장하십시오. 예 : 각 서비스는 복잡한 서브 시스템의 정면입니다.

또한 기술 선택에 여러 가지 다른 웹 서비스를 구현하고 임의의 다른 하위 시스템을 추상화하는 것이 좋습니다. 데이터베이스는 해당 구성 요소 중 하나 여야합니다. 그런 다음이를 사용하는 클라이언트를 작성하십시오. 그렇게하면 개념에 대한 많은 경험과 통찰력을 얻을 수 있습니다.

마지막 생각 : SOA 아키텍처가 우연히 발견 될 수있는 영역 중 하나는 여러 가지 다른 서비스간에 비디오 데이터를 이동해야한다는 것입니다. 매우 많은 양의 데이터를 이동하거나 매우 큰 데이터 세트에서 대량 트랜잭션을 수행 할 때 상태에 관계없이 SOA의 트랜잭션 특성으로 인해 성능 문제가 발생할 수 있습니다. 잠재적으로 심한 병목 현상을 피하려면 비디오를 현지화 된 상태로 유지하거나 백엔드 서브 시스템 (치트)을 구현해야합니다.

+0

아주 좋은 조언입니다. 감사. 하나의 의견이지만, 내 프레임 워크 내에서 stateless가 될 수없는 여러 서비스가 있습니다 (또는이 경우 다른 어떤 stateless 수단을 오해 한 것입니다). 예를 들어, 차량 위치 서비스는 비디오 서비스의 클라이언트가되어 새로운 비디오 프레임을 지속적으로 살펴봄으로써 자동차의 위치 (일종의 상태)를 추적합니다. 아마도 중요한 것은 각 서비스가 고객의 상태를 유지하지 않아야한다는 것입니다. 나는 여기에서 벗어날 수 있다고 생각합니다. – JnBrymn

+0

서비스가 청취자를 추적하고 새로운 정보를 사용할 수있을 때마다 알려주도록하려면 어떻게해야합니까? 이것은 고객의 서비스 유지 상태를 나타내는 것은 아니지만 서비스가 클라이언트에 대한 포인터를 유지하고 있음을 의미합니다. 이게 다 뭐 아플까? – JnBrymn

+0

클라이언트와 서비스의 결합이 더 엄격합니다. 클라이언트가 오프라인 상태 일 수 있으며 이러한 상황에서 서비스가 수행해야 할 작업을 결정하고, 중단하고, 무시하고, 다시 시도하거나 다른 시스템에 알리십시오. – Kwebble