Data Engineering/NiFi

[ NIFI ] 7. Apache NiFi Overview

쟈누이 2021. 5. 20. 18:22
반응형

나이파이에 대해 공부하면서 NIFI DOCS 에 있는 글을 공부하며 정리한 것이다

번역에 있어 많이 매끄럽지 못한 부분이 있을 수 있다. 

원본이 궁금하면 아래 링크 참고

https://nifi.apache.org/docs.html

 

Apache NiFi Documentation

Copyright © 2018 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, NiFi, Apache NiFi and the project logo are trademarks of The Apache Software Foundation.

nifi.apache.org

 

1. NIFI 란 무엇인가?


간단하게 말해서, 나이파이는 시스템간의 데이터 의 흐름을 자동화하기 위해 만들어졌다. 
'데이터 플로우'라는 용어는 다양한 의미로 사용되는 반면에, 우리는 이 '데이터 플로우'라는 용어를 시스템간의 자동화되고 관리되는 정보의 흐름의 의미로 사용하고 있다.


이 부분에서의 문제는 기업이 데이터를 생성하고 소비하는 하나 이상의 시스템을 가진 이래로부터 계속 이어져오고 있다. 이 문제와 이를 해결하기 위한  솔루션은 그동안 많은 분야에서 논의되어왔다. 데이터 플로우와 관련된 매우 어려운 난제들이 몇가지 있다.



1) system fail (시스템 실패)
- 네트워크 연결 끊김, 디스크 망가짐, 소프트웨어 충돌, 작업자의 실수

2) 소비 능력을 초과한 데이터 접속
- 때때로 데이터 소스들은 몇몇 프로세스 또는 delivery chain 부분을 앞지를 수 있다. 
이러한 문제는 프로세스의 약한 부분에서만 발생한다.

3)  경계 조건(경계값 문제해결을 위한 조건) 단지 제안에 불과하다
- 우리는 언제나 너무 크고 작거나, 너무 빠르고 느리거나, 이상하고 잘못된 포멧을 가진 데이터를 받는다

4) 노이즈는 다음 단계를 위한 시그널이다. 
- 조직의 우선순위는 급격하게 변한다. 새로은 결함과 그것의 수정을 빨라야만 한다.

5) 시스템은 진화한다
- 시스템에의 프로토콜과 포맷은 언제든지 바뀔수가 있으며 시스템의 상태에 변화를 준다. 데이터 플로우는 느슨하거나 잘 설계되지 않은 시스템 요소들을 연결하기위해 존재한다.

6) 보안과 법 준수
- 법, 규제, 정책들은 변한다. 비즈니스간의 약속도 변한다. 시스템간의 시스템과 유저간의 상호작용은 반드시 신뢰받고, 보호받아야 한다.

7) 지속적인 성능향상의 발생
- 이는 종종 프로덕션 환경의 복제를 거의 불가능하게 만든다.


지난 몇년간 데이터 플로우는 아키텍처 구성의 필수적인 요소가 되어가고 있음. 

 

 


2. The core concept of NiFi


nifi 의 기본 디자인컨셉은 FBP(Flow Based Programming) 에서 가져왔다.



2021.05.20 - [프로그래밍 개념들] - 4. SEDA ( Staged Event-Driven Architecture)

 

4. SEDA ( Staged Event-Driven Architecture)

** NIFI 개념을 설명할 때 처음 나옴 ** 1. 영어 원본(위키피디아) The staged event-driven architecture (SEDA) refers to an approach to software architecture that decomposes a complex, event-driven..

snepbnt.tistory.com

SEDA 라는 개념과 비슷하기도한 이 디자인 모델은 NIFI 가 매우 파워풀하고 확장성있는 데이터 플로우를 위한 효율적인 플랫폼이 되도록 만들어준다. 


- 프로세서의 관리 그리고 생성이 용이
- 본질적으로 비동기식이므로 데이터 프로세싱과 프름에 변동이 있더라도 자연스런 버퍼링과 매우 높은 처리량 유지 가능
- 기존에 존재하는 프로세스들과 테스트 유닛 등의 느슨하게 결합된 구성요소와 응집도가 높은 개발이 가능케 함
- 동시성의 복잡도에 대한 걱정 없이, 매우 동시성이 높은 모델의 개발을 가능케함
- 많은 백프레셔 등의 문제를 유발하는 연결을 유발하는 리소스들은 제한을 시킨다.
- 기존에 존재하거나 시스템에 들어있는 데이터들을 쉽게 파악 및 추적이 가능함.

 

 

3. Performance Expectations and Characteristics of NiFi


1) For IO
- 처리량 또는 지연은 NIFI 시스템의 환경설정에 매우 의존적이다.

2) For CPU
- Flow Controller는 특정 프로세서에 실행할 스레드가 제공되는시기를 지시하는 엔진 역할을 한다.

3) For RAM
- NIFI 는 JVM 에 의존적이다. JVM 의 메모리 공간에 의해 성능에도 어느정도 제약이 따를 수 있다.


 

4. High Level Overview of Key NiFi Features


  • 전송 보장
  • 백프레셔 조정에 따른 데이터 버퍼링 제어 가능
  • 우선순위화된 큐잉
  • 플로우 특정 QoS (대기 시간 v 처리량, 손실 허용 등)
  • 시각화된 명령과 제어
  • 플로우 템플릿
  • 데이터 프로비넌스
  • SSL을 통한 보안 제공
  • 강력한 자원과 권한 관리를 통한 멀티테넌시 지원
  • 프로세서 확장 가능
  • Site to Site 커뮤니케이션 프로토콜 제공으로 NiFi 시스템 간 통신 가능
  • Scale-out (Clustering) 가능
  • 호튼웍스의 기술 지원

 

4번의 경우에는 아래 링크를 참고 했다.

https://gist.github.com/cheerupdi/e8a51f6e43bab3216323c6090d9772a2#background

 

4. NiFi Getting Started

4. NiFi Getting Started. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

반응형