Continuous Delivery (CD) হল একটি ডেভেলপমেন্ট প্র্যাকটিস যেখানে সফ্টওয়্যার সবসময় প্রোডাকশনে রিলিজের জন্য প্রস্তুত অবস্থায় থাকে। প্রতিটি পরিবর্তন স্বয়ংক্রিয় টেস্টিং এবং যাচাইয়ের সব ধাপ অতিক্রম করে, যার পরে এটি একটি ক্লিক বা স্বয়ংক্রিয়ভাবে ডিপ্লয় করা যেতে পারে। Google Cloud DORA Report, 2025 অনুযায়ী, CD অনুশীলনকারী টিমগুলি কম অটোমেশনযুক্ত টিমের তুলনায় 208 গুণ বেশি এবং 106 গুণ দ্রুত রিলিজ প্রকাশ করে।
মূল বিষয়
Continuous Delivery (CD) হল Continuous Integration-এর একটি সম্প্রসারণ যা রিলিজ প্রস্তুতির সব ধাপে অটোমেশন যোগ করে: রিলিজ বিল্ড তৈরি, সার্টিফিকেট দিয়ে স্বাক্ষর, অস্পষ্টীকরণ, অ্যাপ স্টোর মেটাডেটা যাচাই এবং স্টেজিং-এ ডিপ্লয়মেন্ট। শব্দটি Jez Humble এবং David Farley তাদের “Continuous Delivery” (2010) বইয়ে প্রবর্তন করেন, যেখানে তারা সেই প্র্যাকটিসকে আনুষ্ঠানিক রূপ দেন যা টিমগুলিকে রিলিজ পূর্বাভাসযোগ্য এবং কম-ঝুঁকিপূর্ণ করতে সক্ষম করে।
CD গ্রহণের আগে, রিলিজ একটি ঘটনা ছিল: টিম একটি কক্ষে জড়ো হত, 20-পয়েন্ট চেকলিস্ট অনুসরণ করত, ম্যানুয়ালি স্ক্রিপ্ট চালাত এবং আশা করত কিছু ভাঙবে না। Continuous Delivery রিলিজকে একটি ঘটনা থেকে একটি প্রক্রিয়ায় রূপান্তরিত করে: কোডের একটি ছোট পরিবর্তন মিনিটের মধ্যে ব্যবহারকারীদের কাছে পৌঁছে দেওয়া যেতে পারে, সপ্তাহে নয়। Amazon, Netflix এবং Etsy 2010-এর দশকে প্রথম CD গ্রহণ করে — আজ এটি প্রোডাক্ট টিমের জন্য মানক।
দ্রুত ফিচার ডেলিভারি একটি প্রতিযোগিতামূলক সুবিধা। যদি কোনো প্রতিযোগী দিনের মধ্যে নতুন কার্যকারিতা প্রকাশ করে যখন আপনার মাস লাগে, বাজার প্রতিযোগীকে বেছে নেয়। DORA মেট্রিক্স দেখায়: এলিট টিমের (CD সহ) ডিপ্লয়মেন্ট সময় 1 ঘন্টার কম, নিম্ন টিমের (CD ছাড়া) — 1 সপ্তাহ থেকে 1 মাস। CD ঝুঁকিও মৌলিকভাবে হ্রাস করে: ছোট পরিবর্তনগুলি একটি বড় ত্রৈমাসিক রিলিজের তুলনায় জিনিস ভাঙতে বেশি কঠিন।
শব্দগুলি CI, CD এবং Continuous Deployment প্রায়ই বিভ্রান্ত হয়, তবে এগুলির মধ্যে একটি স্পষ্ট সীমানা রয়েছে। পার্থক্যগুলি বোঝা পাইপলাইন সঠিকভাবে ডিজাইন করতে এবং অটোমেশনের স্তর নির্বাচন করতে সাহায্য করে যা টিমের পরিপক্কতা এবং ব্যবসায়িক প্রয়োজনীয়তার সাথে মেলে।
CI হল ভিত্তি যার উপর CD নির্মিত। CI নিশ্চিত করে যে প্রতিটি commit বিল্ড এবং পরীক্ষার মধ্য দিয়ে যায়। CI ছাড়া CD অসম্ভব: যদি কোড যাচাই না করা হয়, তবে এটি প্রকাশ করা যায় না। CI সঠিকতা যাচাই করে, CD ব্যবসায়িক ব্যবহারের জন্য প্রস্তুতি যাচাই করে।
CD CI-তে রিলিজ বিল্ড তৈরি, মেটাডেটা যাচাই, স্বাক্ষর এবং স্টেজিং বা বিটা টেস্টিংয়ের জন্য অ্যাপ স্টোরে ডিপ্লয়মেন্টের ধাপ যোগ করে। মূল পার্থক্য — প্রোডাকশনে রিলিজের সিদ্ধান্ত একজন ব্যক্তি (ম্যানেজার, পণ্যের মালিক) নেয়। CD রিলিজকে “এক ক্লিক দূরে” করে তোলে — সহজ এবং নিরাপদ।
Continuous Deployment হল সম্পূর্ণ অটোমেশন: CD পাইপলাইনের সব ধাপ অতিক্রম করা প্রতিটি পরিবর্তন ম্যানুয়াল অনুমোদন ছাড়াই স্বয়ংক্রিয়ভাবে প্রোডাকশনে পাঠানো হয়। Continuous Deployment SaaS পণ্য এবং ওয়েব পরিষেবাগুলির জন্য প্রযোজ্য, কিন্তু অ্যাপ স্টোর নীতির (App Store Review, Google Play Review-তে ম্যানুয়াল সাবমিশন প্রয়োজন) কারণে মোবাইল ডেভেলপমেন্টে খুব কমই ব্যবহৃত হয়।
| অনুশীলন | অটোমেশন | প্রোডাকশনে রিলিজ | সাধারণত |
|---|---|---|---|
| CI | বিল্ড + পরীক্ষা | না | যেকোনো প্রকল্প |
| CD | বিল্ড + পরীক্ষা + রিলিজ বিল্ড + ডেলিভারি | চাহিদা অনুযায়ী | মোবাইল অ্যাপ্লিকেশন |
| Continuous Deployment | সম্পূর্ণ: বিল্ড → পরীক্ষা → ডেলিভারি → রিলিজ | স্বয়ংক্রিয়ভাবে | ওয়েব পরিষেবা, SaaS |
মোবাইল অ্যাপ্লিকেশনের জন্য CD-র বৈশিষ্ট্য রয়েছে যা এটিকে ওয়েব এবং ব্যাকএন্ড পাইপলাইন থেকে আলাদা করে। মোবাইল রিলিজ অ্যাপ স্টোর (App Store Review, Google Play Review) এর মাধ্যমে যায়, যা সময় এবং প্রক্রিয়াগত বাধা যোগ করে। CD পর্যালোচনার জন্য জমা দেওয়ার আগে যা কিছু স্বয়ংক্রিয় করা যায় তা স্বয়ংক্রিয় করে যাতে প্রথম চেষ্টায় যাচাই পাসের সম্ভাবনা সর্বাধিক হয়।
Android CD পাইপলাইনে অন্তর্ভুক্ত: AAB (Android App Bundle) তৈরি, রিলিজ কী দিয়ে স্বাক্ষর, R8/ProGuard এর মাধ্যমে অস্পষ্টীকরণ, APK আকার এবং multidex ক্লাস পরীক্ষা, রিলিজ নোট জেনারেট করা। Gradle product flavors (free/paid, dev/staging/prod) ব্যবহার একটি পাইপলাইন থেকে একাধিক কনফিগারেশন পরিচালনা করতে দেয়।
iOS CD-র জন্য Fastlane match-এর মাধ্যমে সার্টিফিকেট দিয়ে স্বাক্ষর, আইকন সম্মতি পরীক্ষা (App Store প্রয়োজনীয়তা — 1024×1024 px), মেটাডেটা (নাম, বিবরণ, কীওয়ার্ড) বৈধতা, প্রাইভেট API-র অনুপস্থিতি পরীক্ষা প্রয়োজন। প্রযুক্তিগত বৈধতা altool --validate-app এর মাধ্যমে App Store Connect-এ আপলোড ছাড়াই সঞ্চালিত হয়, যা দ্রুত প্রতিক্রিয়া প্রদান করে।
# Fastfile — iOS এবং Android-এর জন্য সম্পূর্ণ CD পাইপলাইন
platform :ios do
desc "iOS CD — রিলিজ প্রস্তুতি এবং TestFlight-এ আপলোড"
lane :deliver_to_testflight do
capture_screenshots
match(type: "appstore")
build_app(
scheme: "MyApp",
export_method: "app-store",
workspace: "MyApp.xcworkspace"
)
pilot(skip_waiting_for_build: true)
end
end
platform :android do
desc "Android CD — AAB বিল্ড এবং Google Play Console-এ আপলোড"
lane :deliver_to_internal do
gradle(
task: "bundleRelease",
build_type: "Release",
print_command: true
)
upload_to_play_store(
track: "internal",
skip_upload_metadata: true
)
end
end
Fastlane deliver_to_testflight স্ক্রিনশট সংগ্রহ করে, match-এর মাধ্যমে সার্টিফিকেট পায়, IPA তৈরি করে এবং TestFlight-এ আপলোড করে। Android-এর জন্য deliver_to_internal লেন Gradle-এর মাধ্যমে Release AAB তৈরি করে এবং এটি Google Play Console-এর অভ্যন্তরীণ ট্র্যাকে আপলোড করে। উভয় পাইপলাইন পরীক্ষা পাস করার পর CI থেকে চলে।
CD পাইপলাইন ক্রমিক ধাপ নিয়ে গঠিত, প্রতিটি আত্মবিশ্বাস বাড়ায় যে রিলিজ ব্যবহারকারীদের জন্য প্রস্তুত। ধাপগুলি প্রযুক্তিগত (বিল্ড, স্বাক্ষর) এবং পণ্য (মেটাডেটা, স্ক্রিনশট, বিবরণ যাচাই) এ বিভক্ত। কোনো ধাপ এড়িয়ে গেলে অ্যাপ স্টোর দ্বারা রিলিজ প্রত্যাখ্যাত হওয়ার ঝুঁকি বেড়ে যায়।
CD-র একটি গুরুত্বপূর্ণ উপাদান হল স্বয়ংক্রিয় সংস্করণ ব্যবস্থাপনা। সংস্করণ বৃদ্ধি (Android-এর জন্য versionCode এবং versionName, iOS-এর জন্য CFBundleVersion এবং CFBundleShortVersionString) Git ট্যাগ বা স্টোরে পূর্ববর্তী সংস্করণের ভিত্তিতে সঞ্চালিত হয়। Fastlane increment_version_number এবং Gradle কমান্ড (versionCode auto-increment) এই ধাপটি স্বয়ংক্রিয় করে।
Google Play Console এবং App Store Connect-এর প্রয়োজন: অ্যাপ বিবরণ, কীওয়ার্ড, বিভাগ, রেটিং, গোপনীয়তা নীতি লিঙ্ক। CD অন্তর্ভুক্ত করে মেটাডেটার উপস্থিতি এবং সঠিকতা পরীক্ষা। Fastlane deliver এবং supply বিল্ডের সাথে বিবরণ, স্ক্রিনশট এবং আইকন আপলোড স্বয়ংক্রিয় করে।
পর্যালোচনার জন্য জমা দেওয়ার আগে, পাইপলাইন গেট পরীক্ষা করে: বিল্ড আকার পরীক্ষা (APK > 200 MB Google Play দ্বারা প্রত্যাখ্যাত), সব স্থানীয়করণের উপস্থিতি, রিলিজ বিল্ডে ডিবাগ প্রতীকের অনুপস্থিতি, ক্র্যাশ লগ ডিকোড করার জন্য ProGuard ম্যাপিং ফাইল পরীক্ষা। যদি কোনো পরীক্ষা ব্যর্থ হয় — পাইপলাইন রিলিজ ব্লক করে।
CD-তে বিশ্বাসের স্তর স্বয়ংক্রিয় পরীক্ষার গুণমানের সমানুপাতিক। যদি পরীক্ষাগুলি রিগ্রেশন না ধরে — রিলিজ প্রোডাকশন ভাঙতে পারে এবং টিম CD-তে আস্থা হারায়। মোবাইল CD-র জন্য প্ল্যাটফর্মের নির্দিষ্টতার সাথে অভিযোজিত তিন-স্তরের পরীক্ষা পিরামিড প্রয়োজন।
ইউনিট টেস্ট বিচ্ছিন্নভাবে ব্যবসায়িক যুক্তি যাচাই করে। গুরুত্বপূর্ণ মডিউল (প্রমাণীকরণ, পেমেন্ট, নেটওয়ার্কিং) এর জন্য কোড কভারেজ কমপক্ষে 70% হওয়া উচিত। CI প্রতিটি push-এ ইউনিট টেস্ট চালায়, এবং যদি সেগুলি ব্যর্থ হয় — CD পাইপলাইন ঠিক না হওয়া পর্যন্ত ব্লক হয়ে যায়।
এগুলি উপাদান মিথস্ক্রিয়া যাচাই করে: বাস্তব API (বা মক সার্ভার) সহ নেটওয়ার্ক স্তর, ডেটাবেস, ফাইল সিস্টেম। Android-এর জন্য Room DAO টেস্ট, iOS-এর জন্য Core Data টেস্ট ইন্টিগ্রেশন টেস্টের উদাহরণ। এগুলি ইউনিট টেস্টের চেয়ে ধীর (1–5 মিনিট) এবং CD ধাপে কার্যকর করা হয়, প্রতিটি commit-এ CI-তে নয়।
স্ক্রিনশট টেস্ট (snapshot testing) অ্যাপ স্ক্রিনের সাথে রেফারেন্স ইমেজ তুলনা করে। যদি কোড পরিবর্তন UI পরিবর্তন করে — টেস্ট ব্যর্থ হয় এবং ডেভেলপার পরীক্ষা করে যে পরিবর্তন প্রত্যাশিত কিনা। Android Roborazzi এবং Paparazzi সমর্থন করে, iOS — Point-Free-এর SnapshotTesting। স্ক্রিনশট টেস্ট CD পাইপলাইনের অংশ হিসাবে রিলিজের আগে কার্যকর করা হয়।
Continuous Delivery বাস্তবায়নের জন্য শুধু টুল নয়, টিমের সংস্কৃতিতে পরিবর্তনও প্রয়োজন। নীচের অনুশীলনগুলি Google, Spotify এবং Uber-এর মোবাইল টিমের বছরের পর বছরের অভিজ্ঞতার উপর ভিত্তি করে এবং যেকোনো আকারের প্রকল্পের জন্য অভিযোজিত।
নতুন ফিচারের কোড প্রোডাকশনে পাঠানো হয় কিন্তু একটি ফ্ল্যাগের পিছনে লুকানো থাকে। Feature flags ফিচার ব্যবহারকারীদের জন্য প্রস্তুত হওয়ার আগে কোড ডিপ্লয় করতে এবং সমস্যার ক্ষেত্রে তাৎক্ষণিকভাবে নিষ্ক্রিয় করতে দেয়। লাইব্রেরি: LaunchDarkly, Firebase Remote Config, Unleash। মোবাইল প্রকল্পে CD-র জন্য Feature flags একটি বাধ্যতামূলক প্রয়োজনীয়তা।
প্রোডাকশনে পাঠানোর আগে, বিল্ড স্টেজিং-এ ডিপ্লয় করা হয় — প্রোডাকশনের মতো কিন্তু পরীক্ষার ডেটা সহ পরিবেশ। QA ইঞ্জিনিয়াররা TestFlight বা Internal Testing ট্র্যাকের মাধ্যমে ইনস্টল করা স্টেজিং বিল্ডে ফিচার পরীক্ষা করে। যদি স্টেজিং পাস করে — বিল্ড পর্যালোচনার জন্য স্টোরে জমা দেওয়ার অনুমোদন পায়।
CD commit messages-এর উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে রিলিজ নোট জেনারেট করে। Conventional Commits (feat:, fix:, chore:) এবং সিমেন্টিক ভার্সনিং ফরম্যাটে Git ট্যাগ পরিবর্তন ইতিহাস পার্স করার অনুমতি দেয়। Fastlane changelog_from_git_commits শেষ দুটি ট্যাগের মধ্যে পরিবর্তন সংগ্রহ করে এবং অ্যাপ স্টোরের জন্য ফরম্যাট করে।
CD প্রকাশনার সাথে শেষ হয় না — রিলিজের পরে, মনিটরিং শুরু হয়: ক্র্যাশ রেট, Android-এর জন্য ANR রেট, লঞ্চ টাইম, পেমেন্ট ব্যর্থতার হার। যদি মেট্রিক্স স্বাভাবিক সীমা অতিক্রম করে — CD পাইপলাইন স্বয়ংক্রিয়ভাবে রিলিজ রোলব্যাক বা টিমকে বিজ্ঞপ্তি দেবে। টুল: Firebase Crashlytics, Sentry, New Relic.
// CD-র জন্য Firebase Remote Config-এর সাথে Feature Flag-এর উদাহরণ
class FeatureManager(
private val remoteConfig: FirebaseRemoteConfig
) {
fun isNewCheckoutEnabled(): Boolean {
return remoteConfig.getBoolean("new_checkout_enabled")
}
fun getRecommendedVersion(): String {
return remoteConfig.getString("minimum_app_version")
}
}
// কোডে ব্যবহার
if (featureManager.isNewCheckoutEnabled()) {
showNewCheckoutScreen()
} else {
showLegacyCheckoutScreen()
}
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Continuous Delivery (CD) রিলিজ প্রস্তুতি স্বয়ংক্রিয় করে কিন্তু ডিপ্লয়মেন্টের সিদ্ধান্ত একজন ব্যক্তির উপর ছেড়ে দেয়। Continuous Deployment হল CD + মানবিক অংশগ্রহণ ছাড়া প্রোডাকশনে স্বয়ংক্রিয় রিলিজ। মোবাইল ডেভেলপমেন্টে, বাধ্যতামূলক অ্যাপ স্টোর পর্যালোচনার কারণে Continuous Deployment অসম্ভব।
সব ধাপের জন্য একই বিল্ড ব্যবহার করুন: CI debug বিল্ড পরীক্ষা করে, CD একই উৎস থেকে release বিল্ড তৈরি করে। Fastlane build_app এবং Gradle assembleRelease বিল্ড কনফিগারেশনকে আলাদা করে। স্টোরে পাঠানোর আগে CD পাইপলাইনে রিলিজ বিল্ডে স্মোক টেস্ট চালান।
হ্যাঁ, CD যেকোনো প্রকল্পে বাস্তবায়ন করা যেতে পারে। একটি ধাপের অটোমেশন দিয়ে শুরু করুন — উদাহরণস্বরূপ, রিলিজ বিল্ড তৈরি। তারপর স্বাক্ষর যোগ করুন, তারপর TestFlight-এ আপলোড। ধীরে ধীরে পাইপলাইন প্রসারিত করুন। মূল বিষয় হল একসাথে সবকিছু স্বয়ংক্রিয় করার চেষ্টা না করা: CD পুনরাবৃত্তিমূলকভাবে বাস্তবায়িত হয়।
Feature flags CD-র একটি মূল সক্ষমকারী। এগুলি ব্যবহারকারীদের জন্য সক্ষম না করেই কোড প্রোডাকশনে পাঠানোর অনুমতি দেয়। যদি কোনো ফিচার অস্থির হয় — অ্যাপ্লিকেশন পুনর্নির্মাণ ছাড়াই ফ্ল্যাগ বন্ধ করা হয়। Firebase Remote Config এবং LaunchDarkly CD পাইপলাইনের সাথে একীভূত হয় এবং ওয়েব ইন্টারফেস বা API-এর মাধ্যমে পরিচালিত হয়।
CD-র সাথে, টিমগুলি সাপ্তাহিক বা দ্বি-সাপ্তাহিক রিলিজ করে। DORA রিপোর্টের এলিট টিমগুলি Continuous Deployment (সার্ভার-সাইডের জন্য) এর মাধ্যমে প্রতিদিন একাধিক রিলিজ করে। মোবাইল অ্যাপ্লিকেশনের জন্য, সর্বোত্তম ফ্রিকোয়েন্সি হল প্রতি 1–2 সপ্তাহে একবার: App Store পর্যালোচনায় 1–3 দিন সময় লাগে এবং বেশি ঘন ঘন রিলিজ ব্যবহারকারীদের পরিবর্তন লক্ষ্য করার সময় দেয় না।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন