এই "পুমা" জিনিসটি কী যা আপনি যখন rails server
করেন তখন চলতে শুরু করে ?
এটি একটি অ্যাপ সার্ভার!
আমাকে একটি অ্যাপ্লিকেশন সার্ভার কি এবং কেন আমাদের একটি উদাহরণ সহ তাদের প্রয়োজন ব্যাখ্যা করতে দিন৷
অ্যাপ সার্ভার বোঝা
ধরা যাক আপনি রুবিতে আপনার নতুন চকচকে ওয়েব অ্যাপ্লিকেশন তৈরি করা শুরু করেছেন৷
৷এবং কোন কোড লেখার আগে...
আপনি এটিকে আপনার ব্রাউজারে লোড দেখতে চান, এমনকি যদি শুধুমাত্র ডিফল্ট "স্বাগত" পৃষ্ঠাটি দেখতে পান।
সুতরাং আপনি আপনার ব্রাউজার খুলুন, আপনি এটি localhost:3000
এ নির্দেশ করুন , অথবা হয়তো localhost:4567
আপনি যদি সিনাট্রা ব্যবহার করেন।
তারপর কি হবে?
আপনার ব্রাউজার localhost
-এর সাথে সংযোগ করে , পোর্টে 3000
, যেখানে একটি রুবি অ্যাপ্লিকেশন সার্ভার যেমন Puma অপেক্ষা করছে।
localhost
একটি বিশেষ আইপি ঠিকানার দিকে নির্দেশ করে,127.0.0.1
, যা সর্বদা আপনার কম্পিউটারকে বোঝায়
এখন :
Puma, বা অন্য যেকোন র্যাক-ভিত্তিক সার্ভারের (যেমন থিন / ইউনিকর্ন) কাজ হল ব্রাউজারের অনুরোধ পরিচালনা করা এবং একটি সাধারণ ইন্টারফেসের মাধ্যমে এটি আপনার অ্যাপ্লিকেশনে প্রেরণ করা।
আমরা কোন ইন্টারফেসের কথা বলছি?
তাক।
আমি অন্য একটি নিবন্ধে রাককে বিস্তারিতভাবে ব্যাখ্যা করি।
পুমাতে ফিরে যান।
কেন আমরা একটি অ্যাপ সার্ভার ব্যবহার করি, রেল সরাসরি অনুরোধগুলি পরিচালনা করার পরিবর্তে?
দারুণ প্রশ্ন।
আমরা এটি করি কারণ এটি একটি মৌলিক সফ্টওয়্যার ডিজাইন নীতির জন্য অনুমতি দেয়৷
৷উদ্বেগের বিচ্ছেদ!
উদ্বেগের বিচ্ছেদ বোঝা
রেলের কাজ এবং আপনার আবেদনের কাজ হল ব্যবহারকারীর অনুরোধ পূরণ করা।
উদাহরণস্বরূপ :
- একটি নতুন অ্যাকাউন্ট তৈরি করুন
- লগইন শংসাপত্রগুলি বৈধ কিনা তা পরীক্ষা করুন
- একটি পণ্য পৃষ্ঠা দেখান যেখানে আপনি একটি 100% ক্যাকো চকলেট বার কিনতে পারেন
আপনার অ্যাপ যাই হোক না কেন।
- রেল একজন ব্যবহারকারী যা করতে পারে তার মেনু অফার করে, তবে এটি শেফও, এটি কাজগুলি সম্পন্ন করে
- পুমা হল ওয়েটার, এটি অর্ডার নেয় এবং তাদের রান্নাঘরে নিয়ে যায়
এইভাবে জিনিসগুলি সেট আপ করা প্রত্যেককে তাদের সেরাটা করতে দেয়৷
শুধু তাই নয়...
এটি আপনাকে শেফকে সিনাত্রাতে বা ওয়েটারকে পাতলাতে পরিবর্তন করতে দেয়!
"যখন উদ্বেগগুলি ভালভাবে আলাদা করা হয়, তখন মডিউল পুনঃব্যবহারের পাশাপাশি স্বাধীন উন্নয়ন এবং আপগ্রেডের জন্য স্বাধীনতার উচ্চতর ডিগ্রি থাকে।"
উইকিপিডিয়া
আপনার পরিস্থিতি এবং পছন্দের উপর নির্ভর করে।
অ্যাপ্লিকেশন সার্ভার বনাম ওয়েব সার্ভার (Nginx এবং Apache)
এই মুহুর্তে, আপনি হয়তো ভাবছেন…
Apache বা Nginx এর মত একটি ওয়েব সার্ভার কিভাবে রুবি সার্ভার থেকে আলাদা?
কেন আমরা এই দুটি সার্ভার ব্যবহার করতে পারি না?
একটি বড় পার্থক্য আছে।
Nginx হল একটি সাধারণ ওয়েব সার্ভার, এটি একটি অনুরোধ পরিচালনা করে এবং যদি সেই অনুরোধের জন্য একটি মিলে যাওয়া ফাইল থাকে তবে এটি সেই ফাইলটি ফিরিয়ে দেবে৷
কিন্তু Nginx Rack সম্পর্কে কিছুই জানে না , অথবা রুবি।
এজন্য আমাদের Puma বা অন্য কোনো র্যাক-সামঞ্জস্যপূর্ণ ওয়েব সার্ভার প্রয়োজন।
তবে…
উৎপাদনে Nginx ব্যবহার করা এখনও সহায়ক হতে পারে।
Nginx সংযোগগুলিকে আরও কার্যকরভাবে পরিচালনা করতে পারে এবং এটি আপনার অ্যাপ্লিকেশনে অনুরোধটি ফরোয়ার্ড না করেই স্ট্যাটিক সম্পদ (css এবং js ফাইল) পরিবেশন করতে পারে৷
পুমা বোঝা
এখন আমরা বুঝতে পেরেছি যে একটি অ্যাপ্লিকেশন সার্ভার কী এবং কেন এটি দরকারী৷
৷আমরা পুমা নিজেই দেখতে পারি .
কেন আপনি অন্যান্য সার্ভারের তুলনায় Puma বেছে নিতে চান?
প্রথম :
এটি Heroku এর প্রস্তাবিত সার্ভার।
তারা উল্লেখ করার প্রধান কারণ হল, আপনি যদি ইউনিকর্ন ব্যবহার করেন - একটি বিকল্প অ্যাপ সার্ভার - তাহলে আপনি ধীর ক্লায়েন্ট আক্রমণের জন্য সংবেদনশীল।
এছাড়াও৷ :
পুমা মাল্টি-থ্রেডেড, যার ফলে সাধারণত কম মেমরি ব্যবহার হয়।
"অপারেটিং সিস্টেমটি একটি মাল্টিপ্রসেস প্রোগ্রামের তুলনায় একটি মাল্টিথ্রেডেড প্রোগ্রামের পক্ষে কম কাজ করে। এটি মাল্টিথ্রেড প্রোগ্রামের জন্য একটি পারফরম্যান্স লাভে অনুবাদ করে।”
PThreads Programming
কোন সার্ভার দ্রুততর?
এই কমান্ডের সাথে একটি সাধারণ র্যাক অ্যাপ চালানো হচ্ছে:
rackup -s thin rack-simple.ru 2>1 &>/dev/null
এটি দিয়ে পরীক্ষা করা হয়েছে :
wrk -d 20 https://localhost:9292
আমি এই বেঞ্চমার্ক ফলাফল পেয়েছি :
- ওয়েব্রিক 229.97 অনুরোধ/সেকেন্ড
- পাতলা 773.20 অনুরোধ/সেকেন্ড
- Puma 2035.34 অনুরোধ/সেকেন্ড
এই তিনটির মধ্যে, দেখে মনে হচ্ছে পুমা আপনাকে সেরা পারফরম্যান্স দেয়৷
কিন্তু আপনার যদি ধীরগতির SQL ক্যোয়ারী থাকে, অথবা আপনি প্রতিটি অনুরোধে লক্ষ লক্ষ উপাদানের সাথে অ্যারেগুলির মাধ্যমে লুপ করে থাকেন তবে তাতে কিছু যায় আসে না৷
সারাংশ
আপনি Puma &Thin এর মত রুবিতে অ্যাপ্লিকেশন সার্ভার সম্পর্কে শিখেছেন, তাই আমরা কেন সেগুলি ব্যবহার করি সে সম্পর্কে আপনি এখন আরও ভালভাবে বুঝতে পেরেছেন।
আপনার পরবর্তী প্রকল্পের জন্য আপনি কোনটি ব্যবহার করতে যাচ্ছেন?
পড়ার জন্য ধন্যবাদ! 🙂