কম্পিউটার টিউটোরিয়াল

'নো PaaS' পদ্ধতি কি রেল বিকাশকারীদের জন্য একটি স্মার্ট পছন্দ?

রেল 8 একটি সাহসী ভিত্তি সহ পাঠানো হয়েছে:"কোন PaaS প্রয়োজন নেই।" যেহেতু ক্লাউড প্ল্যাটফর্মগুলি আরও ব্যয়বহুল হয়ে উঠেছে, রুবি অন রেলগুলি বাহ্যিক অবকাঠামো নির্ভরতা হ্রাস করার দিকে চলে গেছে যাতে বিকাশকারীরা কম পরিষেবা নির্ভরতা সহ অ্যাপ্লিকেশনগুলি স্থাপন এবং চালাতে পারে৷

 নো PaaS  পদ্ধতি কি রেল বিকাশকারীদের জন্য একটি স্মার্ট পছন্দ?

ঐতিহ্যগতভাবে, ইন্টারনেটে একটি Rails অ্যাপ স্থাপনের অর্থ হল একটি ডাটাবেস সার্ভার (যেমন, PostgreSQL) এবং ক্যাশিং, ব্যাকগ্রাউন্ড জব বা ওয়েবসকেটের জন্য Redis-এর মতো অতিরিক্ত পরিষেবা প্রদান করা। Rails 8 এর সাথে, মূল দল ক্যাশিং, কাজের সারি, এবং রিয়েল-টাইম ওয়েবসকেট - সবই আপনার অ্যাপ্লিকেশনের ডাটাবেস দ্বারা চালিত।

এই নিবন্ধে, "সলিড ট্রাইফেক্টা" এর একটি ওভারভিউ দিয়ে শুরু করে, আমরা কীভাবে Rails 8 "কোনও PaaS প্রয়োজন নেই" প্রতিশ্রুতি প্রদান করে তা অন্বেষণ করব৷

সলিড ক্যাশে আপনাকে Redis ছাড়াই ক্যাশে সাহায্য করে

Rails 8 এ আমার প্রিয় সংযোজনগুলির মধ্যে একটি হল সলিড ক্যাশে , একটি নতুন ক্যাশ স্টোর যা Redis বা Memcached-এর প্রয়োজন প্রতিস্থাপন করে . সলিড ক্যাশে একটি ইন-মেমরি কী-ভ্যালু স্টোরের পরিবর্তে ক্যাশে করা ডেটা বজায় রাখতে একটি ডাটাবেস ব্যবহার করে। ডিস্কে ক্যাশে করা বস্তু সংরক্ষণ করা RAM এর তুলনায় প্রযুক্তিগতভাবে ধীর, কিছু উল্লেখযোগ্য সুবিধা রয়েছে।

প্রথমত, ডিস্ক স্টোরেজ আপনাকে আরও জায়গা দেয় এবং মেমরির তুলনায় অনেক সস্তা। সলিড ক্যাশের সাহায্যে, আপনি র‍্যাম ফুরিয়ে না গিয়ে আরও অনেক বেশি ডেটা ক্যাশ করতে পারেন (এবং এটি আরও বেশি সময় ধরে রাখতে পারেন)৷ 37signals-এ (Basecamp এবং HEY-এর পিছনের কোম্পানি), Redis থেকে সলিড ক্যাশে স্যুইচ করে তাদের ক্যাশে 10+ টেরাবাইটে ডেটা প্রসারিত করতে দেয়, শেষ পর্যন্ত তাদের P95 রেন্ডারের সময় 50% কমিয়ে আনে।

হ্যাঁ, মেমরি থেকে পড়া ডিস্ক থেকে পড়ার চেয়ে দ্রুত। অনেক ক্ষেত্রে (যেমন বেসক্যাম্পের ব্যবহার), আরও ডেটা ক্যাশ করার ট্রেডঅফ এই গতিকে মূল্যবান করে তোলে।

ডিফল্টরূপে, Rails 8 সলিড ক্যাশে ব্যবহার করে (SQLite দ্বারা সমর্থিত)। অবশ্যই, রেল কনভেনশনগুলির জন্য স্বাভাবিক হিসাবে, আপনি এখনও রেডিসের মতো অন্য বিকল্পটি বেছে নিতে পারেন যদি এটি আপনার জন্য একটি ভাল পছন্দ হয়। কিন্তু এই ডিফল্টের সাথে লেগে থাকা আপনাকে Redis-এর মতো অন্য প্রোডাকশন পরিষেবাকে সমর্থন না করে জিনিসগুলি ক্যাশে করতে দেয়, যা আপনার পরিকাঠামোর বোঝাকে সহজ করে তোলে৷

