কিভাবে একটা এপ্লিকেশন বানাই - ডেভ অপস ভূমিকা

cdcijenkinsmulti-pipeline

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


- সেপারেশন অফ কনসার্ন, মানে যে ব্যাকএন্ড নিয়েকাজ করে সে শুধু সেটা নিয়েই কাজ করবে, তাকে ফ্রন্টএন্ড নিয়েচিন্তা করতে হবে না 

- সহজেই ক্লায়েন্ট পরিবর্তন করা যায়, শুধু UI পরিবর্তন 

- ওয়েব, মোবাইল বা ডেস্কটপের জন্য একই বেকেন্ড কোড ব্যবহার করা যায় 

- স্কেল করা বেশ সহজ 



ধরি, স্প্রিং বুট দিয়ে সার্ভার সাইড এপ্লিকেশন আর এঙ্গুলার ব্যবহার করি কায়েন্ট সাইড কোডের জন্য। কোডতো কোথাও রাখতে হবে, তাই না? গিটহাব হলো সহজ সমাধান। এপ্লিকেশন বানানো শেষ, ব্যাকএন্ড এবং ফ্রন্টএন্ড নিজের মেশিনে ভালো কাজ করে। কোড গিটহাবে তুলে দিলাম দুটা আলাদা রিপোজিটরিতে। অনেকেই মনে করে কাজ শেষ। আসলে কাজের ৪০% হয়েছে মাত্র। 



ডকারাইজ না করলে একেক সার্ভারে একেক সমস্যা দেখা দেয়। তাই, একটা ডকার ফাইল লিখে ফেললাম। হয়ে গেলো কন্টেনারাইজ এপ। ডাটা জমা রাখার জন্য একটা সার্ভারে ডাটাবেজ সেটাপ দেয়া হলো। সমস্যা হলো কোড চেঞ্জ করলে তা কম্পাইল করে ডকরাইজ করে প্রথমে ডকার হাবে, তারপর টেস্ট করে সার্ভারে আপলোড দিব হবে। খুলে ফেললাম ডকার একাউন্ট। আর প্রতিবার নিজের হাতে এই কাজ করাও এক ঝামেলা। জেনকিন এই কাজটা করতে পারে। একটা সার্ভার নিয়ে জেনকিন সেটাপ দিলাম। এখন আবার পাইপলাইনের যুগ তাও মাল্টি পাইপলাইন। লিখে ফেললাম জেনকিন ফাইল। তারপর গিটহাবে কোড পুশ করলে জেনকিন যেন জানতে পারে, তাই সেট করলাম ওয়েব হুক। এখন একটা কোড পরিবর্তন করে গিটহাবে পুশ করলে যা হয় 


- গিটহাব জেনকিনকে একটা পোস্ট ইভেন্ট পাঠায় 

- জেনকিন গিটহাব থেকে কোড পুল করে 

- জাভা কোড ম্যাভেন দিয়ে কম্পাইল করে, বিল্ড করে 

- এঙ্গুলার হলে প্রোডাকশন বিল্ড হয় 

- টেস্ট রান করে 

- ডকার ইমেজ তৈরী করে 

- ডকার ইমেজটা ডকারহাবে পুশ করে 



তারপর সেখান থেকে সার্ভারে আরেকটা ইভেন্ট পাঠিয়ে এপ্লিকেশন আপডেট করা হবে। যদি আপনার এপ্লিকেশনকে সহজেই স্কেল আপ বা ডাউন করতে চান তাহলে কুবারনেটিস ভালো অপশন। ওকে, কুবারনেটিস এর জন্য যা যা করতে হবে 



- কুবারনেটিস ক্লাস্টার বানাতে হবে, ক্লাস্টার সার্ভিসের ইমেজ বা কন্টেইনার কোথা থেকে আনবে, কতগুলা কপি চালাবে এগুলা বলে দিতে হবে। 

- যদি একটা এপ্লিকেশন এর মাল্টিপল ইন্সটেন্স থাকে তাহলে একটা সার্ভিস বানাতে হবে, অনেকটা লোড ব্যালেনসার বা গেটওয়ের মতো। 

- তারপর জেনকিনকে বলতে হবে, যখন একটা নতুন ইমেজ বা কন্টেইনার আপলোড হবে ডকারহাবে, তখন সে যেন এই খবরটা কুবারকে দেয়, কুবার সেই খবর পেলে তার পুরান কন্টেইনারগুলাকে আস্তে আস্তে নতুনটাতে আপডেট করে ফেলবে।



এইযে ডকার, জেনকিন্স, কুবার্নেটিস ব্যবহার করলাম কোড সার্ভারে তুলতে এবং চালাতে এটাকেই বলে CI/CD আর পুরা কাজটা যে করে তাকে বলে ডেভ অপস। ডেভ অপস সিরিজে আপনাকে স্বাগতম।