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

১. সাধারণ প্রযুক্তি স্ট্যাক এবং সিস্টেম আর্কিটেকচার

প্ল্যাটফর্মটি উচ্চ থ্রুপুট, ন্যূনতম মেমরি খরচ এবং ব্যর্থতার বিরুদ্ধে সুরক্ষার নীতিগুলির উপর ভিত্তি করে তৈরি:

  • Telegram Bot Framework: সুরক্ষিত টোকেন ভ্যালিডেশন এবং কাস্টম মেসেজ লাইফসাইকেল ফিল্টার সহ Webhook মোডে কাজ করা Aiogram 3.13
  • ওয়েব গেটওয়ে এবং REST API: Uvicorn ASGI সার্ভারের উপর ভিত্তি করে FastAPI, যা অ্যাসিনক্রোনাস বাইনারি ফাইল স্ট্রিমিং (FileResponse) এবং BackgroundTasks এর মাধ্যমে ব্যাকগ্রাউন্ড ক্লিনিং সমর্থন করে।
  • কিউ ব্রোকার এবং ক্যাশ: Redis 7 (Celery টাস্ক ম্যানেজমেন্ট, রেস কন্ডিশন লক, ব্রুট ফোর্স সুরক্ষা, সেশন ক্যাশিং)।
  • ব্যাকগ্রাউন্ড এক্সিকিউটর (Task Queue): converter_worker এর বিচ্ছিন্ন পাত্রে নিবেদিত কর্মী পুল সহ Celery 5.4
  • ডাটাবেস: PostgreSQL 16, SQLAlchemy 2.0 (asyncpg) ORM লেয়ার, পার্মানেন্ট কানেকশন পুল (20+10 overflow) এবং ফেইলড ট্রানজাকশনের জন্য অটো-রিট্রাই (@db_retry)।
  • নেটওয়ার্ক সার্কিট: Middleware এর মাধ্যমে সার্ভারে সরাসরি IP অ্যাক্সেস ব্লক করে Cloudflare Zero Trust এর মাধ্যমে টানেলিং।

২. অ্যাসিনক্রোনাস কিউ এবং ভারী গণনার আইসোলেশন (Celery + Redis)

মিডিয়া ফাইল এবং অফিস প্যাকেজ রূপান্তর করার ফলে CPU এবং RAM-এ উচ্চ চাপ সৃষ্টি হয়। ভারী অপারেশনের সময় Telegram-এ ইনকামিং মেসেজ প্রসেসিং যাতে ব্লক না হয়, সেজন্য কঠোর আইসোলেশন প্রয়োগ করা হয়েছে:

  • Redis-এ কাজ অর্পণ: ফরম্যাট নির্বাচন করার সময়, Telegram হ্যান্ডলার ডাটাবেসে PROCESSING স্ট্যাটাস সহ টাস্ক রেজিস্টার করে এবং Celery-এর মাধ্যমে tasks.execute_conversion কিউতে কাজটি রাখে।
  • বিচ্ছিন্ন কর্মী পাত্র (Isolated worker container): রূপান্তর ইউটিলিটিগুলির execução নিজস্ব প্রসেসর সময় এবং মেমরি সীমা সহ একটি পৃথক Linux পাত্রে ঘটে।
  • হ্যাং কন্ট্রোল এবং টাইমআউট: বাহ্যিক ইউটিলিটি কলগুলি কঠোর সময় নিয়ন্ত্রণের সাথে একটি অ্যাসিনক্রোনাস কনটেক্সটে মোড়ানো হয় (conversion_timeout_sec = 180)। সীমা অতিক্রম করলে, প্রক্রিয়াটি জোরপূর্বক proc.kill() এর মাধ্যমে বন্ধ করা হয়, যা সম্পদগুলি মুক্ত করে।
  • ফল্ট-টলারেন্ট Fallback: Redis ব্রোকার সাময়িকভাবে অনুপলব্ধ হলে, টাস্কটি স্বয়ংক্রিয়ভাবে স্থানীয় অ্যাসিনক্রোনাস ডিসপ্যাচার দ্বারা আটকানো হয় এবং ব্যবহারকারীর কোনো ত্রুটি ছাড়াই সরাসরি সম্পাদিত হয়।

