১. সংক্ষিপ্ত বিবরণ
ASP.NET Core হলো C# প্রোগ্রামিং ভাষা ব্যবহার করে আধুনিক ক্লাউড-ভিত্তিক ও ইন্টারনেট-সংযুক্ত অ্যাপ্লিকেশন তৈরির একটি নতুন ওপেন-সোর্স এবং ক্রস-প্ল্যাটফর্ম ফ্রেমওয়ার্ক।
এই ল্যাবে, আপনি অ্যাপ ইঞ্জিন ফ্লেক্সিবল এনভায়রনমেন্টে একটি সাধারণ ASP.NET Core অ্যাপ ডেপ্লয় করবেন। এই কোডল্যাবটি ‘Build and launch ASP.NET Core app from Google Cloud Shell’ কোডল্যাবটির উপর ভিত্তি করে তৈরি। এই ল্যাবটি করার আগে আপনি প্রথমে সেই ল্যাবটি করে নিতে পারেন।
গুগল অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনগুলি তৈরি করা, রক্ষণাবেক্ষণ করা এবং আপনার ট্র্যাফিক ও ডেটা স্টোরেজের চাহিদা পরিবর্তনের সাথে সাথে এর পরিধি বাড়ানো সহজ। অ্যাপ ইঞ্জিনের সাথে কোনো সার্ভার পরিচালনা করার প্রয়োজন নেই। আপনি শুধু আপনার অ্যাপ্লিকেশনটি আপলোড করবেন এবং এটি ব্যবহারের জন্য প্রস্তুত হয়ে যাবে।
অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনগুলো আগত ট্র্যাফিকের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে স্কেল করে। অ্যাপ ইঞ্জিন স্বাভাবিকভাবেই লোড ব্যালান্সিং, মাইক্রোসার্ভিস, অথরাইজেশন, SQL ও NoSQL ডেটাবেস, মেমক্যাশ, ট্র্যাফিক স্প্লিটিং, লগিং, সার্চ, ভার্সনিং, রোল আউট ও রোল ব্যাক এবং সিকিউরিটি স্ক্যানিং সমর্থন করে, যার সবগুলোই অত্যন্ত কাস্টমাইজযোগ্য।
অ্যাপ ইঞ্জিনের এনভায়রনমেন্টগুলো— স্ট্যান্ডার্ড এনভায়রনমেন্ট এবং ফ্লেক্সিবল এনভায়রনমেন্ট— C#, Java, Python, PHP, Node.js, Go সহ আরও অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজ সাপোর্ট করে। এই দুটি এনভায়রনমেন্ট ব্যবহারকারীদের তাদের অ্যাপ্লিকেশনের আচরণের ক্ষেত্রে সর্বোচ্চ নমনীয়তা দেয়, কারণ প্রতিটি এনভায়রনমেন্টেরই নির্দিষ্ট কিছু সুবিধা রয়েছে। আরও তথ্যের জন্য, “Choosing an App Engine Environment” পড়ুন।
আপনি যা শিখবেন
- একটি সাধারণ ASP.NET Core অ্যাপকে কীভাবে ডকার কন্টেইনার হিসেবে প্যাকেজ করবেন।
- অ্যাপ ইঞ্জিনে কীভাবে একটি সাধারণ ASP.NET Core অ্যাপ ডেপ্লয় করবেন।
আপনার যা যা লাগবে
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
- একটি ব্রাউজার, যেমন ক্রোম বা ফায়ারফক্স
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
গুগল ক্লাউড প্ল্যাটফর্মের সাথে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
২. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না, এবং আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করার পর পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়। - তৃতীয় আরেকটি ভ্যালু আছে, যা হলো প্রজেক্ট নম্বর এবং কিছু এপিআই এটি ব্যবহার করে। এই তিনটি ভ্যালু সম্পর্কে আরও জানতে ডকুমেন্টেশন দেখুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর যাতে কোনো বিলিং না হয়, সেজন্য রিসোর্সগুলো বন্ধ করতে কোডল্যাবের শেষে দেওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
ক্লাউড শেল সক্রিয় করুন
- ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন।
.

