🕰️ 작성일 : 2024.04.18

1. 스토리지 비용 최적화

1.1 Tiered Storage 사용을 통한 비용 최적화

Amazon MSK는 Broker에 저장되는 레코드들을 Segment라는 단위로 브로커에 저장하며, Segment 로그 파일은 1G 또는 1주일을 주기로 작성됩니다. 즉 레코드들을 Segment 로그파일에 저장할 때, 파일의 크기가 1G가 넘어가면 새로운 로그파일에 옮겨서 레코드들을 작성합니다.

Tiered Storage를 사용하게 될 경우 쓰기 작업이 완료 된 로그 파일을 S3 기반의 저장소에 복사하여 저장하게 됩니다. 그리고 EBS에 저장되는 Retention 기간을 짧게 가져가고, S3에 저장되는 Retention 기간을 더 길게 가져감으로써 EBS 용량을 최적화해서 사용 할 수 있습니다. 데이터의 양이 많아져 EBS의 볼륨 크기를 증설하거나, Broker의 타입을 변경하지 않게 되어 데이터의 양 증가로 인한 비용 상승을 최소화 할 수 있습니다.

Untitled

KIP-405 : https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage

AWS 블로그 : https://aws.amazon.com/ko/blogs/big-data/deep-dive-on-amazon-msk-tiered-storage/

AWS Youtube : https://www.youtube.com/watch?v=0Ki2CBbN5bA&t=949s

1.2 Compression 및 Retention Period 재설정을 통한 비용 최적화

Compression Type을 설정하여 데이터 저장 및 전송 비용을 절감 할 수 있습니다. 그러나 Compression을 적용 할 경우 클러스터의 CPU 상승이 발생할 수 있어, 테스트를 통해 적절한 Compression Type의 설정이 필요합니다.

각 사용하는 Topic Level 별로 비즈니스 Use case를 고려해 Retention Period 설정을 조정합니다. 만약 오랜 기간동안 MSK에 데이터를 저장할 필요가 없는 경우 Retention Period를 짧게 설정하여 EBS의 사용을 최소화합니다.

별도의 백업을 위해서는 Amazon Firehose 또는 Connector 기반의 S3 Connector를 통해서 Amazon S3에 백업 할 수 있습니다.

AWS 블로그 : https://aws.amazon.com/ko/blogs/korea/amazon-msk-introduces-managed-data-delivery-from-apache-kafka-to-your-data-lake/

2. 네트워크 비용 최적화

2.1 ‘replica.selector.class’ 설정을 통한 Cross-AZ 트래픽 비용 감소

Untitled