1. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি বৈশিষ্ট্য রোলআউটের সময় আপনার অ্যাপের কর্মক্ষমতা পর্যবেক্ষণ করবেন। আমাদের নমুনা অ্যাপটিতে মৌলিক কার্যকারিতা থাকবে এবং এটি একটি Firebase Remote Config ফ্ল্যাগের উপর ভিত্তি করে একটি ভিন্ন ব্যাকগ্রাউন্ড চিত্র প্রদর্শনের জন্য সেট আপ করা হয়েছে। আমরা অ্যাপের কর্মক্ষমতা পর্যবেক্ষণ করার জন্য ইন্সট্রুমেন্টিং ট্রেসগুলি পর্যালোচনা করব, অ্যাপটিতে একটি কনফিগারেশন পরিবর্তন রোলআউট করব, প্রভাব পর্যবেক্ষণ করব এবং কীভাবে আমরা কর্মক্ষমতা উন্নত করতে পারি তা দেখব।
তুমি কি শিখবে
- আপনার মোবাইল অ্যাপে ফায়ারবেস পারফরম্যান্স মনিটরিং কীভাবে যোগ করবেন যাতে আপনি অপ্রচলিত মেট্রিক্স (যেমন অ্যাপ শুরুর সময় এবং ধীর বা হিমায়িত ফ্রেম) পেতে পারেন।
- আপনার ব্যবহারকারীর যাত্রার গুরুত্বপূর্ণ কোড পাথগুলি বোঝার জন্য কীভাবে কাস্টম ট্রেস যুক্ত করবেন
- আপনার মেট্রিক্স বুঝতে এবং কোনও বৈশিষ্ট্যের রোলআউটের মতো গুরুত্বপূর্ণ পরিবর্তনগুলি ট্র্যাক করতে পারফরম্যান্স মনিটরিং ড্যাশবোর্ড কীভাবে ব্যবহার করবেন
- আপনার মূল মেট্রিক্স পর্যবেক্ষণের জন্য পারফরম্যান্স সতর্কতা কীভাবে সেটআপ করবেন
- ফায়ারবেস রিমোট কনফিগারেশন পরিবর্তন কীভাবে চালু করবেন
পূর্বশর্ত
- অ্যান্ড্রয়েড স্টুডিও ৪.০ বা তার বেশি
- একটি অ্যান্ড্রয়েড এমুলেটর যার API লেভেল ১৬ বা তার বেশি।
- জাভা সংস্করণ ৮ বা তার বেশি
- ফায়ারবেস রিমোট কনফিগ সম্পর্কে প্রাথমিক ধারণা
২. নমুনা প্রকল্পটি সেট আপ করুন
কোডটি ডাউনলোড করুন
এই কোডল্যাবের জন্য নমুনা কোড ক্লোন করতে নিম্নলিখিত কমান্ডটি চালান। এটি আপনার মেশিনে codelab-perf-rc-android নামে একটি ফোল্ডার তৈরি করবে:
$ git clone https://github.com/FirebaseExtended/codelab-feature-rollout-performance.git
যদি আপনার মেশিনে Git না থাকে, তাহলে আপনি সরাসরি GitHub থেকে কোডটি ডাউনলোড করতে পারেন।
firebase-perf-rc-android-start ফোল্ডারের অধীনে প্রকল্পটি Android Studio-তে আমদানি করুন। আপনি সম্ভবত কিছু রানটাইম ব্যতিক্রম দেখতে পাবেন অথবা google-services.json ফাইলটি হারিয়ে যাওয়ার বিষয়ে একটি সতর্কতা দেখতে পাবেন। আমরা পরবর্তী বিভাগে এটি সংশোধন করব।
এই কোডল্যাবে, আপনি Firebase Assistant প্লাগইন ব্যবহার করে আপনার Android অ্যাপটিকে Firebase প্রজেক্টের সাথে নিবন্ধন করবেন এবং আপনার Android প্রজেক্টে প্রয়োজনীয় Firebase কনফিগারেশন ফাইল, প্লাগইন এবং নির্ভরতা যোগ করবেন — সবকিছুই Android Studio এর মধ্যে থেকে !
আপনার অ্যাপটি Firebase-এর সাথে সংযুক্ত করুন
- আপনি Android Studio এবং Firebase Assistant-এর সর্বশেষ সংস্করণ ব্যবহার করছেন কিনা তা নিশ্চিত করতে Android Studio / Help > আপডেটের জন্য চেক করুন- এ যান।
- সহকারী ফলকটি খুলতে সরঞ্জাম > ফায়ারবেস নির্বাচন করুন।