আপনি যদি আগে কখনো ক্লাউড শেল চালু না করে থাকেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন (নিচে দেওয়া আছে) আপনার সামনে আসবে। যদি তাই হয়, তাহলে 'Continue'-তে ক্লিক করুন (এবং আপনি এটি আর কখনো দেখতে পাবেন না)। একবারের জন্য আসা সেই স্ক্রিনটি দেখতে এইরকম:

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই শুধুমাত্র একটি ব্রাউজার বা আপনার ক্রোমবুক দিয়ে করা সম্ভব।
ক্লাউড শেলে সংযুক্ত হওয়ার পর আপনি দেখতে পাবেন যে, আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।
- আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
কমান্ড আউটপুট
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project
কমান্ড আউটপুট
[core] project = <PROJECT_ID>
যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:
gcloud config set project <PROJECT_ID>
কমান্ড আউটপুট
Updated property [core/project].
৩. ক্লাউড শেলে একটি ASP.NET Core অ্যাপ তৈরি করুন
ক্লাউড শেল প্রম্পটে, ইনস্টল করা .NET SDK-গুলোর তালিকা দেখে আপনি যাচাই করতে পারেন যে dotnet কমান্ড লাইন টুলটি আগে থেকেই ইনস্টল করা আছে কিনা:
dotnet --list-sdks
এরপরে, netcoreapp3.1 টার্গেট ফ্রেমওয়ার্ক সহ একটি নতুন স্কেলেটন ASP.NET Core ওয়েব অ্যাপ তৈরি করুন:
dotnet new mvc -o HelloWorldAspNetCore -f netcoreapp3.1
এটি একটি প্রজেক্ট তৈরি করবে এবং এর ডিপেন্ডেন্সিগুলো রিস্টোর করবে। আপনি নীচের মতো একটি মেসেজ দেখতে পাবেন।
Restore completed in 11.44 sec for HelloWorldAspNetCore.csproj.
Restore succeeded.
৪. ASP.NET Core অ্যাপটি চালান।
আমরা আমাদের অ্যাপটি চালানোর জন্য প্রায় প্রস্তুত। অ্যাপ ফোল্ডারটিতে যান।
cd HelloWorldAspNetCore
অবশেষে, অ্যাপটি চালান।
dotnet run --urls=http://localhost:8080
অ্যাপ্লিকেশনটি ৮০৮০ পোর্টে শোনা শুরু করে।
Hosting environment: Production
Content root path: /home/atameldev/HelloWorldAspNetCore
Now listening on: http://[::]:8080
Application started. Press Ctrl+C to shut down.
অ্যাপটি চালু আছে কিনা তা যাচাই করতে, উপরের ডানদিকে থাকা ওয়েব প্রিভিউ বোতামে ক্লিক করুন এবং 'পোর্ট ৮০৮০-এ প্রিভিউ' নির্বাচন করুন।

আপনি ডিফল্ট ASP.NET Core ওয়েবপেজটি দেখতে পাবেন:

