2017-03-27 13 views
1

처음으로 Elastic을 프로덕션 환경에서 사용할 예정입니다.응용 프로그램에서 Elastic과 통신하는 모범 사례

데이터베이스의 경우 저장소 패턴을 사용합니다. 예를 들어 IOrderRepository의 콘크리트 클래스, IFacetRepository은 db와 통신하기 위해 SQL 및 Mongo 드라이버를 사용합니다.

응용 프로그램이 모든 제품을 Elastic에서 가져오고 Elastic REST API를 사용하여 데이터를 가져옵니다.

코드 기반에서 탄성 공급자 (?)를 나타내는 가장 좋은 방법은 무엇입니까?

리포지토리 패턴을 계속 사용하고 ElasticClient을 사용하는 ProductRepository을 만들고 http 전화를 걸지 만 완벽한 해결책은 아니라고 생각합니다.

ProductService도 코드에 비즈니스를 원하지 않으므로 만들 수 없습니다. 독점적 인 책임은 제품을 탄력성에서 얻는 것입니다. 그게 전부입니다.

mediator pattern이 올바른 방법입니다.

무엇을 제안합니까?

답변

1

내가 내부적으로 ElasticClient를 사용하는 ProductRepository와 함께 갈 것 :

  • Repository는 데이터베이스에 대한 인터페이스를하고 고객이 알 필요 경우 관계형 DB, MongoDB를 또는 Elasticsearch에 구현 회담. 이것은 정확히 ProductRepository 클래스를 작성하여 달성 할 수 있습니다.
  • 나중에 Elasticsearch에서 DynamoDB와 같은 다른 데이터베이스로 이동할 경우 ProductRepository 만 변경하면 클라이언트는 상관하지 않습니다.

시간이 지남에 따라 신물로 끝날 수 있으므로 중재자 패턴을 조심하십시오.