Concents
Spring Cloud Data Flow (SCDF) 를 사용하는 것의 장점

Spring Cloud Data Flow (SCDF) 를 사용하는 것의 장점

Spring Cloud Data Flow (SCDF) 시스템은 쿠버네티스기반으로 구축이 가능합니다. 여러 종류의 언어로 작성된 Data Source 들을 SCDF 시스템 내에서는 Stream 으로 구성하고 입력/출력으로 정의해서 내보내는 등과 같은 파이프라인 방식의 처리가 가능합니다.

즉, Data Source 들을 조합해주는 하나의 플랫폼이라고 볼 수 있습니다.

Spring Cloud Data Flow (SCDF) 에서는 || 와 같은 기호를 통해 서로 다른 입력, 출력을 파이프라이닝이 가능합니다. 일반적인 리눅스 명령어에서는 파이프라이닝 시에 | 을 사용하지만, Spring Cloud Data Flow 에서는 || 기호로 파이프라이닝이 가능한데, || 은 파이프라이닝을 병렬로 처리가 가능하다는 것을 강조하는 의미를 가지고 있습니다.

Spring Cloud Data Flow 기능은 만능이 아닙니다. 도입할 때 학습을 위한 시간이 꽤 많이 소요되고, 적절한 스터디를 거치고 난 후에야 적용이 가능해지게 됩니다. 다만, 도입 후에는 유지보수에 드는 여러가지 비용이 줄어든다는 점은 하나의 장점이 될수 있습니다.

따라서 개발팀내에서 도입하려고 할 경우에는 운영업무와 함께 병행하면서, 조금씩 시간을 들여서 조금은 오랜 시간 안에 구축을 하기로 결정을 하고 조금씩 적용하면서 장점을 찾고, 필요한 부분들에 대해 부분적으로 도입해나가는 과정을 거듭한다면, 운영 업무와 함께 시너지를 낼 것으로 보입니다.


Data Flow 서버, Skipper 서버를 운용하는 것으로 인한 장점

Data Flow 서버, Skipper 서버로 구분되어 Data 를 처리하는 서버인 Data Flow 서버와 Data Flow Stream 을 배포하는 배포 서버인 Skipper 서버로 분리해서 용도별로 운영이 가능하며 배포가 조금 더 쉬워집니다. 배포 시에 블루/그린 배포가 가능하며 롤백이 가능하며, 배포 기록 역시 조회가 가능합니다.

Data Flow 서버의 대시보드 기능

데이터 스트림을 대시보드에서 생성하는 것이 가능해집니다.


특정 Database, Broker 종류에 종속적이지 않게 됩니다

특정 Database, Broker 에 대한 커넥션 설정 등은 Properties 등에 필요한 설정들을 명시해두면, 구체적인 부분들은 Spring Cloud Data Flow 내에 설정된 값에 의해 바인딩이 가능해집니다. 이렇게하면, 특정 데이터 소스의 변경이 필요할 때 유연하고 빠르게 대응이 가능합니다.

물론 세부적인 설정은 직접 설정해야 하지만, 인력적인 면이나, 개발 투입 시간 등의 리소스 등을 고려해보면 3달이 걸릴 일을 2주일 내에 처리 후에 세부 설정을 수정할 수 있는 경우도 있을 것 같습니다. (물론 조금 단적인 예를 들었습니다.)

단점

초기에 스터디가 필요합니다.

  • 시간이 필요합니다. 운영을 하면서 이 부분에 대해 인지하고 다음 버전에 어떻게 발전시켜나갈 지 고민하는 팀이라면 이 부분에 대해 천천히 준비해나간다면 충분히 대응이 가능해질 것이라고 봅니다.

배포에 대한 내용들 역시 스터디가 어느 정도는 필요합니다.

  • 쿠버네티스 상으로 Data Flow, Skipper 를 배포하는 것 역시 가능한데, 실제 운영 레벨까지 사용가능하려면 이 부분들에 대해 제대로 숙지하고 어떤 부분에 문제가 있는지를 스터디를 해나가야 합니다.

그럼에도 사용하면 좋아질 수 있는 이유

아주 간단한 데이터 처리 기능을 작성한다면 SCDF (Spring Cloud Data Flow)가 필요가 없습니다. 하지만, 데이터를 처리하는 구체적인 로직들이 많아지면, 어느 순간부터는 특정 데이터 처리를 추상화를 해야 할 경우가 생기게 됩니다. 그리고 이 추상화된 컴포넌트를 다른 기술(RabbitMQ) 등으로 바꾸게 될 수 도 있습니다.

변화가 필요한 사항이 있을 때 조금 더 빠르고 유연하게 대응할 수 있기 때문에 도입을 원한다면, 팀 내부적으로 여유를 갖고 분기 단위의 계획을 세워서 도입을 이룬다면 충분히 좋아지지 않을까 싶습니다.