2016-06-20 2 views
8

NiFi의 경우 의사가 정의한대로 "지속적인 개선이 생산에서 발생합니다"입니다. 그래서 이것은 전통적인 개발 도구로 사용되지 않습니다. 그러나 내가 작업하고있는 프로젝트에서 이것이 우리가 사용할 도구라는 결론에 도달했기 때문에 어떤 이슈가 될 것이라는 것을 깨닫고 이것의 장점을 논쟁하지는 않을 것입니다.Apache NiFi의 개발 라이프 사이클

예를 들어 변경 사항을 기존 환경 (프로덕션 환경에서 프로덕션 환경)으로 푸시하고 대상에서 실시간 수정 사항을 수정하면 덮어 쓰기됩니다. 개발주기를 조직하는 방법에 대한 질문이 있습니다.

  • 그것은 병합 병렬로 여러 개발자에 의해 수행되었다을 변경 할 수 있습니다 (보낸 XML 템플릿 파일을 병합)? 나는 중대한 변화를 병합하는 것이 어렵다고 생각하지만 시도하지는 않았다.
  • 어떻게 버전 관리 변경 하시겠습니까? 전체 구성을 템플릿으로 내 보낸 다음 버전 관리로 확인할 수 있다고 가정합니다.
  • 을 다른 서버에 배포 하시겠습니까? 주식 NiFi 배포를 배포 한 다음 NiFi REST API를 사용하여 위에서 언급 한대로 내 보낸 템플릿에서 업데이트 할 수 있습니까?
  • 다른 구성으로 배포 할 수있는 다른 환경에 배포하는 방법? 템플릿 XML 파일을 업데이트해야합니까? 또는 사육사와 같은 것에서 동적으로 가져올 수 있습니까?

답변

13

인용 한 항목의 원래 작성자이자 Apache NiFi PMC의 멤버는 훌륭한 질문을하고 있으며 어디에서 왔는지 평가할 수 있다고 말함으로써 시작합니다. 우리는 여러분이 제기하는 우려 ​​사항을보다 잘 반영하기 위해 소개 문서를 개선해야합니다.

현재 접근 방식은 흐름 템플릿을 만든 다음 버전 제어에 제출할 수 있다는 것이 맞습니다. 또한 NiFi의 REST API와 상호 작용하는 스크립트를 사용하여 이러한 템플릿의 배포를 자동화하는 경우도 있습니다. 그러나 개발자가 개발자에게 배포 할 내용을 정확하게 작성했는지 또는 이러한 부분을 직접 처리해야하는지 여부에 관계없이 데이터 흐름 관리 작업을보다 쉽게 ​​수행 할 수 있어야합니다.

  1. 흐름 [1]의 관리 및 버전 관리는 여러 클러스터와 환경 [2]간에 더 쉽게 중앙에서 관리되어야합니다.
  2. 환경 별 값을 특정 환경에 쉽게 매핑 할 수 있지만 템플릿은 여전히 ​​이식성이 있어야합니다 [3].
  3. 우리는 멀티 유저/멀티 테넌트 사용자 경험을 훨씬 더 직관적이고 자연스럽게 만들어야합니다 [4].

1과 2의 요소는 곧 출시 될 1.0 버전에 포함될 것이며 항목 3은 곧 출시 될 버전에서 완전히 다루어집니다. 멀티 개발자의 경우에 대비하여 자신의 로컬 인스턴스를 플로우를 단위 테스트하고 공유 된 스테이징 또는 프로덕션 환경을 사용하는 장소로 간주하는 것이 이치에 맞다고 생각합니다. 명심해야 할 중요한 점은 많은 플로우와 NiFi의 접근법을 사용하면 주어진 플로우 템플릿의 인스턴스를 여러 개 실행하여 각각의 라이브 데이터 피드를 제공하는 것이 좋습니다. 해당 흐름의 결과/출력은 실제 어딘가에 전달되거나 단순히 접지 될 수 있습니다.이 방법으로 Git과 같은 소스 컨트롤에서의 분기 모델과 비슷합니다. 당신은 당신이 "생산"이라고 생각하는 것을 선택하게됩니다. 보다 전통적인 접근 방식을 사용하는 사람들에게는 이것이 분명하지 않으며이를 설명하고 입증해야합니다. 그러나 우리는 또한보다 전통적인 접근 방식을 지원해야하며 이것이 내가 연계 한 일부 기능 제안이 가능하게 할 것입니다.

[1] https://cwiki.apache.org/confluence/display/NIFI/Configuration+Management+of+Flows

[2] https://cwiki.apache.org/confluence/display/NIFI/Extension+Registry

[3] https://cwiki.apache.org/confluence/display/NIFI/Variable+Registry

[4] https://cwiki.apache.org/confluence/display/NIFI/Multi-Tentant+Dataflow이 [1], [2], [3]처럼 보인다

+1

아직 구현되지 않았습니다. 현재 릴리스 버전에서 명시된 문제를 해결하는 방법에 대한 업데이트를 제공 할 수 있습니까? 지금 사람들은 템플릿을 가져오고 내보내는 것만 같아요. 여기에는 몇 가지 단점이 있습니다. 실제 업데이트 옵션이 없으면 이전 버전을 제거하고 새 버전을 다시 읽을 수 있습니다. –

+0

당신은 맞습니다. (기존 프로세스 그룹을위한) 진정한 업데이트 옵션은 없습니다. 오늘날 공통적 인 패턴은 프로세스 그룹의 새 버전을 밀어 넣고 해당 그룹에 공급하는 연결을 변경하는 것입니다. 이것은 프로그래밍 방식으로 몇 가지 REST 호출로 수행 할 수 있습니다. 흐름 관리, 프로세스 그룹 변수 및 버전이있는 구성 요소에 대한 apache nifi 레지스트리는 모두 최신 릴리스에서 후자와 함께 진행되고 있습니다. 다음 릴리스에서는 버전이 지정된 흐름에 통합 된 아파치 nifi 레지스트리가있을 것으로 보이며 그 시점에서 진정한 업데이트! 아주 차가워 야해. –