সলিড কিউ আপনাকে ব্যাকগ্রাউন্ডের কাজ করতে সাহায্য করে — Redis ছাড়াই

আমার “সলিড” ট্রাইফেক্টার দ্বিতীয় প্রিয় অংশ হল সলিড কিউ, একটি নতুন অ্যাক্টিভ জব ব্যাকএন্ড যা রেডিস বা এমনকি Sidekiq-এর মতো আলাদা জব সিস্টেম নির্ভরতা ছাড়াই ব্যাকগ্রাউন্ড জব প্রসেসিং পরিচালনা করে।

অনেক রেল ডেভেলপার ব্যাকগ্রাউন্ড কাজের জন্য Sidekiq (যা রেডিসের উপর নির্ভর করে) বা বিলম্বিত চাকরির মতো রত্ন ব্যবহার করে। সলিড কিউ হল রেলের প্রয়োজন অপসারণের প্রচেষ্টা৷ অন্য নির্ভরতার জন্য। এটি আপনার অ্যাপ্লিকেশনের ডাটাবেসে কাজের সারিবদ্ধতাকে একীভূত করে, তাই আপনার মেমরি সমাধান বা সারিবদ্ধ সিস্টেমের প্রয়োজন নেই৷

সলিড কিউ একটি ডাটাবেস টেবিলে রেকর্ড হিসাবে কাজ সঞ্চয় করে এবং একটি কাজের সারি পরিচালনা করতে দক্ষ SQL বৈশিষ্ট্য ব্যবহার করে। এটি হয় রেলওয়ে ওয়েব প্রক্রিয়ায় (একক-সার্ভার সেটআপের জন্য একটি পুমা প্লাগইন হিসাবে) এম্বেড করা বা পৃথক কর্মী প্রক্রিয়াগুলিতে চলতে পারে৷

একজন Rails কোর টিমের সদস্য যেমন উল্লেখ করেছেন, লক্ষ্য ছিল একজন ডেভেলপারকে "রেল ইনস্টল করতে, একটি ডাটাবেস সেট আপ করতে এবং সাতটি ভিন্ন রত্ন এবং অন্যান্য সিস্টেম পরিচালনা না করেই ব্যাকগ্রাউন্ড জব প্রসেসিং করতে দেওয়া।"​

সলিড কেবল আপনাকে ওয়েব সকেট করতে সাহায্য করে (আশ্চর্য, রেডিস ছাড়া)

Rails 8 এর “No-Redis-needed” ধাঁধার তৃতীয় অংশটি হল সলিড ক্যাবল — একটি নতুন অ্যাকশন কেবল অ্যাডাপ্টার যা আপনি অনুমান করেছেন, একটি ডাটাবেস ব্যবহার করে৷ ঐতিহাসিকভাবে, একাধিক রেল প্রক্রিয়ার মধ্যে বার্তা সম্প্রচার করতে অ্যাকশন ক্যাবলের একটি রেডিস সার্ভারের প্রয়োজন হয়। সলিড ক্যাবলের সাহায্যে, আপনি রিয়েল-টাইম ওয়েবসকেট কার্যকারিতার জন্য অ্যাকশন কেবল ব্যবহার করতে পারেন, চ্যাট এবং বিজ্ঞপ্তিগুলির মতো অ্যাপ্লিকেশন বৈশিষ্ট্যগুলির জন্য লাইভ আপডেটগুলি আনলক করতে পারেন—অতিরিক্ত পরিষেবাগুলি না চালিয়ে৷

আমি আশা করি "সলিড" ট্রাইফেক্টার সুবিধা এখন স্পষ্ট হয়ে উঠছে। আপনি দীর্ঘমেয়াদী ডেটা ক্যাশে করতে পারেন, উচ্চ-থ্রুপুট ব্যাকগ্রাউন্ড কাজগুলি প্রক্রিয়া করতে পারেন এবং একটি রেডিস সার্ভার বা অন্যান্য পাব/সাব পরিষেবা না দাঁড়িয়েই রিয়েল-টাইম বৈশিষ্ট্যগুলি স্থাপন করতে পারেন৷ একসাথে, এই বৈশিষ্ট্যগুলি ছোট অ্যাপগুলির জটিলতা কমিয়ে দেয় (আপনি একটি ডাটাবেস সহ একটি একক হোস্টে সবকিছু চালাতে পারেন) এবং স্থাপনাকে সহজ করার জন্য রেল 8 দর্শনের সাথে মানানসই৷