- আপনার অ্যাপে যোগ করার জন্য পারফরম্যান্স মনিটরিং বেছে নিন, তারপর Get started with Performance Monitoring এ ক্লিক করুন।
- আপনার অ্যান্ড্রয়েড প্রজেক্টকে Firebase এর সাথে সংযুক্ত করতে Connect to Firebase এ ক্লিক করুন। (এটি আপনার ব্রাউজারে Firebase কনসোলটি খুলবে।)
- একটি নতুন প্রকল্প তৈরি করতে বোতামটি ক্লিক করুন, এবং তারপর একটি প্রকল্পের নাম লিখুন (উদাহরণস্বরূপ,
Feature Rollout Performance Codelab)। - চালিয়ে যান ক্লিক করুন।
- যদি অনুরোধ করা হয়, তাহলে Firebase শর্তাবলী পর্যালোচনা করুন এবং গ্রহণ করুন, এবং তারপর Continue এ ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে ("Gemini in Firebase" নামে পরিচিত) AI সহায়তা সক্ষম করুন।
- এই কোডল্যাবের জন্য, আপনার গুগল অ্যানালিটিক্সের প্রয়োজন নেই , তাই গুগল অ্যানালিটিক্স বিকল্পটি টগল করে বন্ধ করে দিন ।
আপনি ঐচ্ছিকভাবে Google Analytics সক্ষম করতে পারেন কারণ এটি প্রসারিত রিমোট কনফিগ টার্গেটিং বিকল্প প্রদান করবে। তবে, এই কোডল্যাবটি এমন একটি টার্গেটিং বিকল্প ব্যবহার করে যার জন্য Google Analytics এর প্রয়োজন হয় না। - এরপর আপনার নতুন Firebase অ্যাপটিকে আপনার Android Studio প্রকল্পের সাথে সংযুক্ত করার জন্য একটি ডায়ালগ দেখতে পাবেন।

- সংযোগ করুন ক্লিক করুন।
- অ্যান্ড্রয়েড স্টুডিও খুলুন। অ্যাসিস্ট্যান্ট প্যানে, আপনি নিশ্চিতকরণ দেখতে পাবেন যে আপনার অ্যাপটি ফায়ারবেসের সাথে সংযুক্ত।

আপনার অ্যাপে পারফরম্যান্স মনিটরিং যোগ করুন
অ্যান্ড্রয়েড স্টুডিওর সহকারী ফলকে, আপনার অ্যাপে পারফরম্যান্স মনিটরিং যোগ করুন ক্লিক করুন।
আপনি "পরিবর্তন গ্রহণ করুন" নামে একটি ডায়ালগ দেখতে পাবেন যার পরে অ্যান্ড্রয়েড স্টুডিও আপনার অ্যাপটি সিঙ্ক করবে যাতে নিশ্চিত করা যায় যে সমস্ত প্রয়োজনীয় নির্ভরতা যোগ করা হয়েছে।

অবশেষে, আপনি অ্যান্ড্রয়েড স্টুডিওর সহকারী ফলকে সাফল্যের বার্তাটি দেখতে পাবেন যে সমস্ত নির্ভরতা সঠিকভাবে সেট আপ করা হয়েছে।

অতিরিক্ত পদক্ষেপ হিসেবে, "(ঐচ্ছিক) ডিবাগ লগিং সক্ষম করুন" ধাপের নির্দেশাবলী অনুসরণ করে ডিবাগ লগিং সক্ষম করুন । একই নির্দেশাবলী পাবলিক ডকুমেন্টেশনেও পাওয়া যাবে।
3. অ্যাপটি চালান
এখন আপনার অ্যাপের মডিউল (অ্যাপ-লেভেল) ডিরেক্টরিতে google-services.json ফাইলটি দেখতে পাবেন এবং আপনার অ্যাপটি এখন কম্পাইল করা উচিত। অ্যান্ড্রয়েড স্টুডিওতে, আপনার অ্যান্ড্রয়েড এমুলেটরে অ্যাপটি তৈরি এবং চালানোর জন্য Run > Run 'app' এ ক্লিক করুন।
অ্যাপটি চালু থাকাকালীন, প্রথমে আপনার এইরকম একটি স্প্ল্যাশ স্ক্রিন দেখা উচিত:

তারপর, কয়েক সেকেন্ড পরে, ডিফল্ট চিত্র সহ প্রধান পৃষ্ঠাটি প্রদর্শিত হবে:

গোপনে কি হচ্ছে?
স্প্ল্যাশ স্ক্রিনটি স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটিতে প্রয়োগ করা হয় এবং নিম্নলিখিত কাজগুলি করে:
-
onCreate()তে, আমরা Firebase Remote Config সেটিংস ইনিশিয়ালাইজ করি এবং এই কোডল্যাবের পরে Remote Config ড্যাশবোর্ডে সেট করা কনফিগারেশন মানগুলি নিয়ে আসি। -
executeTasksBasedOnRC()এ, আমরাseasonal_image_urlফ্ল্যাগের কনফিগ মান পড়ি। যদি কনফিগ মান দ্বারা একটি URL প্রদান করা হয়, তাহলে আমরা চিত্রটি সিঙ্ক্রোনাসভাবে ডাউনলোড করি। - ডাউনলোড সম্পূর্ণ হলে, অ্যাপটি MainActivity- এ নেভিগেট করে এবং
SplashScreenActivityশেষ করতেfinish()কল করে।
MainActivity তে, যদি seasonal_image_url কে Remote Config এর মাধ্যমে সংজ্ঞায়িত করা হয়, তাহলে বৈশিষ্ট্যটি সক্রিয় হবে এবং ডাউনলোড করা ছবিটি মূল পৃষ্ঠার পটভূমি হিসেবে প্রদর্শিত হবে। অন্যথায়, ডিফল্ট ছবিটি (উপরে দেখানো হয়েছে) প্রদর্শিত হবে।
৪. রিমোট কনফিগারেশন সেট আপ করুন
এখন যেহেতু আপনার অ্যাপটি চলছে, আপনি নতুন বৈশিষ্ট্য পতাকা সেট আপ করতে পারেন।
- Firebase কনসোলের বাম প্যানেলে, Engage বিভাগটি সনাক্ত করুন, তারপর Remote Config এ ক্লিক করুন।
- কনফিগারেশন ফর্মটি খুলতে কনফিগারেশন তৈরি করুন বোতামে ক্লিক করুন এবং প্যারামিটার কী হিসেবে
seasonal_image_urlযোগ করুন। - বর্ণনা যোগ করুন এ ক্লিক করুন, তারপর এই বিবরণটি লিখুন:
Shows a seasonal image (replaces default) in the main page when the restaurant list is empty. - নতুন যোগ করুন -> শর্তসাপেক্ষ মান -> নতুন শর্ত তৈরি করুন ক্লিক করুন।
- শর্তের নামের জন্য,
Seasonal image rolloutলিখুন। -
Applies if...বিভাগের জন্য,User in random percentile <= 0%নির্বাচন করুন। (পরবর্তী ধাপে চালু করার জন্য প্রস্তুত না হওয়া পর্যন্ত আপনি বৈশিষ্ট্যটি অক্ষম রাখতে চান।) - Create condition এ ক্লিক করুন। আপনি পরে আপনার ব্যবহারকারীদের কাছে নতুন বৈশিষ্ট্যটি রোল আউট করার জন্য এই শর্তটি ব্যবহার করবেন।

