ভূমিকা
আমরা সাধারণত আমাদের তৈরি মেশিন লার্নিং (Machine Learning) মডেল বা ওয়েব অ্যাপ্লিকেশন নিজেদের কম্পিউটারে (Localhost) চালাই। কিন্তু এটাকে যদি পৃথিবীর যেকোনো প্রান্তের মানুষের ব্যবহারের উপযোগী করতে হয়, তবে তাকে ইন্টারনেট বা ক্লাউডে রাখতে হয়। একেই বলে 'ডেপ্লয়মেন্ট' (Deployment)। এই ভিডিওতে দেখানো হয়েছে কীভাবে একটি মেশিন লার্নিং মডেলকে অ্যামাজনের (AWS) একটি সার্ভারে (EC2) খুব সহজে রাখা যায়।
১. কাজের আর্কিটেকচার বা নকশা
ভিডিওর রেফারেন্স: [00:48]
আমাদের সিস্টেমটি কীভাবে কাজ করবে তার একটি সাধারণ ধারণা এখানে দেওয়া হয়েছে:
-
Nginx (এনজিনক্স): এটি একটি হালকা ওয়েব সার্ভার। যখন কেউ আমাদের ওয়েবসাইটের লিঙ্কে ক্লিক করে, তখন Nginx সেই রিকোয়েস্ট গ্রহণ করে।
-
রিয়েকশন: প্রথমে Nginx আমাদের ওয়েবসাইটের HTML, CSS এবং জাভাস্ক্রিপ্ট ফাইলগুলো ব্রাউজারে পাঠায়।
-
API কল: যখন ইউজার কিছু ক্লিক করে দাম জানার জন্য, তখন জাভাস্ক্রিপ্ট কোড থেকে একটি রিকোয়েস্ট ব্যাক-এন্ডে যায়।
-
রিভার্স প্রক্সি (Reverse Proxy): Nginx একটি 'রিভার্স প্রক্সি' হিসেবে কাজ করে, যা ওই রিকোয়েস্টকে আমাদের পাইথন (Python Flask) সার্ভারের কাছে পাঠিয়ে দেয়। পাইথন সার্ভার মডেল থেকে দাম হিসাব করে ফলাফল দেয়।
সহজ ভাষায়: Nginx হলো হোটেলের ওয়েটারের মতো, যে কাস্টমারের অর্ডার (Request) নিয়ে কিচেনে (Python Server) পাঠায় এবং খাবার তৈরি হলে তা কাস্টমারকে সার্ভ করে।
২. Nginx সেটআপ এবং কনফিগারেশন
ভিডিওর রেফারেন্স: [01:54]
প্রথমে নিজের কম্পিউটারে Nginx সেটআপ করে যাচাই করে নেওয়া হয়।
-
Nginx ডাউনলোড করে কনফিগারেশন ফাইল (
nginx.conf) এডিট করতে হয়। -
এখানে 'Root' ফোল্ডার পরিবর্তন করে আমাদের ওয়েবসাইটের ফাইলগুলো যুক্ত করতে হয় যাতে সরাসরি ওয়েবসাইট লোড হয়।
কোডিং কনসেপ্ট: nginx.conf ফাইলে নিচের কোডটুকু ব্যবহার করে আমরা রিভার্স প্রক্সি সেটআপ করি:
Nginx
location /api/ {
proxy_pass http://127.0.0.1:5000;
}
- ব্যাখ্যা: এই কোডটির অর্থ হলো, যদি কেউ
/api/দিয়ে শুরু হওয়া কোনো লিঙ্কে রিকোয়েস্ট পাঠায়, তবে Nginx তাকে সরাসরি ৫০০০ নম্বর পোর্টে চলমান আমাদের পাইথন সার্ভারের কাছে পাঠিয়ে দেবে।
৩. AWS EC2 ইনস্ট্যান্স তৈরি
ভিডিওর রেফারেন্স: [10:15]
EC2 হলো অ্যামাজনের একটি ক্লাউড কম্পিউটার বা ভার্চুয়াল মেশিন।
-
AWS কনসোলে গিয়ে 'Launch Instance' বাটনে ক্লিক করে একটি Ubuntu মেশিন সিলেক্ট করতে হয়।
-
সিকিউরিটি গ্রুপ: এখানে আমাদের HTTP পোর্ট (Port 80) খোলা রাখতে হবে যাতে বাইরের লোকজন ওয়েবসাইটটি দেখতে পারে।
-
কী-পেয়ার (Key Pair): এটি অনেকটা পাসওয়ার্ডের মতো কাজ করে। এটি ডাউনলোড করে আমাদের লোকাল পিসির
.sshফোল্ডারে রাখতে হয়।
৪. সার্ভারে কোড কপি এবং সেটআপ
ভিডিওর রেফারেন্স: [14:36]
-
SSH সংযোগ:
git bashব্যবহার করে আমরা ক্লাউড মেশিনের সাথে সংযোগ করি। -
WinSCP ব্যবহার: WinSCP সফটওয়্যার দিয়ে আমাদের কম্পিউটারের ফাইলগুলো সরাসরি ক্লাউড সার্ভারে ড্র্যাগ অ্যান্ড ড্রপ করে কপি করি।
-
Nginx ইনস্টল: লিনাক্স কমান্ড
sudo apt-get install nginxদিয়ে সার্ভারে Nginx সেটআপ করা হয়। -
সিম্বলিক লিঙ্ক (Symlink): এটি একটি শর্টকাটের মতো, যা Nginx-কে বলে দেয় আমাদের কনফিগারেশন ফাইলটি কোথায় আছে।
sudo ln -s /etc/nginx/sites-available/bhp.conf /etc/nginx/sites-enabled/কমান্ড দিয়ে এটি করা হয়।
৫. পাইথন সার্ভার চালু করা
ভিডিওর রেফারেন্স: [25:36]
সবশেষে ব্যাক-এন্ড সার্ভার চালানোর পালা:
-
সার্ভারে
requirements.txtফাইল থেকে প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হয়। -
python3 server.pyকমান্ড দিয়ে সার্ভার চালু করলেই ওয়েবসাইটটি পুরোপুরি লাইভ হয়ে যায়।
বিশ্লেষণ ও আমার মতামত
এই ভিডিওটি ডেপ্লয়মেন্টের একটি চমৎকার বাস্তব উদাহরণ। সাধারণত নতুনদের জন্য সার্ভার, লিনাক্স কমান্ড এবং Nginx কনফিগারেশন অনেক কঠিন মনে হতে পারে, কিন্তু এই ভিডিওতে তা ধাপে ধাপে খুব সহজভাবে দেখানো হয়েছে।
-
বাস্তবতা: বড় প্রোজেক্টে সাধারণত 'Docker' বা 'Gunicorn' ব্যবহার করা হয় যা আরও বেশি নির্ভরযোগ্য। তবে শেখার শুরুতে এই Nginx ও Flask সেটআপটি সবচেয়ে কার্যকর।
-
পরামর্শ: যদি আপনি লিনাক্স বা টার্মিনালে নতুন হন, তবে প্রতিটি কমান্ড দেওয়ার সময় সাবধানে টাইপ করবেন এবং কমান্ডের অর্থগুলো বোঝার চেষ্টা করবেন।
-
বিকল্প: ভবিষ্যতে আপনি চাইলে 'Render', 'Heroku' বা 'Vercel'-এর মতো প্ল্যাটফর্মও ব্যবহার করতে পারেন, যেখানে এত কনফিগারেশন লাগে না। তবে AWS শেখাটা ক্যারিয়ারের জন্য অনেক বড় প্লাস পয়েন্ট।
ভিডিওটি দেখার জন্য লিঙ্ক: https://www.youtube.com/watch?v=q8NOmLD5pTU
[
Deploy machine learning model to production AWS (Amazon EC2 instance)
codebasics · 143K views
](http://www.youtube.com/watch?v=q8NOmLD5pTU)

মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন
আপনার সমস্যাটি কমেন্ট করে আমাদের জানান :-d