কীভাবে কুবারনেটসে স্কেলেবল সিমফনি অ্যাপ্লিকেশন তৈরি করবেন

আধুনিক ওয়েব অ্যাপ্লিকেশনগুলি জটিল। আপনার অ্যাপ্লিকেশন সম্পর্কে আপনার ব্যবহারকারীর প্রত্যাশা ক্রমাগত বৃদ্ধি পাচ্ছে: আজকাল, একটি অ্যাপ্লিকেশন অবশ্যই দ্রুত, সুবিধাজনক, ব্যবহারকারী-বান্ধব এবং আকর্ষক হতে হবে।

এই প্রয়োজনীয়তাগুলি পূরণ করা দুর্দান্ত পণ্য তৈরিতে অন্য অসুবিধা হতে পারে। এমনকি যদি আপনি একটি বাস্তব সমস্যা মোকাবেলা করেন তবে এ থেকে জীবিকা নির্বাহের জন্য আপনাকে এটি ঠিক পেতে হবে।

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

আধুনিক ওয়েব অ্যাপ্লিকেশন আর্কিটেকচার ওভারভিউ (জোনাথন ফুলটনের রচিত ওয়েব আর্কিটেকচার 101 থেকে)

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

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

কুবারনেটস: একটি ডকার ধারক অর্কেস্ট্রেটার

কয়েক বছর আগে বিকাশকারীদের সহজেই আগেরগুলির মতো অবকাঠামো তৈরি করতে দেয়ায় ডকার প্রকল্প চালু হয়েছিল। কয়েকটি লাইনের কনফিগারেশনের সাহায্যে ডকার ব্যবহার করে যে কোনও বিকাশকারী প্রতিটি পরিষেবা সেট আপ করার জটিলতা বিমূর্ত করে আন্তঃসংযুক্ত পাত্রে একটি নেটওয়ার্ক তৈরি করতে পারে।

অবকাঠামোগত সম্পর্কে অনেক বিকাশকারীরা যেভাবে ভাবেন সেভাবেই এই প্রকল্পটি বিপ্লব ঘটিয়েছিল। ডিভাইস শব্দটি এই দিনগুলিতে প্রায়শই ব্যবহৃত হয়, যারা উপযুক্ত অবকাঠামো মাথায় রেখে অ্যাপ্লিকেশন বিকাশ করতে সক্ষম তাদের উল্লেখ করে।

কুবেরনেটস যৌক্তিক পদক্ষেপ: ডকার পাত্রে একটি উত্পাদন প্রস্তুত পরিবেশ তৈরি করা হয় যা সুরক্ষা, নির্ভরযোগ্যতা এবং স্কেলিবিলিটি সরবরাহ করে। ডকার এবং কুবারনেটস ব্যবহার করে আপনি সহজেই এমন অ্যাপ্লিকেশনগুলি তৈরি করতে পারেন যা দুর্দান্ত পণ্যগুলি আরও দ্রুত তৈরি করতে জেনেরিক পরিষেবার পুরো সেটটির সুবিধা নেয়।

এই নিবন্ধে, আমি উদাহরণ দেওয়ার জন্য গুগল ক্লাউড প্ল্যাটফর্মের (জিসিপি) কুবারনেটসের উপর আরও বিশদে ফোকাস করব। তবে এটি যে কোনও মেঘ সরবরাহকারীকে প্রয়োগ করা যেতে পারে।

কুবেরনেটসে সিমফনি ব্যবহার করা

বিকাশের আগে আপনার অ্যাপ্লিকেশনটিকে আপনার অবকাঠামোর সাথে সংহত করার বিষয়ে চিন্তা করা সর্বদা দরকারী। আপনার ব্যবসায়ের প্রয়োজনের উপর ভিত্তি করে, আপনি নির্ধারণ করতে পারেন আপনার কোন পরিষেবাগুলি প্রয়োজন এবং আপনি কীভাবে আপনার অ্যাপ্লিকেশন থেকে তাদের সাথে ইন্টারঅ্যাক্ট করতে পারেন।

কোনও অ্যাপ্লিকেশন তৈরি করার সময় বিবেচনা করা সবচেয়ে গুরুত্বপূর্ণ উপাদানগুলির মধ্যে একটি হল স্কেলেবিলিটি।