- "আপনার প্রথম প্যারামিটার তৈরি করুন" ফর্মটি খুলুন এবং "Value for Seasonal image rollout" ফিল্ডটি সনাক্ত করুন। মৌসুমী ছবিটি যে URL থেকে ডাউনলোড করা হবে সেটি লিখুন:
https://images.unsplash.com/photo-1552691021-7043334e0b51 - ডিফল্ট মানটি খালি স্ট্রিং হিসেবে রাখুন। এর অর্থ হল কোডবেসে ডিফল্ট ছবিটি URL থেকে ডাউনলোড করা ছবির পরিবর্তে প্রদর্শিত হবে।
- সংরক্ষণ করুন ক্লিক করুন।

আপনি দেখতে পাচ্ছেন যে নতুন কনফিগারেশনটি একটি খসড়া হিসাবে তৈরি করা হয়েছে।
- আপনার অ্যাপ আপডেট করতে পরিবর্তনগুলি প্রকাশ করুন- এ ক্লিক করুন এবং উপরে থাকা পরিবর্তনগুলি নিশ্চিত করুন।

৫. ডেটা লোডিং সময়ের জন্য পর্যবেক্ষণ যোগ করুন
আপনার অ্যাপটি MainActivity দেখানোর আগে কিছু ডেটা প্রি-লোড করে এবং এই প্রক্রিয়াটি লুকানোর জন্য একটি স্প্ল্যাশ স্ক্রিন প্রদর্শন করে। আপনি চান না যে আপনার ব্যবহারকারীরা এই স্ক্রিনে খুব বেশি সময় অপেক্ষা করুক, তাই সাধারণত স্প্ল্যাশ স্ক্রিনটি কতক্ষণ প্রদর্শিত হয় তা পর্যবেক্ষণ করা সুবিধাজনক।
ফায়ারবেস পারফরম্যান্স মনিটরিং ঠিক এটি করার একটি উপায় প্রদান করে। আপনি আপনার অ্যাপে নির্দিষ্ট কোডের কর্মক্ষমতা পর্যবেক্ষণ করতে কাস্টম কোড ট্রেস ব্যবহার করতে পারেন - যেমন ডেটা লোড করার সময় এবং আপনার নতুন বৈশিষ্ট্যের প্রক্রিয়াকরণের সময়।
স্প্ল্যাশ স্ক্রিন কতক্ষণ প্রদর্শিত হবে তা ট্র্যাক করার জন্য, আপনি SplashScreenActivity তে একটি কাস্টম কোড ট্রেস যোগ করবেন, যা Activity যা স্প্ল্যাশ স্ক্রিন বাস্তবায়ন করে।
-
splash_screen_traceনামে একটি কাস্টম কোড ট্রেস শুরু করুন, তৈরি করুন এবং শুরু করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
// ...
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;
// ...
public class SplashScreenActivity extends AppCompatActivity {
private static final String TAG = "SplashScreenActivity";
private static final String SEASONAL_IMAGE_URL_RC_FLAG = "seasonal_image_url";
// TODO: Initialize splash_screen_trace
private final Trace splashScreenTrace = FirebasePerformance.startTrace("splash_screen_trace");
// ...
}
-
SplashScreenActivityএরonDestroy()পদ্ধতিতে ট্রেসটি শেষ করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
@Override
protected void onDestroy() {
super.onDestroy();
// TODO: Stop the splash_screen_trace here
splashScreenTrace.stop();
}
যেহেতু আপনার নতুন বৈশিষ্ট্যটি একটি ছবি ডাউনলোড এবং প্রক্রিয়া করে, তাই আপনি একটি দ্বিতীয় কাস্টম কোড ট্রেস যুক্ত করবেন যা আপনার বৈশিষ্ট্যটি SplashScreenActivity তে যোগ করা অতিরিক্ত সময় ট্র্যাক করবে।
-
splash_seasonal_image_processingনামে একটি কাস্টম কোড ট্রেস শুরু করুন, তৈরি করুন এবং শুরু করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);
if (!seasonalImageUrl.isEmpty()) {
// TODO: Start the splash_seasonal_image_processing here
final Trace seasonalImageProcessingTrace = FirebasePerformance
.startTrace("splash_seasonal_image_processing");
// ...
}
}
-
RequestListenerএরonLoadFailed()এবংonResourceReady()উভয় পদ্ধতিতেই ট্রেসটি শেষ করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
Glide.with(SplashScreenActivity.this.getApplicationContext())
.asBitmap()
.load(seasonalImageUrl)
.signature(new ObjectKey(Utils.getCacheUUID()))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(
@Nullable GlideException e,
Object model, Target<Bitmap> target,
boolean isFirstResource) {
// TODO: Stop the splash_seasonal_image_processing here
seasonalImageProcessingTrace.stop();
launchMainActivity();
return true;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model,
Target<Bitmap> target, DataSource dataSource,
boolean isFirstResource) {
// TODO: Stop the splash_seasonal_image_processing here
seasonalImageProcessingTrace.stop();
launchMainActivity();
return true;
}
})
.preload();
এখন যেহেতু আপনি স্প্ল্যাশ স্ক্রিনের সময়কাল ( splash_screen_trace) এবং নতুন বৈশিষ্ট্যের প্রক্রিয়াকরণ সময় ( splash_seasonal_image_processing ) ট্র্যাক করার জন্য কাস্টম কোড ট্রেস যোগ করেছেন, তাই Android Studio তে অ্যাপটি আবার চালান । আপনি একটি লগিং বার্তা দেখতে পাবেন যাতে Logging trace metric: splash_screen_trace , তারপরে ট্রেসের সময়কাল। আপনি splash_seasonal_image_processing এর জন্য কোনও লগ বার্তা দেখতে পাবেন না কারণ আপনি এখনও নতুন বৈশিষ্ট্যটি সক্ষম করেননি।
৬. ট্রেসে একটি কাস্টম অ্যাট্রিবিউট যোগ করুন
কাস্টম কোড ট্রেসের জন্য, পারফরম্যান্স মনিটরিং স্বয়ংক্রিয়ভাবে ডিফল্ট অ্যাট্রিবিউটগুলি (অ্যাপ সংস্করণ, দেশ, ডিভাইস ইত্যাদির মতো সাধারণ মেটাডেটা) লগ করে যাতে আপনি ফায়ারবেস কনসোলে ট্রেসের জন্য ডেটা ফিল্টার করতে পারেন। আপনি কাস্টম অ্যাট্রিবিউটগুলিও যোগ এবং নিরীক্ষণ করতে পারেন।
আপনার অ্যাপে, আপনি স্প্ল্যাশ স্ক্রিনের সময়কাল এবং নতুন বৈশিষ্ট্যের প্রক্রিয়াকরণের সময় নিরীক্ষণের জন্য দুটি কাস্টম কোড ট্রেস যুক্ত করেছেন। এই সময়কালগুলিকে প্রভাবিত করতে পারে এমন একটি বিষয় হল প্রদর্শিত ছবিটি ডিফল্ট ছবি কিনা, নাকি ছবিটি কোনও URL থেকে ডাউনলোড করতে হবে। এবং কে জানে - আপনার শেষ পর্যন্ত বিভিন্ন URL থাকতে পারে যেখান থেকে আপনি একটি ছবি ডাউনলোড করেন।
তাহলে, আসুন এই কাস্টম কোড ট্রেসগুলিতে মৌসুমী চিত্র URL প্রতিনিধিত্বকারী একটি কাস্টম বৈশিষ্ট্য যুক্ত করি। এইভাবে, আপনি পরে এই মানগুলি দ্বারা সময়কাল ডেটা ফিল্টার করতে পারেন।
-
executeTasksBasedOnRCপদ্ধতির শুরুতেsplash_screen_traceএর জন্য কাস্টম অ্যাট্রিবিউট (seasonal_image_url_attribute) যোগ করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
private void executeTasksBasedOnRC(FirebaseRemoteConfig rcConfig) {
String seasonalImageUrl = rcConfig.getString(SEASONAL_IMAGE_URL_RC_FLAG);
Log.d(TAG, SEASONAL_IMAGE_URL_RC_FLAG + ": " + seasonalImageUrl);
// TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_screen_trace
if (seasonalImageUrl.isEmpty()) {
splashScreenTrace.putAttribute("seasonal_image_url_attribute", "unset");
} else {
splashScreenTrace.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
}
// ...
}
-
startTrace("splash_seasonal_image_processing")কলের ঠিক পরেsplash_seasonal_image_processingএর জন্য একই কাস্টম অ্যাট্রিবিউট যোগ করুন:
স্প্ল্যাশস্ক্রিনঅ্যাক্টিভিটি.জাভা
if (!seasonalImageUrl.isEmpty()) {
// TODO: Start the splash_seasonal_image_processing here
final Trace seasonalImageProcessingTrace = FirebasePerformance
.startTrace("splash_seasonal_image_processing");
// TODO: Add a custom attribute "seasonal_image_url_attribute" to splash_seasonal_image_processing
seasonalImageProcessingTrace
.putAttribute("seasonal_image_url_attribute", seasonalImageUrl);
// ...
}
এখন যেহেতু আপনি আপনার কাস্টম ট্রেস ( splash_screen_trace এবং splash_seasonal_image_processing ) উভয়ের জন্য একটি কাস্টম অ্যাট্রিবিউট ( seasonal_image_url_attribute ) যোগ করেছেন, তাই Android Studio তে অ্যাপটি আবার চালান । আপনি একটি লগিং বার্তা দেখতে পাবেন যেখানে Setting attribute 'seasonal_image_url_attribute' to 'unset' on trace 'splash_screen_trace'. আপনি এখনও Remote Config প্যারামিটার seasonalImageUrl সক্ষম করেননি যার কারণে অ্যাট্রিবিউটের মান unset আছে।
পারফরম্যান্স মনিটরিং SDK ট্রেস ডেটা সংগ্রহ করবে এবং সেগুলি Firebase-এ পাঠাবে। আপনি Firebase কনসোলের পারফরম্যান্স ড্যাশবোর্ডে ডেটা দেখতে পারেন, যা আমরা কোডল্যাবের পরবর্তী ধাপে বিস্তারিতভাবে ব্যাখ্যা করব।
৭. আপনার পারফরম্যান্স মনিটরিং ড্যাশবোর্ড কনফিগার করুন
আপনার বৈশিষ্ট্যটি পর্যবেক্ষণ করতে আপনার ড্যাশবোর্ড কনফিগার করুন
Firebase কনসোলে , আপনার Friendly Eats অ্যাপটি আছে এমন প্রকল্পটি নির্বাচন করুন।
বাম প্যানেলে, রিলিজ এবং মনিটর বিভাগটি খুঁজুন, তারপর পারফরম্যান্স ক্লিক করুন।
আপনার মেট্রিক্স বোর্ডে আপনার প্রথম ডেটা পয়েন্ট সহ আপনার পারফরম্যান্স ড্যাশবোর্ডটি দেখতে পাবেন! পারফরম্যান্স মনিটরিং SDK আপনার অ্যাপ থেকে পারফরম্যান্স ডেটা সংগ্রহ করে এবং সংগ্রহের কয়েক মিনিটের মধ্যেই এটি প্রদর্শন করে।