অ্যাপটি চালু আছে কিনা তা যাচাই করার পর, অ্যাপটি বন্ধ করতে Ctrl+C চাপুন।
৫. ASP.NET Core অ্যাপটি প্রকাশ করুন
এখন, dotnet publish কমান্ড ব্যবহার করে অ্যাপটি পাবলিশ করুন, এতে একটি স্বয়ংসম্পূর্ণ ডিএলএল (DLL) ফাইল পাওয়া যাবে।
dotnet publish -c Release
publish চালালে কিছু বার্তা প্রদর্শিত হয় এবং প্রক্রিয়াটির শেষে একটি সফলভাবে পাবলিশ হওয়া ডিএলএল (DLL) দেখা যায়।
...
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/HelloWorldAspNetCore.Views.dll
HelloWorldAspNetCore -> /home/atameldev/HelloWorldAspNetCore/bin/Release/netcoreapp3.1/publish/
৬. অ্যাপ ইঞ্জিন ফ্লেক্সিবল-এর জন্য app.yaml তৈরি করুন।
app.yaml ফাইলটি বর্ণনা করে কীভাবে অ্যাপটিকে অ্যাপ ইঞ্জিনে, এক্ষেত্রে অ্যাপ ইঞ্জিন ফ্লেক্সিবল এনভায়রনমেন্টে, ডেপ্লয় করতে হবে।
প্রথমে, publish ফোল্ডারে যান। এটি bin/Release ফোল্ডারের অধীনে থাকা উচিত, তবে এর সঠিক পথটি .NET-এর সংস্করণের উপর নির্ভর করে।
cd bin/Release/netcoreapp3.1/publish/
publish ফোল্ডারের ভিতরে একটি app.yaml ফাইল তৈরি করুন:
cat <<EOT >> app.yaml
env: flex
runtime: aspnetcore
EOT
লক্ষ্য করুন app.yaml ফাইলে এনভায়রনমেন্ট হিসেবে flex এবং রানটাইম হিসেবে aspnetcore নির্দিষ্ট করা হয়েছে।
৭. অ্যাপ ইঞ্জিন ফ্লেক্সিবলে স্থাপন করুন
আপনি gcloud ব্যবহার করে App Engine flexible-এ আপনার অ্যাপ ডেপ্লয় করার জন্য প্রস্তুত। publish ডিরেক্টরির ভিতরে, নিম্নলিখিত কমান্ডটি চালান:
gcloud app deploy --version v0
ডেপ্লয়মেন্টের সময়, আপনাকে আপনার অ্যাপ্লিকেশনের জন্য একটি অঞ্চল বেছে নিতে বলা হতে পারে। এমন একটি অঞ্চল বেছে নিন যেখানে আপনি আপনার অ্যাপটি চালাতে চান।
Please choose a region for your application. After choosing a region,
you cannot change it. Which region would you like to choose?
[1] europe-west (supports standard and flexible)
[2] us-central (supports standard and flexible)
[3] us-east1 (supports standard and flexible)
[4] asia-northeast1 (supports standard and flexible)
[5] cancel
এটি ক্লাউডে আপনার অ্যাপ্লিকেশনের জন্য একটি ইমেজ তৈরি করবে, সেই ইমেজটি গুগল কন্টেইনার রেজিস্ট্রি-তে সেভ করবে এবং অ্যাপ ইঞ্জিন-এ ডেপ্লয় করবে। ডেপ্লয়মেন্ট চলাকালীন, আপনি কন্টেইনার ইমেজটি তৈরি হতে দেখতে পারবেন:
Operation completed over 1 objects/571.8 KiB.
BUILD
Step #0: Pulling image: gcr.io/gcp-runtimes/aspnetcorebuild@sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb
Step #0: sha256:d7b7975acb374fc3a9655a4e529993e6270cfa78023885684626528bc379f8eb: Pulling from gcp-runtimes/aspnetcorebuild
সবশেষে, আপনি দেখবেন যে অ্যাপটি ডেপ্লয় করা হয়েছে।
...
Deployed service [default] to [https://<project-id>.appspot.com]
অ্যাপ্লিকেশনটি ডেপ্লয় করার পর, আপনার ওয়েব ব্রাউজারে http://<project-id>.appspot.com ইউআরএলটি খুলে এটি ভিজিট করুন।
আপনি একটি নতুন ট্যাবে ডিফল্ট ASP.NET Core ওয়েবপেজটি দেখতে পাবেন।

আপনি ক্লাউডে আপনার জন্য তৈরি করা কন্টেইনার ইমেজটিও দেখতে পারেন। ক্লাউড কনসোলে, কন্টেইনার রেজিস্ট্রি > ইমেজ-এ যান এবং তারপরে অ্যাপইঞ্জিন ফোল্ডারে, আপনি আপনার অ্যাপ্লিকেশনের ইমেজটি দেখতে পাবেন।

৮. আপনার পরিষেবার একটি নতুন সংস্করণ স্থাপন করুন
এক পর্যায়ে, আপনার প্রোডাকশনে ডেপ্লয় করা অ্যাপ্লিকেশনটিতে বাগ ফিক্স বা অতিরিক্ত ফিচারের প্রয়োজন হবে। আপনার ব্যবহারকারীদের কোনো ক্ষতি না করেই প্রোডাকশনে একটি নতুন ভার্সন ডেপ্লয় করতে অ্যাপ ইঞ্জিন আপনাকে সাহায্য করবে।
প্রথমে, অ্যাপ্লিকেশনটি পরিবর্তন করা যাক। ক্লাউড শেল থেকে কোড এডিটরটি খুলুন।

HelloWorldAspNetCore এর Views/Home ফোল্ডারের অধীনে থাকা Index.cshtml এ যান এবং ডিফল্ট বার্তাটি পরিবর্তন করে এটি দিন:
Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core on Google Cloud Platform!
পরিবর্তনগুলি সংরক্ষণ করুন এবং তারপর ক্লাউড শেলে ফিরে যান। HelloWorldAspNetCore, একটি স্বয়ংসম্পূর্ণ ডিএলএল (DLL) পেতে অ্যাপটি পাবলিশ করুন।
dotnet publish -c Release
প্রকাশ ডিরেক্টরিতে যান।
cd bin/Release/netcoreapp3.1/publish/
আপনি এখন আপনার অ্যাপের একটি নতুন সংস্করণ (এই ক্ষেত্রে v1 ) স্থাপন করতে পারেন।
gcloud app deploy --version v1
একবার এটি ডেপ্লয় করা হয়ে গেলে, আপনি গুগল ক্লাউড কনসোলের অ্যাপ ইঞ্জিন ভার্সন সেকশনে গিয়ে আপনার অ্যাপের নতুন ভার্সনটি দেখতে পারবেন, যা নতুন মেসেজসহ সমস্ত ট্র্যাফিক সার্ভ করছে।

৯. ড্যাশবোর্ড এবং ট্র্যাফিক বিভাজন
অ্যাপ ইঞ্জিনের ড্যাশবোর্ড সেকশনে আপনি আপনার অ্যাপ্লিকেশনের জন্য ল্যাটেন্সি, সিপিইউ ইত্যাদির বেশ কিছু ড্যাশবোর্ড দেখতে পাবেন। সেগুলো নিজে থেকেই ঘুরে দেখুন।

'ভার্সনস' সেকশনের অধীনে আপনি আপনার অ্যাপের ডেপ্লয় করা ভার্সনগুলো দেখতে পাবেন এবং 'ট্র্যাফিক স্প্লিটিং' সেকশনে বিভিন্ন ভার্সনের মধ্যে ট্র্যাফিক ভাগ করতে পারবেন। চলুন, দুটি ভার্সনের মধ্যে ট্র্যাফিক ভাগ করা যাক:

১০. অভিনন্দন!
পরিষ্কার করা
খরচ বাঁচাতে এবং সার্বিকভাবে একজন ভালো ক্লাউড ব্যবহারকারী হতে অ্যাপটি বন্ধ করার সময় এসেছে।
অ্যাপ ইঞ্জিনের ভার্সন সেকশনে যান।

সংস্করণটি নির্বাচন করুন এবং এটি বন্ধ করুন।

সংস্করণটি বন্ধ করা হলে, সহায়ক ইনস্ট্যান্সগুলো মুছে ফেলা হবে এবং আপনি দেখবেন ইনস্ট্যান্স সংখ্যা কমে শূন্য হয়ে গেছে।

আমরা যা আলোচনা করেছি
এই তো! আপনি একটি ASP.NET Core অ্যাপ তৈরি করেছেন, সেটিকে একটি ডকার কন্টেইনার হিসেবে প্যাকেজ করেছেন এবং Google App Engine Flexible-এ ডেপ্লয় করেছেন।
- একটি সাধারণ ASP.NET Core অ্যাপকে কীভাবে ডকার কন্টেইনার হিসেবে প্যাকেজ করবেন।
- অ্যাপ ইঞ্জিনে কীভাবে একটি সাধারণ ASP.NET Core অ্যাপ ডেপ্লয় করবেন।
পরবর্তী পদক্ষেপ
- গুগল ক্লাউড প্ল্যাটফর্মে উইন্ডোজ সম্পর্কে আরও জানুন।
- গুগল ক্লাউড প্ল্যাটফর্মে .NET সম্পর্কে আরও জানুন।
- গুগল ক্লাউড প্ল্যাটফর্মে SQL সার্ভার সম্পর্কে আরও জানুন।
- ভিজ্যুয়াল স্টুডিও-এর জন্য ক্লাউড টুলস সম্পর্কে আরও জানুন।
- পাওয়ারশেলের জন্য ক্লাউড টুলস সম্পর্কে আরও জানুন।
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।