작성
·
131
·
수정됨
0
안녕하세요, 좋은 강의 너무나 감사드립니다.
조금 추상적인 질문이어서 곤란하실 것 같아 죄송하네요..ㅎㅎ
구체적으로는 말씀드리진 못 하지만, 현재 저희 회사에서 어떠한 하드웨어 장비를 통해 실시간으로 데이터를 수집/통계생성/조회 등의 서비스를 제공하려고 준비 중에 있습니다. 강의 중에 GPS 서비스에 대해 종종 언급하셨는데 그 경우와 유사한 IoT 서비스입니다.
지금은 하드웨어 쪽에 투자를 하는 상황이라 간단하게 HTTP 통신으로 하드웨어 몇 대의 데이터를 수집하고 Spring Boot 서버가 데이터를 받아서 처리하고 있습니다.
실제 제품 환경에서는 부하 등 여러 요소를 고려하여 MQTT 를 사용한 데이터 수집을 하려고 계획하고 있습니다. 그러던 차에 Kafka 에도 관심을 가져서 강의를 수강해봤는데 Kafka 가 생각보다도 훨씬 대형 서비스에서 써야 할 것 같아서 저희 회사 서비스에서 사용할 만한 건 아닌가...고민하다가 직접 여쭤보려고 합니다.
하드웨어는 2초에 1번씩 데이터를 수집하고 전송합니다. 추측하건대 이후에도 1초에 수십 번의 트래픽이 발생하지는 않을 것 같습니다. 만약 그렇게 해야 하더라도 수십 번 수집한 데이터를 1~2초에 1번씩 전송해도 괜찮습니다.
수집하고 전송할 데이터, 그러니까 Record 의 Value 는 JSON 형태이며 약 100byte 정도입니다.
하드웨어 장비는, 하드웨어 담당자의 의견을 따르자면 최대 100만 대까지 생산하려는 것 같습니다.
서비스는 물론 확장이야 할 수 있겠지만, 현재 이와 관련하여 구체적으로 구상된 사업 아이템은 없는 것 같습니다. 즉, 수집한 데이터를 사용하는 서비스는 하나만 있습니다.
그러면 단순 계산해서 최대 1초에 100MB 의 요청 / 1초에 100만 번의 요청을 처리해야 한다면, 이정도면 Kafka 도입이 의미가 있을까요?
강의에서 언급한 대로, Kafka 를 IaaS 로 운영한다고 하더라도 서버 비용이 월 몇 십만 원씩 내면서 도입할 가치가 있냐고 하면, 솔직히 그렇게 보이진 않거든요
결론적으로 질문은 아래와 같습니다.
웬만한 대기업, 대형 서비스가 아니고서야 Kafka 도입은 오버스펙일까요?
저희 회사처럼 단일 서비스에 대한 데이터 처리와 고가용성을 확보하려고 하더라도 Kafka 도입이 의미가 있을까요? 강의에서 언급된 인스턴스 스펙보다 낮은 수준의 인스턴스에서 Kafka 를 실행하는 건 괜찮을까요?
Kafka 는 어느 정도의 트래픽이 발생해야 도입이 유의미할까요?
Kafka 도입을 고려하는 시점에 대한 의사결정 요소에 어떤 것들이 있을까요? 키워드 위주로만이라도 설명해주시면 제가 한 번 조사해보도록 하겠습니다.
답변 2
1
안녕하세요!
현재 카프카 도입을 고려하고 있으나, 적당한 상황인지 고민이신것으로 이해됩니다. 말씀하신 사항을 고려하여 문의주신 내용 답변드립니다.
1) 웬만한 대기업, 대형 서비스가 아니고서야 Kafka 도입은 오버스펙일까요?
아닙니다. 카프카는 분산 이벤트 스트리밍 플랫폼으로써 타 플랫폼으로는 대체 불가능한 기준으로 자리잡고 있습니다. 그만큼 카프카의 특성은 이벤트 데이터를 실시간 처리하는데 매우 특화되어 있습니다. 그렇기 때문에, 실시간 데이터를 다루고 로직상 스트림 프로세싱이 필요하다면 카프카 도입은 시간 문제라고 볼 수 있겠습니다. 또한, 카프카는 작은 규모의 클러스터를 구축하여 소규모 데이터부터 시작할 수 있으며, 브로커 스케일 아웃을 통해 추후 커질 수 있는 대규모 데이터도 커버 가능하므로 대형, 대기업이 아니더라도 사용할 수 있고, 이미 많이 사용되고 있습니다.
2) 저희 회사처럼 단일 서비스에 대한 데이터 처리와 고가용성을 확보하려고 하더라도 Kafka 도입이 의미가 있을까요? 강의에서 언급된 인스턴스 스펙보다 낮은 수준의 인스턴스에서 Kafka 를 실행하는 건 괜찮을까요?
단일 서비스에 대해서 스트림 데이터를 처리하면서 안전하게 데이터를 처리하기 위해서는 카프카 도입이 적당할 것으로 보입니다. 말씀하신 사항을 보면 100MB/s, 1,000,000TPS 수준의 데이터는 결코 작지 않으며 프로세싱을 위해서는 분산 처리가 필수적인데, 이러한 상황을 고려하면 카프카의 도입은 충분히 의미가 있을 거라 생각됩니다. 그리고 인스턴스 스펙은 항상 사용하는 환경에 따라 다를 수 있기 때문에 제안하는 수준의 스펙보다 크거나/작음 보다는 다루고자 하는 데이터의 크기와 양을 내부적으로 충분히 테스트하시고 결정하면 될것 같습니다.
3) Kafka 는 어느 정도의 트래픽이 발생해야 도입이 유의미할까요?
절대적인 데이터 양으로 카프카의 도입 여부를 결정하기는 어려울 것 같습니다만, 굳이 정해보자면 100TPS 이상이며 스트림 프로세싱(window, mapping, aggregation 등)이 필요하다면 카프카 도입을 고려할 것 같습니다.
4) Kafka 도입을 고려하는 시점에 대한 의사결정 요소에 어떤 것들이 있을까요? 키워드 위주로만이라도 설명해주시면 제가 한 번 조사해보도록 하겠습니다.
앞서 몇번 더 설명한 것과 같이, '분산', '고가용성', '스트림 프로세싱' 이 가장 중요한 키워드 일것 같습니다. 이러한 스트림 프로세싱 플랫폼 없이는 적절한 로직 개발이 매우 어렵기 때문입니다. 배치처리 또는 마이크로 배치처리로 요구사항을 만족시킨다면 문제 없겠습니다만, 스트림 처리에 특화된 기능들(window, aggregation 등) 그리고 대규모 데이터를 안정적이고 낮은 지연(latency)로 처리하기 위해 distributed processing을 만족시키기 위해서는 카프카가 많은 부분 도와줄 것이라 생각됩니다.
감사합니다. 추가적으로 궁금한 사항 있으면 편하게 문의주세요~
0
안녕하세요, 인프런 AI 인턴입니다.
psam1017님, 카프카에 대한 질문 주셔서 감사합니다. 카프카가 대규모 서비스에 주로 사용되는 것은 사실이지만, 귀사의 요구 사항을 살펴보면 카프카 도입을 고려해볼 만한 몇 가지 이유가 있습니다.
대규모 장비 지원: 하드웨어 장비가 최대 100만 대까지 생산될 예정이라고 하셨는데, 카프카는 대량의 데이터를 실시간으로 처리하는 능력이 뛰어나므로 이를 효율적으로 관리하는 데 도움이 될 수 있습니다.
데이터 파이프라인 구성: 각 하드웨어에서 발생하는 데이터를 수집, 통계 생성, 조회 등을 위한 서비스로 전송하는 데 있어 카프카는 데이터 파이프라인을 구성하는 데 있어 매우 용이합니다.
고가용성 및 확장성: 카프카는 고가용성을 지원하고, 확장성 측면에서도 우수합니다. 귀사의 서비스가 확장될 가능성을 고려하면 카프카는 미래에도 서비스 성장을 지원할 수 있는 좋은 선택이 될 수 있습니다.
트래픽 처리 능력: 귀사의 예상 트래픽은 1초에 100MB / 100만 건으로, 카프카는 이와 같은 대량의 데이터 및 요청을 처리하는 데 적합하며, 실제로 많은 회사에서 유사한 혹은 그 이상의 트래픽을 처리하기 위해 카프카를 사용하고 있습니다.
도입을 고려하는 시점에 대한 의사결정 요소로는 다음과 같은 것들을 고려해볼 수 있습니다.
단일 서비스라 할지라도, 귀사의 서비스가 이러한 요구 사항을 가지고 있다면, 카프카 도입은 오버스펙이 아니라 타당한 선택일 수 있습니다. 단, 실제 도입 전에는 인스턴스 스펙, 비용, 운영 노하우 등도 추가적으로 고려해야 합니다.
상세한 답변 감사드립니다. 고민 중이었던 내용에 대해 정확하게 답변해주셔서 의사결정하고, 또 앞으로도 카프카를 알아가는데 도움이 된 것 같습니다. 확실히 window 등 카프카 스트림즈를 활용한 기능을 유의미하게 활용할 수 있을 것 같다는 생각이 드네요.
마침 추석 연휴기간인데 선생님도 즐거운 연휴 되십시오. 감사합니다.