এই মেট্রিক্স বোর্ডে আপনি আপনার অ্যাপের মূল মেট্রিক্স ট্র্যাক করতে পারবেন। ডিফল্ট ভিউতে আপনার অ্যাপের শুরুর সময়কাল অন্তর্ভুক্ত থাকে, তবে আপনি যে মেট্রিক্সগুলি সবচেয়ে বেশি গুরুত্বপূর্ণ তা যোগ করতে পারেন। যেহেতু আপনি আপনার যোগ করা নতুন বৈশিষ্ট্যটি ট্র্যাক করছেন, তাই আপনি কাস্টম কোড ট্রেস splash_screen_trace এর সময়কাল প্রদর্শনের জন্য আপনার ড্যাশবোর্ডটি তৈরি করতে পারেন।
- খালি " একটি মেট্রিক নির্বাচন করুন" বাক্সগুলির একটিতে ক্লিক করুন।
- ডায়ালগ উইন্ডোতে, কাস্টম ট্রেস এর ট্রেস টাইপ এবং
splash_screen_traceট্রেস নামটি নির্বাচন করুন।

- Select metric এ ক্লিক করুন, এবং আপনি আপনার ড্যাশবোর্ডে
splash_screen_traceএর সময়কাল যোগ করতে দেখতে পাবেন!
আপনি এই একই ধাপগুলি ব্যবহার করে আপনার পছন্দের অন্যান্য মেট্রিক্স যোগ করতে পারেন যাতে আপনি দ্রুত দেখতে পারেন যে সময়ের সাথে সাথে এবং এমনকি বিভিন্ন রিলিজের সাথেও তাদের কর্মক্ষমতা কীভাবে পরিবর্তিত হয়।

