안녕하세요. 혹시 Kinesis를 잘 활용하고 있는 분이나 단체가 있을까요? 도입하려고…

안녕하세요.

혹시 Kinesis를 잘 활용하고 있는 분이나 단체가 있을까요?
도입하려고 검토 중인데 자료가 거의 없다보니 삽질의 연속이네요.

aws 메뉴얼, 슬라이드쉐어, 유튜브, aws포럼 등등 볼 수 있는 곳은 다 본 것 같은데 실제 사용에 대해서 심도있게 설명해 놓은 경우가 없네요. 혹시나 해서 한번 도움 청해봅니다.

1. KPL을 사용한 경우 어떤 식으로 아키텍쳐를 구성하셨는지 궁금합니다. 앞단에 API서버를 두게 되는 경우 조금 복잡해 지는 것 같아서요. API -> KPL -> Kinesis

2. Producer에서 KPL을 사용하지 않고 API만 사용하는 경우 KCL과 궁합이 어떤지 궁금합니다.

3. Stream과 Shard 관리 방법이 궁금합니다. 1개의 Stream에 Shard를 늘리는 것과 n개의 Stream에서 m개의 Shard로 관리하는 것을 비교해 보면 어느 쪽이 효율적일지 궁금합니다. 저희는 관리 측면에서 후자 쪽을 선택할 것 같습니다.

3 thoughts on “안녕하세요. 혹시 Kinesis를 잘 활용하고 있는 분이나 단체가 있을까요? 도입하려고…

  1. 도움이 될지 모르겠지만 evaluation 해본바로는,

    Producer: log agent(logstash, fluentd) + plugin – Kinesis 로 구성하는게 좀 편하실겁니다. 해당 플러그인 안에서 KPL(Kinesis Producer Library) 사용됩니다. 여러가지 정책(retrying, bulk size 등)도 설정할 수 있구요. KPL, KCL 모든 언어 바인딩은 모두 Java로 하고 있어서, 버그나 이상한 상황이 나오면 코드봐야 합니다. 예컨데 Java쪽에서 python 에 데이터 바인딩하다가 로드 오류생기는 상황이라든지 ㅎ 뭘하든 partition key 잡는게 일이고, Input 트래픽 제한이 없어서 넣긴 쉬워요. 다만 아시겠지만 하루 데이터 저장만 되어서 backfilling 할 때 애먹습니다.

    https://github.com/adience-code/logstash-output-kinesis/blob/master/lib/logstash/outputs/kinesis.rb#L134

    Consumer: 라이브러리를 사용하면 check pointing 을 dynamodb 로 하고 있는데, 이게 좀 애매한 상황이 나와요. 코드를 보셔야할 겁니다. 저는 보다가 말았네요. 모든게 pulling 이라 Kinesis 랑 통신하다가 5xx 떨어지는 경우들도 있었고, DNS lookup 성능이슈도 있었습니다.

  2. 진성주 네 답변 고맙습니다!!. producer로 log agent를 쓰는 부분은 좀 고민을 하고 있는데 여기도 관리 포인트가 되기 때문인데요. 그래서 KPL을 사용하지 않고 end point에서 바로 put record api를 호출하는게 어떨까 고민 중입니다.

    KPL의 경우 사용 중에 몇가지 문제를 발견했고 Github에 이슈로 등록된 것을 확인해서 선뜻 써야겠다 마음이 안 생기네요 ㅎㅎ 안쓰게 되면 KPL이 제공하는 batch 전송을 쓰지 못하기 때문에 tps에서 많은 손해를 보게 되고 전체 샤드 구성도 변경되어야 해서 좀 고민이 됩니다.

    질문내용에 있는 것 처럼 KPL없이 KCL로 데이터를 가공하는 부분에서 체크할 게 있는지 궁금했던거구요.(이건 지금 테스트 중입니다) 이래저래 삽질이 더 필요한 것 같네요. 사람들이 안쓰는 이유가 있는 것 같기도 하고 그렇습니다 ㅎㅎ

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.