서론
개인 프로젝트를 돌릴 때 은근히 많이 신경 쓰이는 것이 CPU, 메모리 등의 리소스이다.
내가 Java보다는 파이썬이나 Go로 프로그램을 작성하는 이유도 리소스 때문에 선택하는 경우가 많다. (물론 Java를 별로 안 좋아하는 게 가장 크다...😒)
Elasticsearch나 Kafka를 좋아하는 편이지만 개인 프로젝트에서 사용하려고 할 때마다 항상 발생했던 문제가 리소스 문제다. 개발 환경을 구축할 때는 개인 서버(4c/16g)의 메모리를 많이 잡아먹어 다른 서비스를 꺼야 했고 운영 환경에서는 비용적인 문제로 한 개 인스턴스에 여러 서비스를 띄우는 편인데 메모리를 가장 많이 잡아먹는 게 Elasticsearch, Logstash, Kafka였다.
Redpanda는 이런 이유에서 도입하게된 Kafka의 대체 플랫폼으로 Reddit을 구경하던 중 우연히 알게 되었고 개발 환경에 구축해 몇 달 테스트 후 현재는 운영 환경에서도 사용 중이다.
Redpanda is a Kafka®-compatible streaming data platform that is proven to be 10x faster, and 6x lower in total costs for GBps+ throughputs. It is also JVM-free, ZooKeeper®-free, Jepsen-tested and source available.
도입 사유
내가 Redpanda를 사용하는 이유는 메인 페이지 설명에 모두 명시되있다.
Kafka-Compatible
Kafka와 호환되는 플랫폼으로 Kafka 클라이언트 입장에서는 기존 코드 변경없이 그대로 사용할 수 있다.
Kafka가 사용하는 API를 Redpanda에서도 동일하게 사용이 가능하고 Redpanda 문서 내용 상으로는 Ecosystem에서도 100% 동작한다고 한다.
다만 호환된다는 의미가 어디까지 호환이 되는지는 자세히 확인해보지는 않았기 때문에 도입 시 원하는 기능이 호환되는지, 호환되면 어디까지 호환되는지 별도로 확인이 필요하다. 개인적으로는 기본 기능 위주로 사용하고 있고 요구사항이 발생하면 그때 검토할 예정이기 때문에 별다른 이슈없이 사용 중이다.
JVM-free
Java는 분명히 좋은 언어지만 개인 프로젝트에서 사용하기는 조금 부담스럽다.
Redpanda는 C++로 작성되어 별도의 VM이 필요 없으며 설명에 따르면 성능은 10배 더 빠르고 스루풋 비용이 1/6 수준이라고 한다. 실제로 빠른 성능을 내려면 당연하지만 하드웨어도 좋아야 한다. 개인이 고성능을 필요로 하는 경우는 많이 없지만 빨라서 나쁠 건 없다.
Zookeeper-free
Kafka를 사용하기 쉽지 않은 이유 중 하나는 Zookeeper의 존재이다.
현재까지 Kafka를 업무에서 사용한 적은 없어서 Kafka와 Zookeeper를 제대로 사용해보지는 않았지만 Kafka 설치 시 필수로 설치해야 하기 때문에 추가적인 리소스를 사용한다. Redpanda는 각 노드끼리 통신하기 때문에 별도로 Zookeeper와 같은 코디네이터가 필요 없다. 이는 소규모 인프라 구성에 큰 이점이다.
2023-06-20
얼마전 다시 확인해보니 Kafka 또한 3.3 버전 이후로는 KRaft를 사용하게 되면서 Zookeeper를 사용하지 않는다.
이는 Kafka 구축 시 Zookeeper를 구축할 필요가 없어져 Kafka 도입이 더 간단해지는 이점이 확실히 있다.
CLI 및 UI
Redpanda에서는 기본적으로 rpk라는 CLI 도구와 Redpadna Console이라는 웹 UI를 기본적으로 제공한다.
Kafka에서도 CLI를 제공하고 Kafdrop과 같은 웹 UI를 제공하고 있지만 나름 공식으로 제공하고 인터페이스가 깔끔하다.
기타
- Schema Registry 기본 내장
- Tiered Storage
- Authentication & Authorization
- TLS Encryption
도입 후기
기존에는 개인 프로젝트에서 Kafka를 사용하고 있었고 파이썬에서는 kafka-python, Go에서는 confluent-kafka-go를 이용해서 메시지를 주고 받고 있었다. 이후 Redpanda를 알게되어 개인 개발 서버에 구축을 진행하였고 파이썬과 Go 두쪽 모두 아무런 코드 변경없이 메세지를 잘 처리했다. 개발 서버에서 6달이 넘는 기간 동안 별다른 특이사항 없이 잘 처리된 것을 확인하였고 개인 운영 서버에도 동일하게 적용하여 현재는 잘 사용 중이다. 매우 만족 👍
다만 위에서 언급한 것과 같이 현재는 기본 기능만 사용 중이기 때문에 더 다양한 기능을 사용해볼 필요가 있다.
특히 소규모로 사용 중이고 정말 기본적인 확인만 하고 있기 때문에 다음 항목들은 공부 후 별도로 글로 작성해보려고 한다.
- rpk CLI
- 클러스터링
- Schema Registry
- Tiered Storage
출처 및 문서
'아키텍처' 카테고리의 다른 글
토렌트 수집 아키텍처 설계 및 구축 - 0 (0) | 2021.11.18 |
---|