মেট্রিক্স বোর্ড হল আপনার ব্যবহারকারীদের অভিজ্ঞতার মূল মেট্রিক্সের কর্মক্ষমতা ট্র্যাক করার জন্য একটি শক্তিশালী হাতিয়ার । এই কোডল্যাবের জন্য, আপনার কাছে একটি সংকীর্ণ সময়সীমার মধ্যে একটি ছোট ডেটা সেট রয়েছে, তাই আপনি অন্যান্য ড্যাশবোর্ড ভিউ ব্যবহার করবেন যা আপনাকে বৈশিষ্ট্য রোলআউটের কর্মক্ষমতা বুঝতে সাহায্য করবে।
৮. আপনার বৈশিষ্ট্যটি চালু করুন
এখন আপনি আপনার মনিটরিং সেট আপ করেছেন, আপনি আগে সেট আপ করা Firebase Remote Config change ( seasonal_image_url) চালু করতে প্রস্তুত।
পরিবর্তনটি চালু করতে, আপনাকে Firebase কনসোলের রিমোট কনফিগ পৃষ্ঠায় ফিরে যেতে হবে এবং আপনার টার্গেটিং অবস্থার ব্যবহারকারীর শতাংশ বৃদ্ধি করতে হবে। সাধারণত, আপনি ব্যবহারকারীদের একটি ছোট অংশের জন্য নতুন বৈশিষ্ট্যগুলি চালু করবেন এবং যখন আপনি নিশ্চিত হবেন যে এতে কোনও সমস্যা নেই তখনই এটি বৃদ্ধি করবেন। তবে, এই কোডল্যাবে, আপনিই অ্যাপটির একমাত্র ব্যবহারকারী, তাই আপনি শতাংশটি 100% এ পরিবর্তন করতে পারেন।
- পৃষ্ঠার উপরে " শর্তাবলী" ট্যাবে ক্লিক করুন।
- আপনার আগে যোগ করা
Seasonal image rolloutঅবস্থায় ক্লিক করুন। - শতকরা হার ১০০% এ পরিবর্তন করুন।
- শর্ত সংরক্ষণ করুন ক্লিক করুন।
- পরিবর্তনগুলি প্রকাশ করুন-এ ক্লিক করুন এবং পরিবর্তনগুলি নিশ্চিত করুন।