"একটি অ্যাপ্লিকেশন স্কেলিং" এর অর্থ হ'ল আরও অনুরোধগুলি পরিচালনা করতে অ্যাপ্লিকেশন কোডের উত্পাদন উদাহরণগুলির সংখ্যা বাড়ানো। একটি "স্কেলেবল অ্যাপ্লিকেশন" তৈরি করার জন্য, সুতরাং আপনার সর্বদা একটি একক ধারণা মাথায় রাখা উচিত: কোড ধারকটিতে আপনার আবেদনের স্থিতি সংরক্ষণ করবেন না। যদি আপনার কোড ধারকটির একটি রাজ্য থাকে তবে স্কেলিংয়ের সময় সেই রাজ্যটি নকল হয়, যা আপনার অ্যাপ্লিকেশনটিকে ক্ষতিগ্রস্থ করতে পারে এমন ধারাবাহিকতা সমস্যা তৈরি করে।

আমি যেমন সিমফোনির সাথে দ্রুত পরীক্ষার স্যুট তৈরির বিষয়ে আমার নিবন্ধে ব্যাখ্যা করেছি, সেখানে দুটি প্রধান ক্ষেত্র রয়েছে যেখানে আমাদের আবেদনের রাজ্য থাকে: ডাটাবেস এবং ফাইল সিস্টেম।

পরিচালিত ফাইল স্টোরেজে আপনার অ্যাপ্লিকেশন ফাইলগুলি সঞ্চয় করতে ফ্লাইসিস্টেম ব্যবহার করুন

খুব সুন্দর যে সমস্ত ক্লাউড সরবরাহকারীদের বাহ্যিকভাবে ফাইলের মতো উপাদানগুলি সংরক্ষণের কমপক্ষে একটি উপায় রয়েছে (জিসিপিতে গুগল ক্লাউড স্টোরেজ রয়েছে)। আপনার অ্যাপ্লিকেশন ফাইলগুলি সংরক্ষণ করার জন্য তাদের উপর নির্ভর করতে দ্বিধা করবেন না: এগুলি সীমাহীনভাবে প্রসারণযোগ্য, একটি কনফিগার করতে সহজ সিডিএন সরবরাহ করে এবং দ্রুত এবং নির্ভরযোগ্য।

আমি সাধারণত উক্ত পরিষেবাগুলিতে অ্যাক্সেস করতে এবং যোগাযোগের জন্য ফ্লাইসিস্টেম ব্যবহার করি। ফ্লাইসিস্টেম একটি লাইব্রেরি যা ফাইল সিস্টেমের জন্য একটি বিমূর্ততা সরবরাহ করে। ফ্লাইসিস্টেম কেবল আপনাকে আরও ভাল টেস্ট স্যুট তৈরি করতে সহায়তা করে না, এটি অনেক সরবরাহকারীর সাথেও সামঞ্জস্যপূর্ণ, যা প্রায় অবশ্যই আপনার মেঘ সরবরাহকারীকে অন্তর্ভুক্ত করে।

আমি গুগল ক্লাউড স্টোরেজটির জন্য ব্যক্তিগতভাবে https://github.com/Superbalist/flys systemm-google-cloud- স্টোরেজ ব্যবহার করি।

সরবরাহিত এসকিউএল পরিষেবাটি ব্যবহার করার জন্য মতবাদ কনফিগার করুন

বেশিরভাগ মেঘ সরবরাহকারী আপনার নিজের পরিচালিত এসকিউএল পরিষেবাতে নির্ভর করার বিকল্পও আপনাকে সরবরাহ করে। জিসিপিতে গুগল ক্লাউড এসকিউএল পরিষেবা রয়েছে যা মাইএসকিউএল এবং পোস্টগ্রিসকিউএল সমর্থন করে।

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

আপনার ক্যাশে এবং আপনার সেশনের জন্য রেডিস ব্যবহার করুন

আপনার অ্যাপ্লিকেশন ক্যাশে এবং সেশনগুলি প্রকল্পের স্থিতির অংশ। সমস্যাগুলি এড়াতে তাদের আপনার দৃষ্টান্তগুলির মধ্যে ভাগ করে নেওয়া দরকার।

রেডিস এই ব্যবহারের ক্ষেত্রে উপযুক্ত: স্টোরেজ কী মানের দোকান হিসাবে এটি অত্যন্ত দ্রুত এবং সমান্তরালে কয়েক হাজার সংযোগের প্রক্রিয়া করতে পারে। এটি সম্ভবত আপনার আবেদনের বাধা হয়ে দাঁড়াবে না।