Redis-এর প্রয়োজনীয়তা দূর করা কি এত বড় চুক্তি?

রেডিসের উপর নির্ভরতা অপসারণের বিষয়ে রেল 8 এর কতটা তা দেখার পরে, আপনি হয়তো কৌতূহলী হতে পারেন যে এটি আসলে কতটা গুরুত্বপূর্ণ। উত্তরটি আপনার প্রসঙ্গে নির্ভর করে, তবে নিঃসন্দেহে কিছু উল্লেখযোগ্য সুবিধা রয়েছে।

কম চলমান অংশ মানে কম জটিলতা, বিশেষ করে স্থাপনায়। প্রতিটি অতিরিক্ত পরিষেবা (Redis, একটি পৃথক ব্যাকগ্রাউন্ড জব রানার, ইত্যাদি) অন্য জিনিস যা ভাঙতে পারে বা স্কেলিং প্রয়োজন। আরও তথ্যের জন্য ডাটাবেস ব্যবহার করে, আপনি আপনার উত্পাদন অপারেশন সহজতর. আপনাকে রেডিস মেমরি নিরীক্ষণ করতে হবে না বা নিশ্চিত করতে হবে না যে একটি রেডিস ইন্সট্যান্স সবসময় চলছে।

অনেক Rails devs এমন পরিস্থিতির সম্মুখীন হয়েছে যেখানে, বিকাশে, আপনি একটি ক্যাশে সার্ভার চালান না বা সম্ভবত একটি ভিন্ন সারি অ্যাডাপ্টার ব্যবহার করেন না, কিন্তু উৎপাদনে, আপনি Redis/Sidekiq ব্যবহার করেন। নতুন Rails ডিফল্টের সাথে, আপনি বিস্ময় কমিয়ে ডেভেলপমেন্ট এবং প্রোডাকশনে একই সেটআপ চালাতে পারেন। স্ট্যাকটি আরও স্বয়ংসম্পূর্ণ এবং উৎপাদনের জন্য বিশেষ কনফিগারেশন ছাড়াই বাক্সের বাইরে "শুধু কাজ করে"৷

কম সার্ভার বা অ্যাড-অন মানে একটি সস্তা হোস্টিং বিল। এমনকি একটি বৃহত্তর স্কেলে, একত্রীকরণ অবকাঠামো কিছু খরচ দক্ষতার সাথে আসে। ডাটাবেসের স্থান মেমরির চেয়ে সস্তা!

রেল আপনাকে রেডিস বা অন্যান্য পরিষেবা ব্যবহার করতে বাধা দেয় না। এটি কেবল তাদের ঐচ্ছিক করে . আপনি বিল্ট-ইন সলিড অ্যাডাপ্টার দিয়ে শুরু করতে পারেন, এবং যদি আপনার প্রয়োজন হয়, আপনি রেডিস বা অন্যান্য সমাধানগুলি লাইনের নিচে উপস্থাপন করতে পারেন।

SQLite একটি ডাটাবেস প্রক্রিয়ার প্রয়োজনীয়তা দূর করে

Rails 8-এ আরেকটি অর্থবহ পরিবর্তন হল SQLite-কে একটি ব্যবহারযোগ্য উৎপাদন ডাটাবেস হিসেবে আলিঙ্গন করা, যা Rails-এর SQLite অ্যাডাপ্টারের অসংখ্য উন্নতি দ্বারা সক্ষম করা হয়েছে। যদি আপনার অ্যাপটি প্রোডাকশনে SQLite ব্যবহার করতে পারে, তাহলে আপনার আলাদা ডাটাবেস সার্ভার চালানোর দরকার নেই। পরিবর্তে, আপনার ডেটা অ্যাপ প্রক্রিয়া নিজেই পরিচালিত ডিস্কের একটি সাধারণ ফাইলে থাকে। SQLite-এ Rails 8-এর উন্নতিগুলি এটিকে আগের তুলনায় আরও বাস্তবসম্মত করে তোলে৷

