پشته فناوری GCP برای برنامه وب NextJS بدون سرور

Summarize this content to 400 words in Persian Lang
من اخیراً یک برنامه وب را به صورت سرتاسری در محل کار توسعه دادم که اولین تلاش من برای توسعه وب کامل پشته بود. در حالی که قصد دارم پست دیگری درباره سفر یادگیری NextJS بنویسم، میخواهم معماری ابری را که برای میزبانی این برنامه با استفاده از Google Cloud تنظیم کردهام به اشتراک بگذارم.
استقرار خودکار
بنابراین ابتدا خط لوله استقرار با استفاده از Cloud Build را داریم که قبلاً در مورد آن نوشته ام. برای این پروژه، من چندین راه اندازی کردم cloudbuild.yaml فایلهای موجود در مخزن github من برای استفاده مؤثر از شاخههای مختلف برای انتشار نسخههای مرحلهبندی و تولید برنامه. برخی از عملیات کلیدی Cloud Build در حال اجرا بود:
برای بازسازی فایل env. به Secret Manager متصل شوید
از آرگومان های ساخت docker برای تنظیم محیط به عنوان مرحله بندی یا تولید استفاده کنید
تصویر داکر را بسازید
آن را به رجیستری کانتینر فشار دهید
در نهایت، کانتینر را در Cloud Run مستقر کنید
توجه اضافی در اینجا وجود دارد که من همچنین از این مرحله برای اتصال یک زیرشبکه VPC استفاده کردم تا تمام ترافیک را به سرویس اجرای ابری هدایت کند، بیشتر در یک ثانیه.
روتر VPC
برای این پروژه، یک الزام برای سرویس پشتیبان استفاده از یک IP ثابت برای فعال کردن تعامل با APIها با استفاده از لیست سفید IP بود. در حالی که من هنوز در دنیای شبکه جدید هستم، توانستم این راهنمای اسناد را دنبال کنم تا یک زیرشبکه راهاندازی کنم تا تمام ترافیک Cloud Run را از طریق آن هدایت کند، و اطمینان حاصل کنم که تمام درخواستهای backend به APIهای خارجی از یک IP ثابت میآیند.
بالانس بار
در مقابل سرویس Cloud Run نشستهام، یک بار متعادلکننده راهاندازی کردم که به ما امکان میدهد ترافیک را رهگیری کنیم و یک IP ثابت از قسمت جلویی تنظیم کنیم و آن را به یک دامنه سفارشی پیوند دهیم.
ورود به سیستم
در نمودار من نشان داده نشده است، خود برنامه NextJS نیز برای ارسال گزارشها به Google Cloud logging با استفاده از کتابخانه مشتری Winston پیکربندی شده است. برای فعال کردن این کار، من مجبور شدم یک حساب سرویس ایجاد کنم که فقط لازم بود Logs Creator نقش و کلید json را در برنامه ذخیره کنید. من از همان تکنیک بازسازی متغیرهای .env برای ذخیره کلید در مدیر مخفی و تزریق آن به برنامه در هنگام استقرار از طریق Cloud Build استفاده کردم.
تماسهای حساب Google تأیید شده
برخی از تماسهای API خارجی که برنامه من انجام میدهد به سایر سرویسهای ابری اجرا میشود. بهجای تنظیم امنیت روی اینها به صورت عمومی، حساب سرویس را اعطا کردم Cloud Run Invoker مجوز و استفاده از کتابخانه Google Auth برای درخواستهای احراز هویت با مجوزهای IAM حساب سرویس، به این معنی که API Cloud Run هدف من میتواند لایه امنیتی اضافی را حفظ کند.
در مجموع، این پروژه یک چالش بزرگ برای یادگیری مفاهیم توسعه وب و نحوه انطباق آن با دانش موجود من از محیط ابری گوگل بود.
من اخیراً یک برنامه وب را به صورت سرتاسری در محل کار توسعه دادم که اولین تلاش من برای توسعه وب کامل پشته بود. در حالی که قصد دارم پست دیگری درباره سفر یادگیری NextJS بنویسم، میخواهم معماری ابری را که برای میزبانی این برنامه با استفاده از Google Cloud تنظیم کردهام به اشتراک بگذارم.
استقرار خودکار
بنابراین ابتدا خط لوله استقرار با استفاده از Cloud Build را داریم که قبلاً در مورد آن نوشته ام. برای این پروژه، من چندین راه اندازی کردم cloudbuild.yaml
فایلهای موجود در مخزن github من برای استفاده مؤثر از شاخههای مختلف برای انتشار نسخههای مرحلهبندی و تولید برنامه. برخی از عملیات کلیدی Cloud Build در حال اجرا بود:
- برای بازسازی فایل env. به Secret Manager متصل شوید
- از آرگومان های ساخت docker برای تنظیم محیط به عنوان مرحله بندی یا تولید استفاده کنید
- تصویر داکر را بسازید
- آن را به رجیستری کانتینر فشار دهید
- در نهایت، کانتینر را در Cloud Run مستقر کنید
توجه اضافی در اینجا وجود دارد که من همچنین از این مرحله برای اتصال یک زیرشبکه VPC استفاده کردم تا تمام ترافیک را به سرویس اجرای ابری هدایت کند، بیشتر در یک ثانیه.
روتر VPC
برای این پروژه، یک الزام برای سرویس پشتیبان استفاده از یک IP ثابت برای فعال کردن تعامل با APIها با استفاده از لیست سفید IP بود. در حالی که من هنوز در دنیای شبکه جدید هستم، توانستم این راهنمای اسناد را دنبال کنم تا یک زیرشبکه راهاندازی کنم تا تمام ترافیک Cloud Run را از طریق آن هدایت کند، و اطمینان حاصل کنم که تمام درخواستهای backend به APIهای خارجی از یک IP ثابت میآیند.
بالانس بار
در مقابل سرویس Cloud Run نشستهام، یک بار متعادلکننده راهاندازی کردم که به ما امکان میدهد ترافیک را رهگیری کنیم و یک IP ثابت از قسمت جلویی تنظیم کنیم و آن را به یک دامنه سفارشی پیوند دهیم.
ورود به سیستم
در نمودار من نشان داده نشده است، خود برنامه NextJS نیز برای ارسال گزارشها به Google Cloud logging با استفاده از کتابخانه مشتری Winston پیکربندی شده است. برای فعال کردن این کار، من مجبور شدم یک حساب سرویس ایجاد کنم که فقط لازم بود Logs Creator
نقش و کلید json را در برنامه ذخیره کنید. من از همان تکنیک بازسازی متغیرهای .env برای ذخیره کلید در مدیر مخفی و تزریق آن به برنامه در هنگام استقرار از طریق Cloud Build استفاده کردم.
تماسهای حساب Google تأیید شده
برخی از تماسهای API خارجی که برنامه من انجام میدهد به سایر سرویسهای ابری اجرا میشود. بهجای تنظیم امنیت روی اینها به صورت عمومی، حساب سرویس را اعطا کردم Cloud Run Invoker
مجوز و استفاده از کتابخانه Google Auth برای درخواستهای احراز هویت با مجوزهای IAM حساب سرویس، به این معنی که API Cloud Run هدف من میتواند لایه امنیتی اضافی را حفظ کند.
در مجموع، این پروژه یک چالش بزرگ برای یادگیری مفاهیم توسعه وب و نحوه انطباق آن با دانش موجود من از محیط ابری گوگل بود.