ভাগ্যক্রমে, সিমফনি সহজাতভাবে ডিজাইন করা হয়েছে যাতে রেডিস একটি সেশন হ্যান্ডলার এবং ক্যাশে ব্যাকএন্ড হিসাবে কনফিগার করা যায়:

  • এটি একটি সেশন হ্যান্ডলার হিসাবে কনফিগার করতে, আমি ব্যক্তিগতভাবে https://github.com/snc/SncRedisBundle ব্যবহার করি
  • এটিকে ক্যাশে ব্যাকএন্ড হিসাবে কনফিগার করতে কয়েকটি কনফিগারেশন লাইন যথেষ্ট:
ফ্রেম: ক্যাশে: অ্যাপ: cache.adapter.redis default_redis_provider: "redis: // লোকালহোস্ট"

আপনার লগগুলির জন্য একটি ভাগ করা অবস্থান ব্যবহার করুন

যদিও আপনার অ্যাপ্লিকেশন লগগুলি প্রযুক্তিগতভাবে আপনার রাজ্যের সাথে সম্পর্কিত নয়, সমস্যা সমাধানের জন্য এগুলি প্রচুর বিভিন্ন ধারকগুলিতে প্রেরণ করা দুঃস্বপ্ন। পাত্রে না রেখে এগুলিকে এক জায়গায় রাখা সাধারণত ভাল ধারণা।

মনোলোলে অনেকগুলি হ্যান্ডলার পাওয়া যায় যা এই স্তরে সহায়তা করতে পারে: ইলাস্টিকসন্ধান, মঙ্গোডিবি, ... তবে, আমি পছন্দ করি সেন্ট্রি: এটি একটি খুব দরকারী পরিষেবা যা স্বয়ংক্রিয়ভাবে আপনার সমস্যার উপর খুব বিস্তারিত প্রতিবেদন তৈরি করে। আমি এই সম্পর্কে এবং কীভাবে এটি ভবিষ্যতের নিবন্ধে সিমফোনিতে ব্যবহার করব সে সম্পর্কে আরও কিছু কথা বলব :)।

কুবেরনেটে আপনার অ্যাপ্লিকেশনটি কনফিগার করতে পরিবেশ পরিবর্তনশীলগুলি ব্যবহার করুন Use

একটি শর্ত রয়েছে যা আমরা সহজেই ভুলে যেতে পারি: আইডি এবং গোপনীয়তা। যদিও রানটাইমগুলিতে সেগুলি পরিবর্তন হয় না, সুরক্ষার কারণে তারা আপনার কোড ধারকটিতেও সংরক্ষণ করা উচিত নয়।

ভাগ্যক্রমে, কুবারনেটসের সাথে আরও ভাল ফলাফল পাওয়া সম্ভব। আসলে, দুটি উপায় আপনি আরও ভাল করতে পারেন:

  • আপনি হয় মানগুলি সরাসরি আপনার পাত্রে রাখার জন্য এবং সিমফনি এনভায়রনমেন্ট ভেরিয়েবলের সক্ষমতা ব্যবহার করার জন্য কুবেরনেটস এনভায়রনমেন্ট ভেরিয়েবলের উপর নির্ভর করতে পারেন।
  • অথবা আপনি কুবেরনেটসের ডেডিকেটেড সিক্রেট ম্যানেজমেন্ট সিস্টেম ব্যবহার করতে পারেন যা আপনাকে আপনার পাত্রে ফাইল হিসাবে গোপনীয়তাগুলি সংরক্ষণ, পরিচালনা এবং ভাগ করে নিতে দেয়। এটি পরিবেশগত ভেরিয়েবল প্রসেসরের (এনভিভি (ফাইল: আপনার_সেক্রেট_ফাইল)) সহ সিমফনি দ্বারা সমর্থিত।

কোনও প্রয়োগের স্থিতিটিকে তার কোড থেকে দূরে রাখার এই ধারণাটি আদর্শ হয়ে ওঠে। এখানে তালিকাভুক্ত ধারণাগুলি আইসবার্গের কেবলমাত্র টিপ: আরও শিখতে বারোটি ফ্যাক্টর অ্যাপ এবং পুনরুত্পাদনযোগ্য বিল্ডগুলি দেখুন।

আপনি এই নিবন্ধে যুক্ত করতে চান এমন আরও কিছু আছে? কোনও মন্তব্য দিতে দ্বিধা করবেন না!