পরিচয়
আপনি কি কখনও ভেবে দেখেছেন যে কোডশেয়ারের মতো প্ল্যাটফর্মগুলি কীভাবে তৈরি করা হয়? আপনি কি কখনও নিজের জন্য একটি ভাল বিকাশকারীর অভিজ্ঞতা বজায় রেখে এমন একটি পরিষেবা স্কেল করার চ্যালেঞ্জগুলি মোকাবেলা করার চেষ্টা করেছেন? যখন আমি বাইটক্রাউডস তৈরি করার সিদ্ধান্ত নিয়েছিলাম, তখন আমাকে শিখতে হয়েছিল কীভাবে এই সব করতে হয়। পাঠ্য-ভাগ করার ক্ষমতা প্রদানের জন্য Yjs ব্যবহার করার সিদ্ধান্তের পরে কঠোর গবেষণা করা, এটি একটি ডাটাবেস বেছে নেওয়ার সময় এসেছে। বাজারে উপলব্ধ অনেকগুলি বিকল্পের সাথে, আমি একটি প্রয়োজনীয় কীওয়ার্ড ব্যবহার করে তালিকাটি সংকুচিত করেছি:সরলতা
আপস্ট্যাশ কেন?
এমনকি Upstash আবিষ্কার করার আগে, আমি এর সাধারণ API এর জন্য Redis®-এ আগ্রহী ছিলাম। যাইহোক, এটিকে প্রাথমিক ডাটাবেস হিসাবে ব্যবহার করা স্কেলিং (ক্যাশিংয়ের জন্যও এটির প্রয়োজন হতে পারে) এবং অধ্যবসায় বজায় রাখার মতো চ্যালেঞ্জগুলির সাথে আসে। একই সময়ে, কোনও স্পনসরশিপ সুরক্ষিত করার আগে, আপনাকে একটি ওপেন-সোর্স সফ্টওয়্যার বাজেট করার বিষয়ে খুব সতর্ক থাকতে হবে। আপনি কি কম্পিউটিং শক্তির জন্য অর্থ প্রদান করবেন যদিও এটি মাঝে মাঝে ব্যবহার না করা হয়? আপনি কি হঠাৎ ট্র্যাফিক স্পাইক পরিচালনা করতে পারেন এবং নতুন বৈশিষ্ট্য প্রকাশের দিকে কাজ করার পরিবর্তে, বিদ্যমান বৈশিষ্ট্যগুলিকে উন্নত করতে বা কিছু বাগ ঠিক করার পরিবর্তে পরিকাঠামোতে কাজ করার জন্য ঘন্টা ব্যয় করতে প্রস্তুত হতে পারেন? আমি, এক জন্য, ছিল না. তাই আমি Upstash খুঁজে পেয়েছি।
Upstash Redis অফারটি আমার প্রয়োজনীয় মানদণ্ডের 3টি মেলে:এটি ব্যবহার করা সহজ , স্কেল করা সহজ , এবং নমনীয় . কম বিলম্বের সাথে একত্রিত করুন, সার্ভারহীন ক্লায়েন্টে ব্যবহার করার জন্য বাক্সের বাইরে REST sdk (একটি প্রয়োজনীয়তা Bytecrowds-এর জন্যও), গ্লোবাল রেপ্লিকেশন এবং কম্পিউটিং পাওয়ারের জন্য একটি পে-অ্যাজ-ইউ-গো প্ল্যান, কিছু নাম, এবং আপনি বুঝতে পারবেন কেন আমি আমার প্রকল্পের জন্য এটি বেছে নিয়েছি।
অ্যাপ জুড়ে Redis® ব্যবহার করা
চলুন জেনে নেওয়া যাক কিভাবে Redis® একটি প্রকল্পের প্রধান ডাটাবেস হিসাবে ব্যবহার করা যেতে পারে, একাধিক পরিষেবার চাহিদা পূরণ করে। প্রসঙ্গটি বোঝার জন্য, এখানে বাইটক্রোডসের প্রবাহের একটি চিত্র দেওয়া হল:

