DHH নতুন একটি টার্ম কয়েন করেছেন "Citadel" (সিটাডেল), যা শেষ পর্যন্ত আমাদের অ্যাপসিগনেলে টেক পদ্ধতির জন্য একটি চমৎকার রেফারেন্স দিয়েছে। আমরা বললাম, "হে, এটি আমরা! আমাদের জিনিসের এখন একটি নাম আছে"।
In addition to the Majestic Monolith, someone should write up the pattern of The Citadel: A single Majestic Monolith captures the majority mass of the app, with a few auxiliary outpost apps for highly specialized and divergent needs.
— DHH (@dhh) April 7, 2020
অ্যাপসিগনেল কীভাবে সিটাডেল প্যাটার্ন ব্যবহার করে সেটি ব্যাখ্যা করতে, আমরা আমাদের সিস্টেম কীভাবে কাজ করে সেটি সম্পর্কে কিছু শেয়ার করব। অ্যাপসিগনেল একটি মনিটরিং প্রোডাক্ট যেটির একটি ইউজার-ফেসিং অ্যাপ্লিকেশন এবং একটি API আছে যা মনিটরিং এজেন্ট ডেটা পাঠায়। এই ডেটা প্রসেস হয়ে গ্রাফ এবং ইনসাইটে পরিণত হয়।
মনোলিথ
আমাদের কাস্টমাররা যেটি ইন্টারঅ্যাক্ট করে সেটি একটি মনোলিথিক রেলস অ্যাপ, ফ্রন্ট-এন্ডের কিছু অংশ রিয়্যাক্টে লেখা। ব্যাকএন্ড সম্পূর্ণ রুবিতে লেখা এবং কিছু ডেটাবেসের সাথে কথা বলে (আমরা ভিন্ন কাস্টমারদের ডেটা আলাদা ক্লাস্টারে আলাদা করেছি স্কেলিং কারণের জন্য)। এই রেলস অ্যাপ আরও অনেক টাস্ক হ্যান্ডেল করে যেমন এক্সটার্নাল সার্ভিসে অ্যালার্ট পাঠানো।
যখন আমরা এই রেলস অ্যাপ শুরু করলাম, এটা আমাদের মনিটরিং এজেন্ট থেকে ইনকামিং ডেটা প্রসেস করতও, আমরা পূর্বাভাস দিয়েছিলাম ডেটা ইনজেশন একটি বটলनेक বনে যাবে। তাই আমরা একটি সিনাট্রা অ্যাপ ব্যবহার করলাম একটি সাবডোমেনে যা ডেটা ইনজেস্ট করত এবং সাইডকিউই জব তৈরি করত যা রেলস অ্যাপ দ্বারা প্রসেস হত।
বৃদ্ধির ব্যথা
এই আর্কিটেকচার বছর ধরে ভালো কাজ করল। আমাদের বিজনেস বৃদ্ধি পেলে, স্পষ্ট হয়ে গেল যে এজেন্ট থেকে ইনকামিং ডেটা প্রসেস করার নির্দিষ্ট টাস্কটিকে স্পেশ্যাল ট্রিটমেন্ট দরকার। যখন আপনি বিলিয়ন বিলিয়ন রিকোয়েস্ট মনিটর করেন, আপনি হার্ড লিমিটে ধাক্কা খাবেন। প্রধান লিমিটিং ফ্যাক্টর ততটুকু নয় যে রুবি স্লো (আমরা সবাই জানি সেটি স্লো নয় 😉), বরং আমরা কীভাবে আর্কিটেকচার করেছি সেটি menyebabkan করলো আমাদের ডেটাবেসে খুব বেশি লকিং।
একটি আউটপোস্ট
আমরা কয়েক সম্ভাবনা দেখলাম এবং সিদ্ধান্ত নিলাম কাফকা আমাদের পরিস্থিতির জন্য সেরা ফিট। আমাদের রাস্টের সাথে কিছু অভিজ্ঞতা ছিল এবং আমরা মনে করলাম এর স্পিড এবং রিলায়েবিলিটি এই সিস্টেমের জন্য খুব ভালো ফিট হবে। আমরা আমাদের ডেটা ইনজেশন এবং প্রসেসিং সিস্টেম রাস্টে রি-রাইট করলাম, কাফকা ব্যবহার করে কিউ এবং স্টোরেজ সিস্টেমের কম্বিনেশন হিসেবে।
আমরা শুধু রেলস অ্যাপের ইনকামিং ডেটা প্রসেসিং অংশটিকে এই আউটপোস্ট সার্ভিসে সরিয়েছি। বাকি সিস্টেম মনোলিথিক অ্যাপের রূপে ভালো কাজ করছে। আমরা এটা গভীরে বুঝি, এবং আমরা জিনিসগুলো সিম্পল রাখতে পছন্দ করি। মনোলিথ এখনও অধিকাংশ লজিক হ্যান্ডেল করে এবং কাফকার সাথে ভায়ই ইন্টারঅ্যাক্ট করে। আমাদের মনোলিথ রাখার ইচ্ছা আমাদের কাফকা জেম লিখতে bøde করল, যাতে মেন অ্যাপ আউটপোস্টের সাথে সহজে কমিউনিকেশন করতে পারে।
আপনি যদি কাফকা কীভাবে অ্যাপসিগনেলে কাজ করে সেটি সম্পর্কে আরও জানতে চান, রেলসকনফ টক চেক করুন যা আমি দিয়েছিলাম।
সিটাডেলে জীবন
এটি আমাদের বর্তমান পরিস্থিতিতে নিয়ে এসেছে যেখানে আমরা আমাদের সিটাডেলে খুব খুশি। যেমন DHH বললেন:
A single Majestic Monolith captures the majority mass of the app with a few auxiliary outpost apps for highly specialized and divergent needs.
আমাদের কেসে, আমাদের একটি সিঙ্গেল আউটপোস্ট সার্ভিস আছে আমাদের হাইলি স্পেশ্যালাইজড ニーズের জন্য। যদি এবছর রেলসকনফ হত, আমরা DHHকে কিছু এক্সট্রা স্ট্রুপওয়াফেল দিতাম এপ্রিসিয়েশন হিসেবে এর নাম দেওয়ার জন্য। 🍪