Apache Kafka এবং Avro সাধারণভাবে একসাথে ব্যবহৃত হয় ডিস্ট্রিবিউটেড স্ট্রিমিং সিস্টেমে ডেটা প্রক্রিয়াকরণ এবং ট্রান্সফারের জন্য। Kafka-তে ডেটা পাঠানোর সময়, Avro স্কিমা ব্যবহার করে ডেটার গঠন নির্ধারণ করা হয়। কিন্তু, একাধিক সংস্করণ এবং ডেটা ইভোলিউশনের কারণে Schema Compatibility খুবই গুরুত্বপূর্ণ হয়ে ওঠে। Avro স্কিমা ইভোলিউশন এবং Kafka Topics এর জন্য Schema Compatibility নিশ্চিত করতে হলে আপনাকে কিছু নির্দিষ্ট কৌশল অনুসরণ করতে হবে।
Avro Schema Compatibility কী?
Schema Compatibility নিশ্চিত করে যে, স্কিমা পরিবর্তন করার সময় পূর্ববর্তী স্কিমার সঙ্গে নতুন স্কিমার মধ্যে কোনো ধরনের অসমঞ্জস্য না হয়। যদি পূর্ববর্তী ডেটা নতুন স্কিমার সঙ্গে কাজ না করে, তবে এটি backward compatibility বা forward compatibility তে সমস্যা তৈরি করবে।
Kafka Topics এর জন্য Avro Schema Compatibility ব্যবস্থাপনা করতে হলে আপনাকে বুঝতে হবে:
- Backward Compatibility: পুরনো স্কিমায় থাকা ডেটা নতুন স্কিমার সাথে কাজ করবে।
- Forward Compatibility: নতুন স্কিমায় থাকা ডেটা পুরনো স্কিমার সঙ্গে কাজ করবে।
- Full Compatibility: পুরনো এবং নতুন স্কিমা একে অপরের সঙ্গে কাজ করবে, অর্থাৎ উভয় দিকে কাজ করবে।
Kafka Topics এর জন্য Avro Schema Compatibility Management এর উপায়
Kafka-তে Avro স্কিমার ব্যবহারে Compatibility সঠিকভাবে নিশ্চিত করতে কিছু নির্দিষ্ট কৌশল অনুসরণ করা প্রয়োজন। এই কাজের জন্য প্রধানত Schema Registry ব্যবহার করা হয়। Confluent Schema Registry একটি জনপ্রিয় টুল যা Kafka-তে স্কিমা ব্যবস্থাপনা এবং স্কিমার মধ্যে Compatibility ম্যানেজমেন্টে সাহায্য করে।
১. Schema Registry সেটআপ
Schema Registry একটি সেন্ট্রালাইজড সার্ভিস যা Avro স্কিমা সঞ্চয় এবং যাচাইকরণ করে। এটি Kafka Producers এবং Consumers কে একটি নির্দিষ্ট স্কিমা ব্যবহার করে ডেটা সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার সুযোগ দেয়। Schema Registry স্কিমার মধ্যে Compatibility চেক করতে সাহায্য করে এবং স্কিমার পরিবর্তন বা ইভোলিউশন সম্পর্কে সতর্ক করে।
- Schema Registry সেটআপ করার জন্য আপনাকে Schema Registry সার্ভার চালু করতে হবে, যা Kafka Brokers এর সাথে সংযুক্ত থাকবে।
Schema Registry Setup (Confluent Example)
# Install Confluent Platform (Schema Registry)
confluent-hub install confluentinc/schema-registry:latest
# Start Schema Registry
schema-registry-start /etc/schema-registry/schema-registry.properties
২. Compatibility Modes নির্বাচন করা
Schema Registry-তে বিভিন্ন ধরনের Compatibility Modes রয়েছে, যেগুলোর মধ্যে আপনি পছন্দমতো একটি নির্বাচন করতে পারেন। কিছু জনপ্রিয় Compatibility Modes হল:
- BACKWARD: পূর্ববর্তী স্কিমা অনুযায়ী নতুন স্কিমা তৈরি করা যেতে পারে, তবে নতুন স্কিমা পুরনো ডেটার সঙ্গে কাজ করবে।
- FORWARD: নতুন স্কিমা পুরনো ডেটার সঙ্গে কাজ করবে, তবে পুরনো স্কিমা নতুন ডেটার জন্য প্রস্তুত থাকবে না।
- FULL: পুরনো এবং নতুন স্কিমা একে অপরের সঙ্গে সম্পূর্ণভাবে কাজ করবে। অর্থাৎ, পুরনো স্কিমা নতুন ডেটার সঙ্গে কাজ করতে পারবে এবং নতুন স্কিমা পুরনো ডেটার জন্য প্রস্তুত থাকবে।
- NONE: Compatibility পরীক্ষণ না করে যে কোনো পরিবর্তন করা যাবে।
Compatibility Mode সেট করা:
# Set compatibility level to BACKWARD
curl -X PUT -H "Content-Type: application/json" \
--data '{"compatibility": "BACKWARD"}' \
http://localhost:8081/config/your_schema_subject
এই কমান্ডটি Schema Registry-তে একটি নির্দিষ্ট স্কিমার জন্য compatibility level সেট করবে।
৩. Avro Schema Versioning
Avro স্কিমায় পরিবর্তন আনার সময়, প্রতিটি স্কিমার একটি ভার্সন থাকে, যাতে আপনি জানতে পারেন কোন সংস্করণটি কোন ডেটার জন্য প্রযোজ্য। Schema Registry স্কিমার ভার্সন ট্র্যাক করে এবং প্রতিটি নতুন স্কিমা যোগ করার সময় তার পূর্ববর্তী স্কিমার সঙ্গে compatibility চেক করে।
- স্কিমার ভার্সন যখন তৈরি করা হয়, তখন এটি স্কিমার পূর্ববর্তী ভার্সনের সঙ্গে তুলনা করা হয় যাতে সেটা backward বা forward compatible হয় কিনা।
Avro Schema Version Example:
{
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "age", "type": "int"}
]
}
এখানে, প্রথম ভার্সন হিসেবে একটি স্কিমা তৈরি করা হলো। পরবর্তীতে যদি আপনি নতুন একটি ফিল্ড যোগ করেন, তা হলে Schema Registry নিজেই চেক করবে যে এটি backward compatible কিনা।
Avro Schema Compatibility এর জন্য Best Practices
- Compatibility Mode নির্বাচন: Schema Registry-তে Compatibility Mode নির্বাচন করুন যা আপনার সিস্টেমের প্রয়োজন অনুযায়ী উপযুক্ত। সাধারণত FULL Compatibility অনেক বেশি নিরাপদ, তবে এটি আপনার সিস্টেমের পারফরম্যান্সের উপর প্রভাব ফেলতে পারে।
- স্কিমার ইভোলিউশন পরিকল্পনা করুন: স্কিমার পরিবর্তন করার আগে, আপনি যেকোনো ডেটার backward বা forward compatibility নিশ্চিত করুন। স্কিমা ইভোলিউশনকে ভালোভাবে পরিকল্পনা করলে ভবিষ্যতে compatibility সমস্যা কম হবে।
- স্কিমা সংস্করণ নির্ধারণ করুন: প্রতিটি স্কিমার জন্য একটি ভার্সন ব্যবহার করুন এবং সেই অনুযায়ী ডেটা ট্র্যাক করুন। এটি স্কিমার মধ্যে পরিবর্তন পরিচালনা করতে সহায়ক হবে।
- কাস্টম Validation যুক্ত করুন: আপনার ডেটা প্রক্রিয়াকরণের সময় স্কিমার পরিবর্তন বা নতুন স্কিমা যোগ করার পরে কাস্টম Validation যুক্ত করুন, যাতে করে নতুন স্কিমা পূর্ববর্তী ডেটার সঙ্গে কাজ করতে পারে।
- Schema Registry এবং Kafka Integration: Schema Registry কে আপনার Kafka প্রোডিউসার এবং কনজিউমারদের সঙ্গে ইন্টিগ্রেট করুন, যাতে করে স্কিমা ব্যবস্থাপনা সম্পূর্ণভাবে স্বয়ংক্রিয় এবং সিস্টেমের মধ্যে এক্সেসযোগ্য হয়।
সারাংশ
Avro Schema Compatibility Management Apache Kafka-তে ডেটা প্রক্রিয়াকরণের জন্য অত্যন্ত গুরুত্বপূর্ণ। এটি নিশ্চিত করে যে স্কিমার পরিবর্তনগুলি ডেটা ইভোলিউশন প্রক্রিয়ায় কোনো সমস্যার সৃষ্টি করবে না। Schema Registry-এর মাধ্যমে আপনি Avro স্কিমার backward, forward, বা full compatibility নিশ্চিত করতে পারেন, যা Kafka Topics-এ স্কিমার পরিবর্তন পরিচালনাকে সহজ করে তোলে। Schema Registry-এর ব্যবহার, সঠিক Compatibility Mode নির্বাচন এবং স্কিমার ভার্সনিং সহ Best Practices অনুসরণ করে আপনি একটি স্থিতিশীল এবং স্কেলেবল সিস্টেম তৈরি করতে পারেন।
Read more