আমরা যখন একটি প্রোডাক্ট তৈরি করি, তখন সেটি ব্যবহারকারীদের জন্য সার্ভারে ডেপ্লয় করা হয়। কিন্তু বিভিন্ন কারণেই সেই সার্ভার হঠাৎ করে ডাউন হতে পারে, যা ব্যবহারকারীদের জন্য বড় ধরনের অসুবিধার সৃষ্টি করতে পারে। এই পরিস্থিতিতে একজন ইঞ্জিনিয়ার হিসাবে আমাদের কি করণীয় বিষয়গুলো জানা অত্যন্ত গুরুত্বপূর্ণ। আজ আমি আমার অভিজ্ঞতা থেকে এ বিষয়টি নিয়ে আলোচনা করতে চাই।
চলুন শুরু করি
ভালো ইঞ্জিনিয়ারদের অন্যতম বৈশিষ্ট্য হলো, আমাদের যে কোনো সম্ভাব্য সমস্যার জন্য আগে থেকেই প্রস্তুতি নিতে হয়। সার্ভার ডাউন হলে কীভাবে দ্রুত সমস্যা চিহ্নিত করে সমাধান করতে পারি, তার জন্য যথাযথ পরিকল্পনা থাকা জরুরী। সঠিক প্রস্তুতি থাকলে এধরনের সমস্যার মুখোমুখি হলে কার্যকরী ও দ্রুত পদক্ষেপ নেওয়া অনেক সহজ হয়ে যায়।
পূর্ব প্রস্তুতি: আগে থেকেই যা যা করতে পারেন
১. কোড লেভেলে লগিং (Log/Logger)
সার্ভারে সমস্যা আসতেই পারে কিন্তু কিছু কাজ আমরা আগে থেকেই করতে পারি কোডে লগিং করার মাধ্যমে। লগ ফাইল হলো একটি ডায়েরির মতো, যেখানে প্রতিটি অ্যাপ্লিকেশনের কাজের বিস্তারিত রাখা হয়। লগ ফাইল এনালাইসিস করার মাধ্যমে আপনি সহজেই বুঝতে পারবেন, কোন ফাংশনে সমস্যা হচ্ছে।
- এরর লগঃ প্রতিটি অ্যাপ্লিকেশনের জন্য অবশ্যই একটি এরর লগ থাকা দরকার। এর মাধ্যমে সহজে বুঝা যায়, কোথায় সমস্যা হয়েছে।
- লগিং টুলসঃ বিভিন্ন টুলসের মাধ্যমে আমরা লগিং করতে পারি। উদাহরণস্বরূপ, নোড জেএস এর জন্য Pino একটি সুন্দর টুল। আরও টুলস সম্পর্কে জানতে পারেন এই লিঙ্ক থেকে।
- মনিটরিং টুলস: সার্ভার মনিটরিং এর জন্য New Relic একটি জনপ্রিয় টুল। এর মাধ্যমে আপনি রিয়েল টাইমে সার্ভার মনিটর করতে পারেন। বিস্তারিত জানতে এই লিঙ্কে ক্লিক করতে পারেন।
- ক্লাউড মনিটরিং: AWS CloudWatch ব্যবহার করে সার্ভার মনিটরিং সহজ ভাবে করা সম্ভব। এর মাধ্যমে CPU, মেমরি ইত্যাদি এবং স্টোরেজ এর বিস্তারিত তথ্য পাওয়া যায়। CloudWatch এর বিস্তারিত।
২. সার্ভারের ব্যাকআপ রাখা
একটি ভালো উপায় হলো সার্ভারের এবং ডাটাবেজের ব্যাকআপ রাখা। আপনি যদি শুধু একটি সার্ভারের উপর নির্ভরশীল হন, তাহলে সমস্যা হলে বড় ধরনের ক্ষতি হতে পারে। তাই, সার্ভার ও ডাটাবেজের ব্যাকআপ রাখা খুবই জরুরি।
৩. স্কেলিং করা
আপনার সার্ভার যদি অনেক ব্যবহারকারী থাকে বা অনেক লোড হ্যান্ডেল করতে ব্যর্থ হয়, তবে ডাউন হয়ে যেতে পারে। সার্ভার স্কেলিংয়ের মাধ্যমে এই সমস্যা সমাধান করা যায়।
- Horizontal Scaling: একাধিক সার্ভার যুক্ত করে লোড ভাগাভাগি করে রাখা।
- Vertical Scaling: একটায় সার্ভারের রিসোর্স (RAM, CPU ইত্যাদি) বাড়িয়ে তার সক্ষমতা বৃদ্ধি করা।
পরবর্তী পদক্ষেপঃ সার্ভার যদি ডাউন হয়েই যায় তখন কি করবেন
১. লগ এনালাইসিসঃ
যখনই সার্ভার ডাউন হয়, প্রথমেই লগ ফাইল চেক করা উচিত। লগ ফাইলের মাধ্যমে আপনি জানতে পারবেন কোথায় সমস্যা হচ্ছে, এবং সেই ফাইল চেইক করে সমাধানের জন্য দ্রুত পদক্ষেপ নিতে পারবেন।
২. API নাকি ডাটাবেজ কোথায় সমস্যা হচ্ছে তা খুঁজে বের করা
অনেক সময় সার্ভার ডাউন হলে কোনো নির্দিষ্ট API বা ডাটাবেজে সমস্যা হয়ে থাকে। তাই সার্ভারের সমস্ত API চেক করে দেখতে হবে, কোনটি সঠিকভাবে কাজ করছে না। যদি API ঠিক থাকে, তবে ডাটাবেজে কোনো ত্রুটি আছে কিনা সেটি যাচাই করতে হবে। উপড়ে বলেছি New Relic এর কথা এর মাধ্যমে কোন API বেশি টাইম নিচ্ছে বা কোন কুয়েরি বেশি সময় নিচ্ছে তা মনিটর করা যায়।
৩. সমস্যা সমাধানের পর পোস্টমর্টেম রিপোর্ট লেখা একটা ভাল অভ্যাস
যখন আপনি সমস্যার সমাধান করে ফেলবেন, তখন পুরো প্রক্রিয়া এবং সমাধানের বিস্তারিত নোট রাখা উচিত। এটি ভবিষ্যতে একই ধরনের সমস্যা হলে সাহায্য করবে। সমস্যা তো একবার হয়না মাঝে মধ্যেই হয় তাই টেক কোম্পানিতে এর ব্যবহার দেখা যায়। আমার নিজের অভিজ্ঞতা ও হয়েছে, একদম বিস্তারিত লিখতে হয় কখন কিভাবে কেন এই সার্ভার ডাউন হল, কোন টিম এর স্টেইকহোল্ডার আমরা আর কি কি করলে আরো দ্রুত এই সমস্যার সমাধান করতে পারতাম এসব আর কি। আপনারা চাইলে পরে আমি একটা টেম্পলেট শেয়ার করব ইনশাআল্লাহ।
৪. সার্ভারের ক্যাপাসিটি বাড়ানো যেতে পারে
সার্ভার যদি বারবার ডাউন হয়ে থাকে, তবে আপনার সার্ভারের ক্যাপাসিটি বাড়ানো যেতেপারে। সেই ক্ষেত্রে AWS EC2 এর মতো সার্ভিস ব্যবহার করে সার্ভারের স্কেলিং ব্যবস্থা করতে হবে।
সারমর্ম
- আগে থেকেই ভালো মনিটরিং এবং লগিং ব্যবস্থা রাখা
- প্রতিটি সমস্যার পোস্টমর্টেম রিপোর্ট তৈরি করা
- সার্ভারের রিসোর্স বা স্কেলিং সম্পর্কে সচেতন থাকা
- প্রয়োজনীয় টুলস এবং ক্লাউড মনিটরিং সার্ভিসগুলো ব্যবহার করা
উপসংহার
সার্ভার ডাউন হওয়া একটি সাধারণ ঘটনা হলেও, এটি দ্রুত সমাধান করার জন্য ইঞ্জিনিয়ারদের প্রস্তুত থাকা খুবই গুরুত্বপূর্ণ। সঠিক লগিং, মনিটরিং এবং স্কেলিংয়ের ব্যবস্থা থাকলে সহজেই এই ধরনের সমস্যা সমাধান করা সম্ভব।