Apache Storm 사용기 -> 포기(Flink로 전환)

1 minute read

Clojure로 코어를 만들었다는데서관심을 가졌으나최신버전인 2.0.0에서는 Java로 컨버팅 되어 버렸다는 슬픈 소식

python, clojure, java, shell script 폴리글랏이라고 했으나python코드는 별로 쓸모없는 포인트만 먹고 있다. 빼버리면 좋겠는데
실행 파라미터체크하는 정도 코드만 있다. 스톰 토폴로지를 파이썬으로도 만들 수 있다고되어 있는 것 같은데… 별로 그럴 생각은 없어서..
이 부분을 제외하고 자바와 설정파일을 이용하는게 여러 환경에 배포하는데도 편리하고 좋을 것 같다

intellij로 열려고 하는데 잘 안열린다.uber-jar 돼지자르를 만들 때 사용하는 shade-deps로 인한 임포트오류가 발생

Storm에서 한개의 실행단위를 topology라고 하는데 이걸 로컬에서 실행테스트도 해보고 디버깅도 해보고 로그도 찍어보고 하고싶은데… 다 쉽지 않다.
유닛테스트, 로컬실행, 디버깅 환경부터 만들어야 뭘 제대로 쓸 수 있을 것 같다.

문서…
이것저것 써 있기는 한데
고인물파티같은 느낌
한국 커뮤니티도 없다.
Flink만 쓰는건가
인터페이스단위로 분석해놓은 문서조차 없다
튜토리얼이나 예제가 있긴한데 딱 맞는 분석사례만 있는게 아니니까.. 결국 분석해서 써야된다

코틀린도 그랬지만… 초기에는 불만이 많은 편이라
좀 더 써 봐야지 판단할 수 있겠다


프로젝트에 적용을 시도했으나

Flink로 전환하려고 한다

  • 유닛테스트 지원안됨
  • 연동테스트 지원안됨
  • 로컬 데몬이 자꾸 죽음
  • Flink보다 업데이트가 안되고 있음
  • Flink보다 커뮤니티가 약함
  • 1에서 2로 메이저 업데이트 되면서 도큐먼트 링크가 다 죽음(2버전이지만 invator나 마찬가지인 상태)
  • 실행스크립트에 파이썬이 혼용되는 등 불필요한 프로젝트 복잡도가 증가함.
  • ide에서 실행이 안됨(디버깅 불가. flink에서는 되는지는 모르겠다)
  • maven-shade와 fat-jar(uber-jar)사용으로 배포 불편.
    -- 이게 java jar –classpath로 실행하면서 storm.jar와 {user-topology}.jar를 실행시켜서 shade도 필요하고 그런건데 굉장히 쨔증난다 .설계가 잘못됐다고 본다.
  • 마찬가지로 maven-shade와 fat-jar(uber-jar) 사용으로 ide에서 본 프로젝트가 열리지도 않음
    -- 억지로 열려면 mvn package한 다음에 shade에서 생성된 jar를 ide에서 합치면 됨
    -— 이런 문제가 있으면 프로젝트를 분리해놓던가 해야될 것 같은데 개발진들 열의가 별로 없어보임. 메이븐 의존성도 다 옛날거라 kafka client 0.8.0이었나
  • 로깅이 잘 안되는걸 빼먹을 뻔 했군
    토폴로지 jar에 포함시켜놓을 수 있으면 좋겠는데 그런 부분이 잘 안되는 것 같다
  • 로컬테스트용과 리모트배포용 코드를 아예 따로 작성해야된다. 이건 진짜 문제있다. ifelse로 분기 할 수도 있지만… 좀 참기힘든 부분이자너

또 다른 선택지

  1. Apache Flink
  2. Apache Apex
  3. Apache Spark - Streaming
  4. Apache Heron
  5. Uber AthenaX
    https://github.com/uber/AthenaX

아파치에서만 몇개야…. Storm은 죽은 프로젝트다. Heron(Incubator)이 스톰 뒤를 이어서 개발중인 것으로 보인다.

관련기술

  1. Apache Druid
    https://druid.apache.org/
  2. Apache Calcite
    https://calcite.apache.org/