এটি ক্লায়েন্ট জুড়ে পাঠ্য সিঙ্ক করতে Ably ব্যবহার করে এবং একটি কাস্টম বিশ্লেষণ ইঞ্জিন যা অনুরোধের IP ঠিকানার উপর ভিত্তি করে ডেটা সংগ্রহ করে৷
প্রধান স্টোরেজ
একটি বাইটেকক্রোড নিম্নলিখিত বৈশিষ্ট্য সহ একটি Redis® হ্যাশের রূপ নেয়:
{
text: string,
language: string,
authorizedEmails: undefined || string array
} আপডেটগুলির মধ্যে "x" সেকেন্ডের বিলম্বের সাথে আমরা হ্যাশের একটি বৈশিষ্ট্য পরিবর্তন করার পরে আপডেট করি। উৎপাদনে, এটি বর্তমানে 100 মিলিসেকেন্ডে সেট করা হয়েছে৷
৷প্রমাণিকরণ এবং অনুমোদন
প্রমাণিকরণ
যেহেতু Bytecrowds Next.js ব্যবহার করে, GitHub OAuth সংহত করার জন্য একটি কঠিন পছন্দ ছিল Auth.js। সৌভাগ্যবশত, আমরা সেশনগুলি সংরক্ষণ করার জন্য Upstash অ্যাডাপ্টারের সুবিধাও নিতে পারি, যা আমাদের সমস্ত অ্যাপ জুড়ে Redis® ব্যবহার করার অনুমতি দেয়৷
অনুমোদন
Bytecrowds চাহিদা অনুযায়ী একটি authorizedEmails তৈরি করে অনুমোদন পরিচালনা করে ক্ষেত্র যা একবার সেট করা API থেকে অপরিবর্তনীয়। Redis® সম্পর্কে আমি যে জিনিসগুলি পছন্দ করি তা হল রুটিন ক্রিয়াকলাপের জন্য বাক্সের বাইরে প্রচুর ফাংশন উপলব্ধ যা অ্যালগরিদমিকভাবে দক্ষ হওয়ার জন্য ডিজাইন করা হয়েছে। একটি উদাহরণ দিতে, authorizedEmails কিনা তা পরীক্ষা করার জন্য আমাদের যা করতে হবে ইতিমধ্যেই সেট করা হয়েছে HEXISTS কমান্ড ব্যবহার করার জন্য, যার O(1) জটিলতা রয়েছে।
বিশ্লেষণ
Bytecrowds একটি বিশ্লেষণ সিস্টেম ব্যবহার করে যা দুটি বিভাগের ডেটা পরিচালনা করে:
- একদিনের পরিসংখ্যান, যা একটি Redis® হ্যাশের রূপ নেয়, যার নাম
year month dayনিম্নলিখিত বৈশিষ্ট্য সহ:
{
countries: string array,
hits: integer,
pages: string array,
uniqueVisitors: integer,
addresses: string array,
continents: string array
}
যেখানে addresses SHA256-এনক্রিপ্ট করা IP ঠিকানাগুলির একটি অ্যারে যা ওয়েবসাইট দর্শকদের অনন্য সংখ্যা নির্ধারণ করতে ব্যবহৃত হয়৷
- 3টি কী নামের
continents,countries, এবংpagesযার জন্য Redis® সাজানো সেটগুলি ডেটা সংরক্ষণ করার জন্য ব্যবহার করা হয়েছিল প্রতিটি স্ট্যাটকে তার গণনা সহ সংরক্ষণ করে ("স্কোর", সাজানো সেটের জন্য), আমরা SORT বা SORT_RO-এর মতো কমান্ড ব্যবহার করে সহজেই অনুসন্ধান বা সাজাতে পারি। Redis এর সরলতা আবার দেখায়।
আপনি যদি এর পিছনের কোডটি সম্পর্কে জানতে আগ্রহী হন তবে https://github.com/Bytecrowds/analytics/blob/main/src/index.js
দেখুনদ্রষ্টব্য :একটি আরও জটিল পরিস্থিতিতে, আপনি সম্ভবত এই সিস্টেমে কিছু পরিবর্তন প্রয়োগ করবেন, যেমন প্রক্রিয়াকরণের আগে কাঁচা ডেটা সংরক্ষণ করা এবং Apache Kafka (Upstash এটির যত্ন নিতে পারে, ডক্স পরীক্ষা করে) এর মতো কিছু ধরণের স্ট্রিম প্রসেসিং টুল ব্যবহার করে।
এটি লাইভ দেখুন
Bytecrowds কর্মে দেখতে চান? https://www.bytecrowds.com-এ যান, "new bytecrowd" বোতামে ক্লিক করুন এবং একাধিক ট্যাবে লিঙ্কটি খুলুন। আপনি যখন লেখা শুরু করবেন, আপনি দেখতে পাবেন যে কোডটি সমস্ত সংযুক্ত ক্লায়েন্ট জুড়ে প্রতিলিপি করা হয়েছে৷
শেষ
এটি কোন গোপন বিষয় নয় যে একটি ওপেন-সোর্স প্রকল্পের একমাত্র সক্রিয় রক্ষণাবেক্ষণকারী হওয়া কঠিন, কিন্তু সঠিক সরঞ্জাম এবং একটি স্বয়ংক্রিয়-স্কেলিং পরিকাঠামো থাকা একটি দুর্দান্ত সমর্থন হতে পারে যা আপনাকে ট্র্যাফিক স্পাইক সম্পর্কে চিন্তা না করেই দুর্দান্ত প্রকল্পগুলিতে কাজ চালিয়ে যেতে সহায়তা করে। ইতিমধ্যেই Upstash Redis® চেষ্টা করে দেখতে রাজি? একটি বিনামূল্যের অ্যাকাউন্টের জন্য সাইন আপ করুন, কোনো ক্রেডিট কার্ডের প্রয়োজন নেই৷
৷সম্পূর্ণ কোড দেখতে, GitHub সংগ্রহস্থল পরীক্ষা করুন। এই নিবন্ধটি সম্পর্কে আপনার কোন প্রশ্ন বা প্রতিক্রিয়া থাকলে, tudor.zgimbau@gmail.com এ আমার সাথে যোগাযোগ করুন।