SQLite স্থাপনা আরো সহজবোধ্য করতে পারে. আপনাকে সার্ভারে MySQL বা Postgres ইনস্টল বা পরিচালনা করতে হবে না বা একটি পরিচালিত DB পরিষেবা ব্যবহার করতে হবে না (এবং অর্থ প্রদান করতে হবে!) এটি শুধুমাত্র একটি ফাইল যা Rails অ্যাপটি পড়ে এবং লেখে।

আপনি যদি SQLite-কে ছাড়িয়ে যান, আপনি অবশ্যই পরে একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত ডাটাবেস সিস্টেমে স্থানান্তর করতে পারেন। Rails কোর টিম এইমাত্র ডিফল্টটিকে একটি হালকা বিকল্পে পরিবর্তন করেছে—যা "No PaaS" বর্ণনার সাথে ভালভাবে ফিট করে৷

কামাল 2 আপনাকে মোতায়েন করতে সহায়তা করে

রেল 8 চলমানকে সহজ করে প্রোডাকশনে একটি অ্যাপ—কিন্তু অ্যাপটি থেকে পাওয়ার বিষয়ে কী হবে উৎপাদন? কামাল 2 এর মুক্তি সেই প্রশ্নের উত্তর দেওয়ার চেষ্টা করে।

কমল হল একটি অর্কেস্ট্রেশন টুল যা আপনার অ্যাপকে (একটি ডকার কন্টেইনারের মাধ্যমে) যেকোন লিনাক্স সার্ভারে ন্যূনতম ঝগড়া সহ মোতায়েন করে। এটি স্বয়ংক্রিয়ভাবে আপনার অ্যাপের ইমেজ তৈরি করে, এটিকে ঠেলে দেয় এবং সার্ভারে এটিকে চালাতে সাহায্য করে।

 নো PaaS  পদ্ধতি কি রেল বিকাশকারীদের জন্য একটি স্মার্ট পছন্দ?

কিছু কনফিগারেশন এবং একটি কমান্ড সহ (kamal setup ), কামাল একটি নতুন লিনাক্স বক্স নেবেন এবং আপনার ডকার কন্টেইনার চালানোর জন্য যা প্রয়োজন তা দিয়ে এটি সরবরাহ করবেন।

তারপরে, kamal deploy চালানোর মতই স্থাপন করা সহজ , যা লেটেস্ট ইমেজ টেনে নেয় এবং শূন্য-ডাউনটাইম ডিপ্লয়মেন্ট হিসেবে পুরানো কন্টেইনারকে নতুনের জন্য অদলবদল করে।

কামাল 2 আপনাকে যে কোনো লিনাক্স হোস্টে PaaS-এর মতো স্থাপনার অভিজ্ঞতা দেবে বলে আশা করে। আপনি যেকোন সার্ভারকে একটি একক কমান্ডের সাহায্যে আপনার অ্যাপকে চালিত রেল সার্ভারে পরিণত করতে পারেন। প্রাথমিক কনফিগারেশন একটি ব্যথা হতে পারে, কিন্তু পরবর্তী স্থাপনা অনেক সহজবোধ্য। Heroku এর মতো একটি প্ল্যাটফর্মে ঠেলে দেওয়ার মতো স্ব-হোস্টিংকে সুবিধাজনক করার দিকে এটি একটি বড় পদক্ষেপ৷

"No PaaS" কি একটি ভাল ধারণা?

রেল 8 সত্যিই করে প্ল্যাটফর্ম অতীতের একটি জিনিস করা? এবং ছোট থেকে মাঝারি আকারের দলগুলি কি সত্যিই স্ব-হোস্টিং করে অর্থ সঞ্চয় করতে পারে?

আমি সম্প্রতি কামাল ব্যবহার করে একটি ভিপিএসে একটি শখের প্রকল্প স্থাপন করেছি, এবং এটি একটি হতাশাজনক অভিজ্ঞতা ছিল। যদিও আমি এটিকে কাজ করার পরে স্থাপনাগুলি তুলনামূলকভাবে নিরবচ্ছিন্ন, তবে সেটআপটি এটি থেকে অনেক দূরে ছিল এবং আমার যদি কখনও এই প্রকল্পটি স্কেল করার প্রয়োজন হয় তবে আমার কাজটি আমার জন্য বন্ধ হয়ে যায়৷