৩. বিশেষায়িত রূপান্তর ইঞ্জিন পাইপলাইন

প্রতিটি ডেটা টাইপের জন্য অত্যন্ত বিশেষায়িত নেটিভ ইউটিলিটি এবং লাইব্রেরি ব্যবহার করা হয়:

  • ডকুমেন্টস এবং স্প্রেডশিট (LibreOffice): DOCX, XLSX, PPTX, RTF, ODT নিখুঁতভাবে PDF বা টেক্সট ফাইলে রেন্ডার করার জন্য হেডলেস অফিস প্যাকেজ (soffice --headless)।
  • স্ট্রিমিং অডিও এবং ভিডিও (FFmpeg): মাল্টিথ্রেডেড ভিডিও কোডেক ট্রান্সকোডিং (H.264), অডিও কোডেক (MP3, OGG Opus), সাউন্ডট্র্যাক এক্সট্রাকশন, GIF জেনারেশন (Lanczos ফিল্টার) এবং Telegram ভিডিও বার্তার স্কয়ার ক্রপিং (1:1)।
  • হাই-স্পিড PDF প্রসেসিং (Poppler Utils): pdftotext (UTF-8 এ ফর্ম্যাট করা পাঠ্যের তাত্ক্ষণিক নিষ্কাশন) এবং pdftoppm (LibreOffice ওভারহেড ছাড়াই রাস্টার ইমেজে PDF এর পৃষ্ঠা-ভিত্তিক রেন্ডারিং) ইউটিলিটিগুলি।
  • অপটিক্যাল ক্যারেক্টার রিকগনিশন (Tesseract OCR): 40+ ভাষায় স্ক্যান এবং ছবি থেকে নিউরাল নেটওয়ার্ক প্রিন্টেড টেক্সট এক্সট্রাকশন।
  • রাস্টার এবং ভেক্টর গ্রাফিক্স: Pillow লাইব্রেরি (HEIC এবং AVIF ফরম্যাট সমর্থন সহ), ভেক্টর ইমেজের জন্য CairoSVG এবং অ্যানিমেটেড Telegram স্টিকারের (.TGS) জন্য lottie
  • বই, সাবটাইটেল এবং ফন্ট: Calibre ইঞ্জিন (ebook-convert), সাবটাইটেল পার্সার pysubs2 (SRT, VTT, ASS, SSA) এবং ফন্ট কম্পাইলার fonttools (WOFF2-এ Brotli কম্প্রেশন)।

৪. সিস্টেম গার্ড প্রিভেন্টিভ রিসোর্স প্রোটেকশন

মেমরির অভাবের কারণে সার্ভার ক্র্যাশ (OOM Killer) থেকে রক্ষা করতে, System Guard প্রিভেন্টিভ ডায়াগনস্টিক সার্ভিস প্রয়োগ করা হয়েছে। প্রক্রিয়াকরণের জন্য একটি ফাইল গ্রহণ করার আগে, সিস্টেম মূল হোস্ট মেট্রিক্সে পরীক্ষা করে:

  • ফ্রি RAM (RAM): ন্যূনতম 500 MB ফ্রি ভলিউম (guard_min_free_ram_mb)।
  • ডিস্ক স্পেস: /tmp ডিরেক্টরিতে ন্যূনতম 2 GB ফ্রি স্পেস (guard_min_free_disk_mb)।
  • টাস্ক কিউ: Celery কিউ দৈর্ঘ্যের সীমাবদ্ধতা (20টির বেশি অপেক্ষার টাস্ক নয়)।

সীমা অতিক্রম করলে, সার্ভিসটি সাময়িকভাবে সুরক্ষা সক্ষম করে (HTTP 503 / চ্যাটে বার্তা), সার্ভারের অতিরিক্ত বোঝা প্রতিরোধ করে এবং Telegram-এ প্রশাসকদের কাছে তাত্ক্ষণিক সতর্কতা পাঠায়।