অ্যান্ড্রয়েড স্টুডিওতে ফিরে, নতুন বৈশিষ্ট্যটি দেখতে আপনার এমুলেটরে অ্যাপটি পুনরায় চালু করুন। স্প্ল্যাশ স্ক্রিনের পরে, আপনি নতুন খালি অবস্থা প্রধান স্ক্রিনটি দেখতে পাবেন!

৯. কর্মক্ষমতা পরিবর্তন পরীক্ষা করুন
এবার Firebase কনসোলে Performance ড্যাশবোর্ড ব্যবহার করে স্প্ল্যাশ স্ক্রিন লোডিংয়ের পারফরম্যান্স পরীক্ষা করা যাক। কোডল্যাবের এই ধাপে, আপনি পারফরম্যান্স ডেটা দেখার জন্য ড্যাশবোর্ডের বিভিন্ন অংশ ব্যবহার করবেন।
- প্রধান ড্যাশবোর্ড ট্যাবে, ট্রেস টেবিলে স্ক্রোল করুন, তারপর কাস্টম ট্রেস ট্যাবে ক্লিক করুন। এই টেবিলে, আপনি আগে যোগ করা কাস্টম কোড ট্রেস এবং কিছু অপ্রচলিত ট্রেস দেখতে পাবেন।
- এখন যেহেতু আপনি নতুন বৈশিষ্ট্যটি সক্ষম করেছেন, কাস্টম কোড trace
splash_seasonal_image_processingসন্ধান করুন, যা চিত্রটি ডাউনলোড এবং প্রক্রিয়া করতে সময় নেয় তা পরিমাপ করে। ট্রেসের সময়কাল মান থেকে, আপনি দেখতে পাচ্ছেন যে এই ডাউনলোড এবং প্রক্রিয়াকরণে উল্লেখযোগ্য পরিমাণ সময় লাগে।

- যেহেতু আপনার কাছে
splash_seasonal_image_processingএর জন্য ডেটা আছে, তাই আপনি ড্যাশবোর্ড ট্যাবের উপরে আপনার মেট্রিক্স বোর্ডে এই ট্রেসের সময়কাল যোগ করতে পারেন।
আগের মতোই, খালি Select a metric বাক্সগুলির একটিতে ক্লিক করুন। ডায়ালগ উইন্ডোতে, ট্রেস টাইপ Custom traces এবং ট্রেস নাম splash_seasonal_image_processing নির্বাচন করুন। অবশেষে, মেট্রিক্স বোর্ডে এই মেট্রিক যোগ করতে Select metric এ ক্লিক করুন।

- পার্থক্যগুলি আরও নিশ্চিত করার জন্য, আপনি
splash_screen_traceএর ডেটাটি ঘনিষ্ঠভাবে দেখতে পারেন। মেট্রিক্স বোর্ডেsplash_screen_traceকার্ডে ক্লিক করুন, তারপর View metric details এ ক্লিক করুন।

- বিস্তারিত পৃষ্ঠায়, আপনি নীচের বাম দিকে বৈশিষ্ট্যের একটি তালিকা দেখতে পাবেন, যার মধ্যে আপনার আগে তৈরি করা কাস্টম বৈশিষ্ট্যও অন্তর্ভুক্ত থাকবে। ডানদিকে প্রতিটি মৌসুমী ছবির URL-এর স্প্ল্যাশ স্ক্রিন সময়কাল দেখতে কাস্টম বৈশিষ্ট্য
seasonal_image_url_attributeক্লিক করুন:

- আপনার স্প্ল্যাশ স্ক্রিনের সময়কালের মান সম্ভবত উপরের স্ক্রিনশটের থেকে কিছুটা আলাদা হবে, তবে যখন ছবিটি URL থেকে ডাউনলোড করা হবে তখন ডিফল্ট চিত্র ("unset" দ্বারা প্রতিনিধিত্ব করা হবে) ব্যবহার করার তুলনায় আপনার সময়কাল বেশি হওয়া উচিত।
এই কোডল্যাবে, এই দীর্ঘ সময়কালের কারণটি সহজবোধ্য হতে পারে, কিন্তু একটি বাস্তব অ্যাপে, এটি এত স্পষ্ট নাও হতে পারে। সংগৃহীত সময়কালের তথ্য বিভিন্ন ডিভাইস থেকে আসবে, যা বিভিন্ন নেটওয়ার্ক সংযোগের পরিস্থিতিতে অ্যাপটি চালাবে এবং এই অবস্থাগুলি আপনার প্রত্যাশার চেয়েও খারাপ হতে পারে। আসুন দেখি যদি এটি একটি বাস্তব বিশ্বের পরিস্থিতি হত তবে আপনি কীভাবে এই সমস্যাটি তদন্ত করতেন।
- ড্যাশবোর্ডের প্রধান ট্যাবে ফিরে যেতে পৃষ্ঠার শীর্ষে পারফরম্যান্সে ক্লিক করুন:

