나이파이에 대해 공부하면서 NIFI DOCS 에 있는 글을 공부하며 정리한 것이다
번역에 있어 많이 매끄럽지 못한 부분이 있을 수 있다.
원본이 궁금하면 아래 링크 참고
https://nifi.apache.org/docs.html
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)
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
'Data Engineering > NiFi' 카테고리의 다른 글
[NiFi] 9. Create / Export / Import Template (0) | 2022.06.15 |
---|---|
[ NiFi ] 8. NiFi Altanative & Competitors (0) | 2021.05.21 |
[ NiFi ] 6. Json 파일을 CSV 파일로 변환하기 (0) | 2021.05.11 |
[ NiFi ] 5. Api 데이터를 가공하여 MySQL 로 보내기 (0) | 2021.05.07 |
[ NiFi ] 4. 리눅스에서 MySql 로 데이터 보내기 (0) | 2021.04.30 |