সুতরাং, আমার জন্য, উত্তর হল না — রেল 8 প্ল্যাটফর্মের মান প্রস্তাবকে সরিয়ে দেয় না . আমি বরং আমার অ্যাপে ফোকাস করব এবং Heroku-এর মতো একটি প্ল্যাটফর্মকে পরিকাঠামো পরিচালনা করতে দেব।

একক বিকাশকারী এবং ছোট দলগুলি স্কেলের অর্থনীতির পিছনে ধাওয়া করার চেয়ে তাদের ব্যবহারকারীদের উপর ফোকাস করে বেশি উপকৃত হবে। কেন আউটসোর্স হোস্টিং, স্থাপনা, এবং একটি প্ল্যাটফর্মে স্কেলিং করা হয় না যা এই অঞ্চলে এটিকে ক্রাশ করে এবং আপনার গ্রাহকদের পছন্দের পণ্য তৈরিতে মনোযোগ দেয়?

অবশ্যই, আপনার দল এবং অ্যাপ্লিকেশন বাড়ার সাথে সাথে আপনি একটি প্ল্যাটফর্মের মূল্য কম আকর্ষণীয় দেখতে পাবেন। কিছু সময়ে, সময় এবং/অথবা লোকেদের SRE এবং ops দায়িত্বের জন্য নিবেদিত হওয়াটা বোধগম্য, এবং কামাল (অন্যান্য দুর্দান্ত Rails 8 ডিফল্টের সাথে) এটি সহজ করার দিকে একটি বিশাল পদক্ষেপ।

এটি সব একসাথে নিয়ে আসা

রেল 8 স্ব-হোস্টিং এবং একটি প্ল্যাটফর্ম ব্যবহার করার মধ্যে ব্যবধানকে সংকুচিত করে, তবে এটি "কোনও PaaS প্রয়োজন নেই" সততার সাথে দাবি করার জন্য এটি যথেষ্ট বন্ধ করে না। তবে এটা স্পষ্ট যে, Rails 8 খুব বেশি ডেভেলপার অভিজ্ঞতাকে ত্যাগ না করে PaaS-এর উপর VPS বেছে নেওয়া সহজ করে তোলে; আমি মনে করি না এটি একটি প্ল্যাটফর্ম কিলার।

সলিড ক্যাশে, সলিড কিউ এবং সলিড ক্যাবল সবই প্রথম পক্ষের সমর্থনে ওয়েব অ্যাপগুলির জন্য পূর্বে তৃতীয়-পক্ষের প্রয়োজনীয়তা নিয়ে আসে এবং আমি এর জন্য কৃতজ্ঞ। মাটি থেকে একটি অ্যাপ্লিকেশন পেতে হালকা ওজনের কিন্তু শক্তিশালী ডিফল্ট থাকা দুর্দান্ত, এবং আরও ভাল, তাদের খুব বেশি পরিকাঠামোর প্রয়োজন হয় না। আপনি যদি স্ব-হোস্ট বেছে নেন, কামাল আপনার জন্য কিছু স্থাপনার বোঝা সরিয়ে নিতে পারে।

আপনি একটি প্ল্যাটফর্ম ব্যবহার করছেন বা না করছেন, ত্রুটি এবং বিভ্রাটের দ্রুত প্রতিক্রিয়া জানাতে এবং আপনার গ্রাহকদের একটি দুর্দান্ত ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য পর্যবেক্ষণ অপরিহার্য। আপনার Rails অ্যাপ্লিকেশনের স্বাস্থ্য এবং কর্মক্ষমতা সম্পর্কে রিয়েল-টাইম অন্তর্দৃষ্টি পেতে Honeybadger-এর জন্য সাইন আপ করুন৷


  1. বোকেহ (পাইথন) এর চিত্রগুলির সাথে কীভাবে কাজ করবেন?

  2. লিনাক্সের জন্য 2024 সেরা মাইক্রোসফ্ট টিম বিকল্প - 16টি সেরা পছন্দ

  3. কিভাবে CSS দিয়ে একটি যোগাযোগ ফর্ম তৈরি করবেন?

  4. রিয়েল-টাইম ADDM-এর সাথে ওরাকল ডাটাবেস এবং সেশনগুলিকে সমস্যা সমাধান করা হয়েছে