- পৃষ্ঠার নীচের ট্রেস টেবিলে, নেটওয়ার্ক অনুরোধ ট্যাবে ক্লিক করুন। এই টেবিলে, আপনি আপনার অ্যাপ থেকে সমস্ত নেটওয়ার্ক অনুরোধগুলি URL প্যাটার্নে একত্রিত দেখতে পাবেন, যার মধ্যে
images.unsplash.com/**URL প্যাটার্নও অন্তর্ভুক্ত। আপনি যদি এই প্রতিক্রিয়া সময়ের মানটি ছবি ডাউনলোড এবং প্রক্রিয়াকরণের জন্য মোট সময় (অর্থাৎ,splash_seasonal_image_processingট্রেসের সময়কাল) এর সাথে তুলনা করেন, তাহলে আপনি দেখতে পাবেন যে ছবিটি ডাউনলোড করতে প্রচুর সময় ব্যয় হয়।

কর্মক্ষমতা ফলাফল
Firebase পারফর্মেন্স মনিটরিং ব্যবহার করে, নতুন বৈশিষ্ট্যটি সক্ষম করার মাধ্যমে আপনি শেষ ব্যবহারকারীদের উপর নিম্নলিখিত প্রভাব দেখতে পেয়েছেন:
-
SplashScreenActivityব্যয় করা সময় বেড়েছে। -
splash_seasonal_image_processingএর সময়কাল অনেক বেশি ছিল। - ছবিটি ডাউনলোডের জন্য প্রতিক্রিয়া সময় এবং ছবিটির জন্য প্রয়োজনীয় প্রক্রিয়াকরণ সময়ের কারণে বিলম্ব হয়েছিল।
পরবর্তী ধাপে, আপনি বৈশিষ্ট্যটি রোল ব্যাক করে এবং বৈশিষ্ট্যটির বাস্তবায়ন কীভাবে উন্নত করতে পারেন তা চিহ্নিত করে কর্মক্ষমতার উপর প্রভাব কমাতে পারবেন।
১০. বৈশিষ্ট্যটি রোল ব্যাক করুন
স্প্ল্যাশ স্ক্রিনের সময় আপনার ব্যবহারকারীদের অপেক্ষার সময় বাড়ানো কাম্য নয়। রিমোট কনফিগের একটি প্রধান সুবিধা হল আপনার ব্যবহারকারীদের জন্য অন্য সংস্করণ প্রকাশ না করেই আপনার রোলআউট থামাতে এবং বিপরীত করতে সক্ষম। এটি আপনাকে সমস্যাগুলির (যেমন শেষ ধাপে আপনি যে পারফরম্যান্স সমস্যাগুলি আবিষ্কার করেছিলেন) দ্রুত প্রতিক্রিয়া জানাতে এবং অসন্তুষ্ট ব্যবহারকারীর সংখ্যা হ্রাস করতে দেয়।
দ্রুত প্রশমনের জন্য, আপনি রোলআউট পার্সেন্টাইলটি 0 তে পুনরায় সেট করবেন যাতে আপনার সমস্ত ব্যবহারকারী আবার ডিফল্ট চিত্রটি দেখতে পান:
- ফায়ারবেস কনসোলের রিমোট কনফিগ পৃষ্ঠায় ফিরে যান।
- পৃষ্ঠার উপরে "শর্তাবলী" -এ ক্লিক করুন।
- আপনার আগে যোগ করা
Seasonal image rolloutঅবস্থায় ক্লিক করুন। - শতকরা হার ০% এ পরিবর্তন করুন।
- শর্ত সংরক্ষণ করুন ক্লিক করুন।
- পরিবর্তনগুলি প্রকাশ করুন-এ ক্লিক করুন এবং পরিবর্তনগুলি নিশ্চিত করুন।

অ্যান্ড্রয়েড স্টুডিওতে অ্যাপটি পুনরায় চালু করুন, এবং আপনি মূল খালি অবস্থা প্রধান স্ক্রিনটি দেখতে পাবেন:

১১. কর্মক্ষমতা সংক্রান্ত সমস্যাগুলি সমাধান করুন
কোডল্যাবে আপনি আগে আবিষ্কার করেছিলেন যে আপনার স্প্ল্যাশ স্ক্রিনের জন্য একটি ছবি ডাউনলোড করার ফলে আপনার অ্যাপটি ধীরগতির হচ্ছে। ডাউনলোড করা ছবিটি ভালো করে দেখলে আপনি দেখতে পাবেন যে আপনি ছবির আসল রেজোলিউশন ব্যবহার করছেন, যা 2MB এর বেশি ছিল! আপনার পারফরম্যান্স সমস্যার একটি দ্রুত সমাধান হল মান কমিয়ে আরও উপযুক্ত রেজোলিউশনে আনা যাতে ছবিটি ডাউনলোড হতে কম সময় নেয়।
রিমোট কনফিগ মানটি আবার চালু করুন।
- ফায়ারবেস কনসোলের রিমোট কনফিগ পৃষ্ঠায় ফিরে যান।
-
seasonal_image_urlপ্যারামিটারের জন্য Edit আইকনে ক্লিক করুন। - Seasonal ইমেজ রোলআউটের মান
https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640এ আপডেট করুন, তারপর Save এ ক্লিক করুন।
![828dd1951a2ec4a4.png - [অনলাইন].](https://firebase-dot-google-developers.gonglchuangl.net/static/codelabs/feature-rollout-performance/img/828dd1951a2ec4a4.png?authuser=0&hl=bn)
- পৃষ্ঠার উপরে " শর্তাবলী" ট্যাবে ক্লিক করুন।
- Seasonal image rollout এ ক্লিক করুন, তারপর পার্সেন্টাইলটি 100% এ সেট করুন।
- শর্ত সংরক্ষণ করুন ক্লিক করুন।

- পরিবর্তনগুলি প্রকাশ করুন বোতামে ক্লিক করুন।
১২. সমাধানটি পরীক্ষা করুন এবং সতর্কতা সেট আপ করুন
স্থানীয়ভাবে অ্যাপটি চালান
নতুন কনফিগারেশন মানটি একটি ভিন্ন ডাউনলোড ইমেজ URL ব্যবহার করার জন্য সেট করা থাকলে, অ্যাপটি আবার চালান। এবার, আপনার লক্ষ্য করা উচিত যে স্প্ল্যাশ স্ক্রিনে ব্যয় করা সময় আগের তুলনায় কম।

পরিবর্তনগুলির কার্যকারিতা দেখুন
মেট্রিক্স কেমন দেখাচ্ছে তা দেখতে Firebase কনসোলের পারফরম্যান্স ড্যাশবোর্ডে ফিরে যান।
- এবার আপনি বিস্তারিত পৃষ্ঠায় যেতে ট্রেস টেবিল ব্যবহার করবেন। ট্রেস টেবিলের নিচে, কাস্টম ট্রেস ট্যাবে, কাস্টম ট্রেস
splash_seasonal_image_processingএ ক্লিক করে আবার এর সময়কাল মেট্রিকের আরও বিস্তারিত ভিউ দেখতে পারবেন।

- কাস্টম অ্যাট্রিবিউটের ব্রেকডাউন আবার দেখতে custom অ্যাট্রিবিউট
seasonal_image_url_attributeএ ক্লিক করুন। যদি আপনি URL গুলির উপর কার্সার রাখেন, তাহলে আপনি একটি মান দেখতে পাবেন যা হ্রাসকৃত আকারের ছবির জন্য নতুন URL এর সাথে মিলে যায়:https://images.unsplash.com/photo-1552691021-7043334e0b51?w=640(শেষে?w=640সহ)। এই ছবির সাথে যুক্ত সময়কাল মান পূর্ববর্তী ছবির মানের তুলনায় যথেষ্ট কম এবং আপনার ব্যবহারকারীদের জন্য আরও গ্রহণযোগ্য!

- এখন যেহেতু আপনি আপনার স্প্ল্যাশ স্ক্রিনের কর্মক্ষমতা উন্নত করেছেন, আপনি যখন কোনও ট্রেস আপনার সেট করা থ্রেশহোল্ড অতিক্রম করে তখন আপনাকে অবহিত করার জন্য সতর্কতা সেট আপ করতে পারেন। পারফরম্যান্স ড্যাশবোর্ড খুলুন এবং splash_screen_trace এর জন্য ওভারফ্লো মেনু (তিনটি বিন্দু) আইকনে ক্লিক করুন এবং সতর্কতা সেটিংস এ ক্লিক করুন।

- সময়কাল সতর্কতা সক্রিয় করতে টগল ক্লিক করুন। থ্রেশহোল্ড মানটি আপনি যে মানের দেখছেন তার থেকে একটু বেশি সেট করুন যাতে আপনার splash_screen_trace থ্রেশহোল্ড অতিক্রম করে, আপনি একটি ইমেল পাবেন।
- আপনার সতর্কতা তৈরি করতে সংরক্ষণ করুন এ ক্লিক করুন। ট্রেস টেবিলে স্ক্রোল করুন, তারপর কাস্টম ট্রেস ট্যাবে ক্লিক করুন যাতে আপনার সতর্কতা সক্রিয় আছে!

১৩. অভিনন্দন!
অভিনন্দন! আপনি Firebase Performance Monitoring SDK সক্ষম করেছেন এবং একটি নতুন বৈশিষ্ট্যের কর্মক্ষমতা পরিমাপ করার জন্য ট্রেস সংগ্রহ করেছেন! আপনি একটি নতুন বৈশিষ্ট্য চালু করার জন্য মূল কর্মক্ষমতা মেট্রিক্স পর্যবেক্ষণ করেছেন এবং কর্মক্ষমতা সমস্যা আবিষ্কৃত হলে দ্রুত প্রতিক্রিয়া জানিয়েছেন। রিমোট কনফিগের মাধ্যমে কনফিগারেশন পরিবর্তন করার ক্ষমতা এবং রিয়েল টাইমে কর্মক্ষমতা সমস্যাগুলির জন্য মনিটর করার ক্ষমতার মাধ্যমে এটি সম্ভব হয়েছে।
আমরা যা কভার করেছি
- আপনার অ্যাপে Firebase পারফর্মেন্স মনিটরিং SDK যোগ করা হচ্ছে
- একটি নির্দিষ্ট বৈশিষ্ট্য পরিমাপ করার জন্য আপনার কোডে একটি কাস্টম কোড ট্রেস যোগ করা হচ্ছে
- একটি নতুন বৈশিষ্ট্য নিয়ন্ত্রণ/প্রচারের জন্য একটি রিমোট কনফিগ প্যারামিটার এবং শর্তসাপেক্ষ মান সেট আপ করা হচ্ছে
- রোলআউটের সময় সমস্যাগুলি সনাক্ত করতে পারফরম্যান্স মনিটরিং ড্যাশবোর্ড কীভাবে ব্যবহার করবেন তা বোঝা
- আপনার অ্যাপের পারফর্ম্যান্স আপনার সেট করা সীমা অতিক্রম করলে আপনাকে অবহিত করার জন্য পারফর্ম্যান্স সতর্কতা সেট আপ করা