৫. ফাইলের লাইফসাইকেল এবং সিকিউরিটি (GDPR)

আর্কটেকচারটি Zero-Data-Footprint মডেলে ডিজাইন করা হয়েছে:

  • ব্যবহারকারী ফাইলগুলি টাস্ক আইডেন্টিফায়ারের উপর ভিত্তি করে অনন্য প্রিফিক্স সহ একটি সুরক্ষিত tmp/conversions/ ভলিউমে আপলোড করা হয়।
  • ফাইলগুলি কঠোরভাবে কাজের সেশনের মধ্যে উপলব্ধ থাকে — 15 মিনিটের বেশি নয় (900 সেকেন্ড)।
  • স্বয়ংক্রিয় গারবেজ সংগ্রাহক চ্যাটে সফল ডেলিভারি নিশ্চিত করার পরপরই বা সেশন টাইমআউট শেষ হওয়ার সাথে সাথে আসল এবং প্রস্তুত ফাইলগুলি মুছে ফেলে।
  • PostgreSQL ডাটাবেস বাইনারি ফাইল বা ব্যক্তিগত নথির পাঠ্য সংরক্ষণ করে না — টেবিলে শুধুমাত্র বেনামী প্রযুক্তিগত মেটাডেটা রেকর্ড করা হয় (ফরম্যাট, বাইটে সাইজ, কাজের সময়, স্ট্যাটাস)।

৬. বাহ্যিক ওয়েব সার্ভিসের জন্য ইউনিভার্সাল REST API

সার্ভিসটি মূলত একটি মাল্টিপ্ল্যাটফর্ম ব্যাকএন্ড হিসেবে ডিজাইন করা হয়েছে। বটের পাশাপাশি, ওয়েবসাইটগুলির জন্য (যেমন Django-তে) এবং তৃতীয় পক্ষের বটগুলির জন্য একটি সম্পূর্ণ সুরক্ষিত প্রোগ্রামিং ইন্টারফেস কাজ করে:

  • GET /api/v1/formats — উপলব্ধ রূপান্তর দিকগুলির গতিশীল JSON ম্যাট্রিক্স, Google Sheets সেটিংসের সাথে সিঙ্ক্রোনাইজ করা।
  • POST /api/v1/convert — একটি ইউনিভার্সাল এন্ডপয়েন্ট যা multipart/form-data গ্রহণ করে (ফাইল, টার্গেট ফরম্যাট, বাহ্যিক ক্লায়েন্ট আইডি) এবং সরাসরি ডাউনলোড হিসাবে প্রস্তুত বাইট স্ট্রিম প্রদান করে।
  • secrets.compare_digest এর মাধ্যমে টাইম অ্যাটাক সুরক্ষা সহ Bearer টোকেন (WEBHOOK_REFRESH_TOKEN) এর মাধ্যমে অনুমোদন।

৭. কন্ট্রোল প্যানেল এবং Observability (NiceGUI + AG Grid)

ব্যবসায়িক সূচক এবং সিস্টেমের অবস্থা পর্যবেক্ষণ NiceGUI 2.x এর উপর ভিত্তি করে নেটিভ Single-Page কন্ট্রোল প্যানেলে আনা হয়েছে:

  • কাস্টম Excel-শৈলী চেকবক্স ফিল্টার (aggrid_filters.js) সহ ইন্টারেক্টিভ AG Grid (v32+) টেবিল।
  • রিয়েল টাইমে কিউ, API প্রদানকারীর বিলম্ব এবং PostgreSQL / Redis পিং মনিটরিং।
  • স্বাক্ষরিত JWT টোকেনের মাধ্যমে Metabase BI ড্যাশবোর্ডের বিহীন ইন্টিগ্রেশন সহ তারিখ অনুসারে এন্ড-টু-এন্ড ফিল্টারিং।