Slack, EMR Veri Hatlarında SSH'ı REST API ile Değiştirdi
Slack, EMR küme erişiminde SSH bağımlılığını kaldırarak 700'den fazla veri hattını YARN Distributed Shell ve Quarry ile REST tabanlı mimariye taşıdı.
Slack'in veri platformu 2017'den itibaren Airflow üzerinden EMR kümelerine SSH ile bağlanan operatörler etrafında büyümüş ve 2024'e gelindiğinde 700'den fazla iş bu modele bağımlı hale gelmişti. Bu yapı, arama indeksleme ve iş zekası gibi kritik hatları çalıştırıyordu ancak geniş bir güvenlik yüzeyi, karmaşık yetkilendirme, kırılan bağlantılar sonrası ortaya çıkan 'zombi' işler ve güvenilir durum takibinin olmaması gibi ciddi operasyonel sorunlara yol açıyordu. Ayrıca SSH bağımlılığı, Kubernetes üzerinde Spark ve EMR-on-EKS gibi modernizasyon projelerini de bloke ediyordu.
Ekip, Spark ve Hive gibi işler için Livy ve HiveServer2 gibi hazır REST arayüzlerini kullanabilse de, MapReduce ve yüzlerce keyfi kabuk komutunu (aws s3 sync, hadoop distcp vb.) çalıştıran işler için doğrudan bir çözüm yoktu. Bu açığı, YARN'ın az bilinen bir özelliği olan Distributed Shell kapattı; bu özellik herhangi bir kabuk betiğini standart YARN REST API'leri üzerinden, kaynak yönetimi ve yaşam döngüsü kontrolüyle birlikte bir YARN konteynerinde çalıştırmayı mümkün kıldı, üstelik ek bir güvenlik katmanı gerektirmeden.
Bu yaklaşım, Slack'in çoklu hesaplama motorları (EMR/YARN, Trino, Snowflake) için ortak bir REST tabanlı iş gönderim katmanı olan Quarry adlı dahili aracıyla birleştirilerek 8 veri bölgesinde kesintisiz bir geçişe dönüştürüldü. Sonuçta mühendislik ekipleri için önemli olan nokta, SSH tabanlı kırılgan mimariden, sunucu tarafında yönetilen, izlenebilir ve ölçeklenebilir bir iş gönderim modeline geçişin büyük altyapı modernizasyonlarının önündeki engelleri nasıl kaldırdığıdır.