হটফিক্স (hotfix) হলো প্রোডাকশনে একটি জটিল বাগের জরুরি সংশোধন, যা সাধারণ রিলিজ চক্রের বাইরে সম্পাদিত হয়। পরিকল্পিত রিলিজের বিপরীতে, hotfix QA এবং পরীক্ষণের কিছু ধাপ এড়িয়ে যায় যাতে ব্যবহারকারীদের কাছে সবচেয়ে কম সময়ে সংশোধন পৌঁছে দেওয়া যায়। Atlassian Git ওয়ার্কফ্লো গাইড অনুসারে, hotfix শাখা সর্বশেষ রিলিজ ট্যাগ থেকে তৈরি করা হয় এবং প্রয়োগের পরে main এবং develop-এ ফিরে মার্জ করা হয়। Hotfix প্রক্রিয়া ন্যূনতম পরীক্ষার একটি সেট অন্তর্ভুক্ত করে যা নিশ্চিত করার জন্য যথেষ্ট যে কোনো রিগ্রেশন নেই।
মূল পয়েন্ট
হটফিক্স (দ্রুত সংশোধন) হলো অ্যাপ্লিকেশনের প্রোডাকশন সংস্করণের জন্য একটি প্যাচ যা একটি জটিল সমস্যা সমাধানের জন্য সারির বাইরে প্রকাশিত হয়। হটফিক্স ব্যবহারকারীদের কাছে দিনে নয়, ঘন্টায় পৌঁছে দেওয়া হয় এবং এটি শুধুমাত্র সেই পরিস্থিতির জন্য যেখানে অ্যাপ্লিকেশন অনুপলব্ধ, ডেটা হারাচ্ছে বা ব্যবহারকারীর নিরাপত্তার সাথে আপস করছে।
হটফিক্সের জন্য সাধারণ পরিস্থিতি: নির্দিষ্ট ডিভাইসে স্টার্টআপে ক্র্যাশ (সর্বশেষ রিলিজের পরে রিগ্রেশন), ভুল অনুমোদনের কারণে ব্যক্তিগত ডেটা ফাঁস, ভাঙ্গা পেমেন্ট ইন্টিগ্রেশন (রাজস্ব ক্ষতি), GDPR/CCPA সম্মতি লঙ্ঘন। এই সমস্ত পরিস্থিতির ঘটনা শ্রেণীবিভাগে গুরুতরতা P0 বা P1 রয়েছে। পরিকল্পিত কাজ — অপ্টিমাইজেশন, রিফ্যাক্টরিং, নতুন স্ক্রিন — কখনই hotfix-এর মাধ্যমে করা হয় না।
একটি গুরুত্বপূর্ণ নিয়ম: হটফিক্সে ন্যূনতম সংখ্যক পরিবর্তন থাকে (1–2 ফাইল, 10–20 লাইন কোড)। ডিফ যত ছোট হবে, নতুন বাগ প্রবর্তনের ঝুঁকি তত কম। যদি সমস্যা সমাধানের জন্য আর্কিটেকচার পরিবর্তন বা নতুন মডিউল যোগ করার প্রয়োজন হয় — এটি hotfix নয়, বরং একটি জরুরি রিলিজ যার জন্য সম্পূর্ণ কোড রিভিউ এবং QA প্রয়োজন।
হটফিক্স এবং পরিকল্পিত রিলিজের মধ্যে প্রধান পার্থক্য হলো গতি, পরিবর্তনের পরিধি এবং পরীক্ষণের স্তর। একটি পরিকল্পিত রিলিজে ডজনখানেক বৈশিষ্ট্য অন্তর্ভুক্ত থাকতে পারে, সম্পূর্ণ QA চক্র (রিগ্রেশন + ইন্টিগ্রেশন + UI পরীক্ষা) দিয়ে যায় এবং কোড ফ্রিজ থেকে স্থাপনা পর্যন্ত 1–2 সপ্তাহ সময় নিতে পারে। হটফিক্স এক বা দুটি সংশোধন অন্তর্ভুক্ত করে, ত্বরান্বিত রিভিউ (3-এর পরিবর্তে 2 অনুমোদন) এবং ন্যূনতম স্মোক টেস্টের মাধ্যমে যায়।
Git প্রক্রিয়ার দৃষ্টিকোণ থেকে, হটফিক্স একটি রিলিজ ট্যাগ থেকে তৈরি করা হয়, develop শাখা থেকে নয়। এটি নিশ্চিত করে যে শুধুমাত্র সমস্যা সমাধানের জন্য প্রয়োজনীয় পরিবর্তনগুলি hotfix-এ অন্তর্ভুক্ত করা হয়েছে, develop থেকে অসমাপ্ত বৈশিষ্ট্যগুলি দুর্ঘটনাক্রমে টেনে আনা ছাড়াই। স্থাপনার পরে, হটফিক্স main এবং develop-এ ফিরে মার্জ করা হয় (cherry-pick বা merge-এর মাধ্যমে)।
| মানদণ্ড | পরিকল্পিত রিলিজ | হটফিক্স |
|---|---|---|
| পরিধি | একাধিক বৈশিষ্ট্য এবং বাগ ফিক্স | 1–2 জটিল সংশোধন |
| শাখা | develop থেকে রিলিজ শাখা | রিলিজ ট্যাগ থেকে হটফিক্স শাখা |
| কোড রিভিউ | 3 অনুমোদন, সম্পূর্ণ প্রক্রিয়া | 2 অনুমোদন, ফাস্ট-ট্র্যাক |
| QA | সম্পূর্ণ রিগ্রেশন স্যুট | স্মোক টেস্ট + প্রভাবিত এলাকা |
| স্থাপনার সময় | 1–4 সপ্তাহ | 1–24 ঘন্টা |
| রোলব্যাক | রিভার্ট কমিটের মাধ্যমে | পূর্ববর্তী ট্যাগ পুনর্নির্মাণের মাধ্যমে |
গুরুত্বপূর্ণ: প্রতিটি জরুরি কাজ hotfix নয়। যদি একজন ম্যানেজার বলেন “আমাদের জরুরিভাবে একটি বাটন যোগ করতে হবে” — এটি hotfix নয়, এটি অগ্রাধিকার পরিবর্তন। একটি প্রকৃত hotfix ব্যবহারকারীর জন্য গুরুতরতা দ্বারা নির্ধারিত হয়, ব্যবসার জরুরিতা দ্বারা নয়। মানদণ্ড: যদি অ্যাপ্লিকেশন ক্র্যাশ না হয় এবং ডেটা ফাঁস না হয় — কাজটি পরিকল্পিত রিলিজের জন্য অপেক্ষা করে।
একটি জটিল সমস্যা আবিষ্কারের প্রথম ধাপ হলো ট্রায়েজ — গুরুতরতার দ্রুত মূল্যায়ন। অন-কল ইঞ্জিনিয়ার বাগটি নিশ্চিত করে, লগ এবং ক্র্যাশ রিপোর্ট পরীক্ষা করে এবং নির্ধারণ করে যে সমস্যাটি সর্বশেষ রিলিজের রিগ্রেশন নাকি দীর্ঘস্থায়ী বাগ। যদি গুরুতরতা P0 হয় — hotfix পাইপলাইন চালু করা হয়। ট্রায়েজ ধাপ 15 মিনিটের বেশি সময় নেওয়া উচিত নয়।
দ্বিতীয় ধাপ — সর্বশেষ রিলিজ ট্যাগ (v2.5.0 → hotfix/v2.5.1) থেকে একটি শাখা তৈরি করা। ডেভেলপার ন্যূনতম সংশোধন করে, বার্তায় HOTFIX উপসর্গ সহ কমিট করে, পুশ করে এবং [HOTFIX] লেবেল সহ PR খোলে। ফাস্ট-ট্র্যাক কোড রিভিউ: CODEOWNERS-এর মাধ্যমে দুটি রিভিউয়ার স্বয়ংক্রিয়ভাবে নিযুক্ত করা হয়, রিভিউ সময় 30 মিনিটের বেশি নয়। 20 মিনিটের মধ্যে কোনো রিভিউ না হলে — রিভিউয়ারকে এড়িয়ে যাওয়া হয় এবং পরবর্তীটি নিযুক্ত করা হয়।
তৃতীয় ধাপ — CI/CD-এর মাধ্যমে বিল্ড এবং স্থাপনা। হটফিক্স পাইপলাইন সাধারণ থেকে ভিন্ন: দীর্ঘ ইন্টিগ্রেশন টেস্ট (যাতে ঘন্টা সময় লাগে) এড়িয়ে যাওয়া হয়, শুধুমাত্র স্মোক স্যুট চলে (10–15 জটিল পরিস্থিতি, 5–10 মিনিট)। স্থাপনার পরে: ক্র্যাশ রেট, ত্রুটি হার, API লেটেন্সি — 30 মিনিট ধরে পর্যবেক্ষণ। হটফিক্সের জন্য DORA মেট্রিক্স: পুনরুদ্ধারের গড় সময় (MTTR) 1 ঘন্টার কম হওয়া উচিত।
# .github/workflows/hotfix-deploy.yml
name: Hotfix Deploy Pipeline
on:
pull_request:
types: [labeled]
branches: [hotfix/*]
jobs:
hotfix-checks:
runs-on: ubuntu-latest
if: contains(github.event.label.name, 'hotfix-critical')
steps:
- uses: actions/checkout@v4
- name: Validate diff size
run: bash .github/scripts/diff-check.sh 30
- name: Build
run: ./gradlew assembleRelease
- name: Smoke test
run: ./gradlew smokeTest
- name: Deploy to staging
run: fastlane deploy_staging
- name: Approve & deploy to production
if: success()
run: fastlane deploy_production
env:
HOTFIX_MODE: true
এই পাইপলাইনের মূল অপ্টিমাইজেশন: ডিফ চেক (30 লাইনের বেশি নয়), ইন্টিগ্রেশন টেস্ট এড়িয়ে যাওয়া, স্মোক টেস্ট সফল হলে স্টেজিং এবং প্রোডাকশনে স্বয়ংক্রিয় স্থাপনা। HOTFIX_MODE পরিবেশ পরিবর্তনশীল রানটাইমে অতিরিক্ত চেক সক্ষম করে — উদাহরণস্বরূপ, দ্রুত সমস্যা নির্ণয়ের জন্য বর্ধিত লগিং।
হটফিক্স শাখাগুলির সাথে কাজ করার কৌশল Gitflow Workflow-এ বর্ণিত হয়েছে। মূল নিয়ম: হটফিক্স শাখা সর্বশেষ রিলিজ ট্যাগ (git checkout -b hotfix/v2.5.1 tags/v2.5.0) থেকে তৈরি করা হয়, develop বা main থেকে নয়। এটি নিশ্চিত করে যে hotfix বর্তমানে প্রোডাকশনে থাকা একই কোড অবস্থার উপর ভিত্তি করে এবং develop থেকে অসমাপ্ত পরিবর্তনগুলি টেনে আনে না।
সংশোধন সম্পন্ন হওয়ার পরে, হটফিক্স শাখাটি main (বা master) এবং develop-এ মার্জ করা হয়। main-এ — নতুন প্যাচ রিলিজ ট্যাগ (v2.5.1) সহ একটি সাধারণ মার্জ কমিট। develop-এ — টিম নীতির উপর নির্ভর করে মার্জ বা cherry-pick। যদি develop-এ main-এর চেয়ে বেশি পরিবর্তন থাকে, তাহলে দ্বন্দ্ব এড়াতে নির্দিষ্ট হটফিক্স কমিটের cherry-pick করার পরামর্শ দেওয়া হয়। GitFlow প্রথমে hotfix main-এ মার্জ করার এবং তারপর main develop-এ মার্জ করার পরামর্শ দেয়।
# সর্বশেষ রিলিজ ট্যাগ থেকে হটফিক্স শাখা তৈরি করুন
git checkout -b hotfix/v2.5.1 tags/v2.5.0
# সমাধান প্রয়োগ করুন
git commit -m "HOTFIX: Fix crash on Android 14 notification permission"
# main-এ মার্জ করুন এবং রিলিজ ট্যাগ করুন
git checkout main
git merge --no-ff hotfix/v2.5.1
git tag -a v2.5.1 -m "Hotfix release v2.5.1"
# develop-এও মার্জ করুন
git checkout develop
git merge --no-ff hotfix/v2.5.1
# অস্থায়ী শাখা পরিষ্কার করুন
git branch -d hotfix/v2.5.1
গুরুত্বপূর্ণ: যদি হটফিক্স বর্তমান develop শাখায় বিদ্যমান একটি বাগ সংশোধন করে (বাগটি কয়েকটি স্প্রিন্ট আগে প্রবর্তিত হয়েছিল), তাহলে hotfix main এবং develop-এ মার্জ করার পরে, develop-এ ইতিমধ্যে সংশোধন রয়েছে। যদি বাগটি শুধুমাত্র রিলিজ শাখায় প্রবর্তিত হয়েছিল (cherry-pick-এর মাধ্যমে ত্রুটি জমা হয়েছে), তাহলে develop-এ সংশোধনের প্রয়োজন নাও হতে পারে। মূল কারণ বিশ্লেষণ develop-এ cherry-pick প্রয়োজন কিনা তা নির্ধারণ করতে সাহায্য করে।
হটফিক্সের প্রধান ঝুঁকি হলো তাড়াহুড়োর কারণে একটি নতুন, আরও গুরুতর বাগ প্রবর্তন করা। Stripe (2021) এর একটি গবেষণা অনুসারে, 15% হটফিক্স রিগ্রেশন সৃষ্টি করে এবং দ্বিতীয় হটফিক্সের প্রয়োজন হয়। এটি বিড়ম্বনার নিয়ম: আমরা যত দ্রুত সংশোধন করি, ভুল করার সম্ভাবনা তত বেশি। ঝুঁকি হ্রাস ডিফ আকারের কঠোর সীমাবদ্ধতা (30 লাইনের বেশি নয়) এবং বাধ্যতামূলক স্বয়ংক্রিয় স্মোক টেস্টের মাধ্যমে অর্জিত হয়।
দ্বিতীয় ঝুঁকি — প্রযুক্তিগত ঋণ সঞ্চয়। যদি একটি টিম নিয়মিতভাবে পরিকল্পিত রিলিজের পরিবর্তে hotfix ব্যবহার করে, কোডবেস ক্ষয়প্রাপ্ত হয়: hotfix কমিটগুলি রিফ্যাক্টরিংয়ের মধ্য দিয়ে যায় না, অস্থায়ী সমাধানগুলি যথাযথ সমাধান দ্বারা প্রতিস্থাপিত হয় না, ডকুমেন্টেশন আপডেট হয় না। স্বাস্থ্য পরীক্ষা: যদি hotfix মাসে একবারের বেশি প্রকাশিত হয় — রিলিজ প্রক্রিয়াটি পর্যালোচনা প্রয়োজন।
তৃতীয় ঝুঁকি — মনস্তাত্ত্বিক। নিয়মিত হটফিক্স টিমকে ক্লান্ত করে: অন-কল ডেভেলপাররা ধ্রুবক চাপে থাকে, কোড রিভিউ একটি আনুষ্ঠানিকতায় পরিণত হয় (সবাই দ্রুত হতে চায়), এবং মানের সংস্কৃতি হ্রাস পায়। একটি পরিণত টিমের জন্য সাধারণ হটফিক্স ফ্রিকোয়েন্সি হলো প্রতি ত্রৈমাসিকে 1–2। যদি বেশি হয় — সমস্যা hotfix-এ নয়, বরং পরিকল্পিত রিলিজের মানের মধ্যে।
হটফিক্স স্থাপন এবং মেট্রিক্স স্থিতিশীল করার পরে, একটি দোষহীন পোস্ট-মর্টেম রেট্রোস্পেকটিভ পরিচালিত হয়। টিম চারটি প্রশ্নের উত্তর দেয়: কী হয়েছিল, কেন পরীক্ষাগুলি বাগটি ধরতে পারেনি, এটি সংশোধন করতে কী করা হয়েছিল এবং পুনরাবৃত্তি কীভাবে প্রতিরোধ করা যায়। পোস্ট-মর্টেম hotfix-এর 24–48 ঘন্টার মধ্যে পরিচালিত হয়, যখন বিবরণ এখনও তাজা থাকে। দোষহীন সংস্কৃতি একটি মূল নীতি: প্রক্রিয়া নিয়ে আলোচনা করা হয়, ব্যক্তি নয়।
পোস্ট-মর্টেমের ফলাফল হলো দায়িত্বশীল ব্যক্তি এবং সময়সীমা সহ কংক্রিট অ্যাকশন আইটেম। সাধারণ অ্যাকশন আইটেম: মিস করা ক্ষেত্রে ইউনিট টেস্ট যোগ করা, স্মোক টেস্ট স্যুট প্রসারিত করা, পর্যবেক্ষণ উন্নত করা (মেট্রিকে সতর্কতা যোগ করা), অনুরূপ ঘটনার জন্য রানবুক আপডেট করা। অ্যাকশন আইটেম পরবর্তী পরিকল্পিত রিলিজের আগে সম্পন্ন করতে হবে।
সচরাচর জিজ্ঞাসা
পুরোপুরি না। প্যাচ রিলিজ হলো নিয়মিত সময়সূচীতে ছোট সংশোধনের পরিকল্পিত বিতরণ। হটফিক্স সময়সূচীর বাইরে একটি জরুরি সংশোধন। প্যাচ রিলিজ সম্পূর্ণ QA চক্রের মধ্য দিয়ে যায়, hotfix একটি সংক্ষিপ্ত চক্রের মধ্য দিয়ে যায়। তবে প্রযুক্তিগতভাবে উভয়ই প্যাচ সংস্করণ বৃদ্ধি ব্যবহার করতে পারে (v2.5.0 → v2.5.1)।
না, হটফিক্স সর্বদা ট্রেসেবিলিটির জন্য Git-এ রেকর্ড করা হয়। ব্যতিক্রম হলো কনফিগারেশন স্তরে (ফিচার ফ্ল্যাগ, রিমোট কনফিগ) জরুরি সংশোধন যা কোড পরিবর্তনের প্রয়োজন হয় না। প্রতিটি হটফিক্স একটি স্পষ্ট বার্তা সহ একটি কমিটের সাথে যুক্ত হতে হবে এবং ঘটনা টিকিটে উল্লেখ করতে হবে।
iOS-এর জন্য, App Review-এর মাধ্যমে hotfix 1–24 ঘন্টা সময় নেয় (দ্রুত পর্যালোচনা সম্ভব)। Android-এর জন্য — Google Play Console-এর মাধ্যমে 1–4 ঘন্টা। স্থাপনার সময় স্টোর নীতি এবং জরুরি পর্যালোচনা প্রক্রিয়ার প্রাপ্যতার উপর নির্ভর করে।
সিদ্ধান্ত অন-কল ইঞ্জিনিয়ার গুরুতরতার মানদণ্ডের ভিত্তিতে নেয়। যদি গুরুতরতা P0 হয় — hotfix অতিরিক্ত অনুমোদন ছাড়াই শুরু করা হয়। P1 — টেক লিড থেকে অনুমোদন প্রয়োজন। টিম ক্ষমতায়ন: অন-কল ইঞ্জিনিয়ারের আমলাতন্ত্র ছাড়াই hotfix শুরু করার কর্তৃত্ব রয়েছে।
একটি পরিণত টিমের জন্য — প্রতি ত্রৈমাসিকে 1–2 হটফিক্স। মাসে একবারের বেশি ফ্রিকোয়েন্সি QA প্রক্রিয়ায় সমস্যা, অপর্যাপ্ত পরীক্ষণ কভারেজ বা ভুল রিলিজ কৌশল নির্দেশ করে। সাধারণ হটফিক্স ফ্রিকোয়েন্সি উন্নয়ন প্রক্রিয়ার মানের একটি KPI।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন