ایجاد یک وب سایت شمارش معکوس بدون سرور با AWS-یک شیرجه عمیق به neocloudapp.site (یک پروژه ابری در دنیای واقعی)

نحوه استقرار یک سایت رویداد کاملاً بدون سرور ، ایمن و در سطح جهان با استفاده از AWS ، Terraform و بهترین روش های ابر.
مقدمه: چرا من این پروژه را ساختم
به عنوان بخشی از من آموزش معمار راه حل های ابری، من می خواستم یک پروژه در دنیای واقعی بسازم که:
- درک من از معماری AWS را به نمایش می گذارد
- یک مشکل عملی را حل می کند (ترویج یک محصول/رویداد)
- راه حل های بدون سرور ، ایمن و مقیاس پذیر را نشان می دهد
- از زیرساخت ها به عنوان کد (IAC) با Terraform استفاده می کند.
نتیجه؟ یک صفحه فرود آماده تولید در https://neocloudapp.site-برای راه اندازی پورتال مطالعه NeoApp.
بیایید همه آن را خراب کنیم.
پروژه در مورد چیست؟
وب سایت شمارش معکوس رویداد NeoCloud یک صفحه فرود بدون سرور است که به آن داده شده است:
- شمارش معکوس زنده را برای راه اندازی یک پورتال یادگیری ابر (NEOAPP) نمایش دهید.
- داده های ثبت نام را از کاربران علاقه مند جمع کنید.
- ادغام خدمات AWS را با فرمت تمیز و آماده تولید نشان دهید.
- بهترین شیوه ها را در زیرساخت ها به عنوان کد (IAC) ، امنیت و مقیاس پذیری نشان می دهد.
این پروژه بیش از فقط یک تایمر فرم و شمارش معکوس ، به زیرساخت های راه اندازی واقعی آینه می دهد – بدون مهندسی بیش از حد ، بدون هزینه بالا و بدون سرور واحد.
چشم انداز پشت پروژه
“فناوری در حال تحول است – و نئوکلود شما را برای رهبری آینده آماده می کند.”
من سناریویی را تصور می کردم که نئوکلود در حال عرضه یک محصول آموزش فنی – Neoapp بود. ما به یک صفحه فرود ساده و در عین حال حرفه ای نیاز داشتیم:
- پرتاب آینده را اعلام کنید
- ایمیل های لیست انتظار را جمع آوری کنید
- در دسترس ، امن و مدرن باشید
معماری
[ACM SSL for HTTPS]|
[API Gateway] —> [Lambda (Python)] —> [DynamoDB]|
[SNS Notification]
خدمات ابری استفاده شده و چرا
1. آمازون S3 + Cloudfront
چرا S3؟
آمازون S3 مقرون به صرفه ، قابل اعتماد است و استاتیک را فراهم می کند
قابلیت های میزبانی وب خارج از جعبه. ایده آل برای
سایت های HTML/CSS/JS و با Cloudfront ادغام می شود.
کنترل دسترسی عمومی: سیاست های سطل با دقت پیکربندی شده
تضمین شده است که وب سایت بدون قرار گرفتن در دسترس عموم است
کل حساب AWS.
خطوط ابری اضافه می کند:
- عملکرد جهانی CDN
- HTTPS با گواهینامه های ACM SSL
چرا Cloudfront؟
به عنوان یک CDN جهانی ، CloudFront محتوای نزدیک به کاربران را ذخیره می کند ،
کاهش تأخیر و بهبود عملکرد. همچنین اضافه می کند
لایه اضافی امنیت.
2. مسیر آمازون 53 + ACM
تنظیم دامنه سفارشی با DNS Routing و SSL.
چرا مسیر 53؟
AWS مسیر 53 DNS مقیاس پذیر و بسیار در دسترس را ارائه می دهد
خدمات. این یکپارچه با سایر منابع AWS ادغام می شود ،
به خصوص S3 ، Cloudfront و ACM.
چرا ACM؟ مدیر گواهی AWS به ما اجازه می دهد تا تهیه کنیم و
یک گواهی SSL (HTTPS) را به صورت رایگان وصل کنید ، بسیار مهم است
تضمین داده های کاربر و به دست آوردن اعتماد.
3. API Gateway
چرا: این به عنوان درب جلو لامبدا عمل می کند و نقاط پایانی HTTP را برای تعامل با فرم فراهم می کند. این مجوز ، محدود کردن نرخ و پیکربندی CORS را کنترل می کند.
مزایا:
- دروازه بان و ذخیره سازی
- ادغام بدون درز با لامبدا
4. AWS Lambda (پایتون)
چرا: AWS Lambda بدون مدیریت سرورها کد پس زمینه را اجرا می کند. برای ثبت نام لیست انتظار ، یک عملکرد پایتون لامبدا فرم را پردازش می کند و باعث ذخیره پایگاه داده و اعلان های ایمیل می شود … یعنی
- منطق باطن را کنترل می کند:
- پارس ها ارسالی را تشکیل می دهند
- پس انداز DynamoDB
- اعلان های SNS را تحریک می کند
بدون سرور به معنی:
- بدون مدیریت زیرساخت
- فقط وقتی عملکرد اجرا می شود پرداخت می کند
5. Amazon Dynamodb
-
چرا DynamoDB؟
DynamoDB پایگاه داده NOSQL AWS است ، مناسب برای دسترسی سریع و کم تأخیر. این بدون سرور ، مقیاس خودکار است و به نگهداری صفر نیاز دارد. -
مزایا:
مقیاس به طور خودکار
یکپارچه یکپارچه با لامبدا -
گزینه های دیگر: RDS (برای داده های رابطه ای) یا S3 (برای ذخیره فایل مسطح – اما کمتر پرس و جو).
6. SNS (سرویس اطلاع رسانی ساده)
-
چرا: هنگامی که شخصی فرم را ارسال می کند (به عنوان مثال ، اعلان های ایمیل) هشدارهای در زمان واقعی ارسال می کند.
-
مزایا:
منطق پس زمینه را جداشده می دهد
از مشترکین متعدد پشتیبانی می کند (ایمیل ، پیام کوتاه ، محرک های لامبدا) -
گزینه های دیگر: SES (سرویس ایمیل ساده) برای محتوای ایمیل سفارشی ، یا ادغام SLACK/API برای هشدارهای داخلی.
7. Terraform
-
چرا: زیرساخت ها به عنوان کد (IAC) قوام ، تکرارپذیری و اتوماسیون را تضمین می کند.
-
گزینه های دیگر: AWS CloudFormation (بومی) ، Pulumi (برای کدگذاری IAC در زبانهایی مانند TypeScript/Python).
چرا بدون سرور؟
من به دلایل مختلف معماری بدون سرور را انتخاب کردم:
- مقیاس پذیری: برنامه های بدون سرور به طور خودکار با تقاضا مقیاس می شوند.
- کاهش هزینه: شما فقط هزینه آنچه را که استفاده می کنید پرداخت می کنید – بدون سرورهای بیکار.
- نگهداری کمتر: بدون سرور یا مدیریت سیستم عامل.
- سرعت استقرار: راه اندازی و تکرار آسان تر.
مقیاس پذیری ، در دسترس بودن و امنیت
مقیاس پذیری:
هر لایه بدون سرور است ، به این معنی که مقیاس خودکار بومی است. این یکپارچه بدون مداخله دستی مقیاس می شود.
در دسترس بودن بالا:
میزبان در چندین منطقه AWS با طبیعت توزیع شده S3 ، CRR و Cloudfront. حتی اگر یک منطقه شکست بخورد ، کاربران هنوز هم می توانند به محتوا دسترسی پیدا کنند.
امنیت:
- در حال حاضر نقش ها دسترسی دقیق برای هر مؤلفه را تعریف کنید.
- HTTPS از طریق Cloudfront & ACM انتقال را ایمن می کند.
- لامبدا دارای مجوزهای کم ارزش است.
- هیچ سرور در معرض به معنای سطح حمله کوچکتر است.
گام به گام: چگونه من neocloudapp.site را ساختم (یک صفحه فرود بدون سرور)
این پروژه شامل طراحی ، توسعه و استقرار یک صفحه فرود رویداد بدون سرور در AWS ، کاملاً خودکار با Terraform و با استفاده از HTTPS است. در اینجا نحوه ساخت آن از ابتدا آورده شده است
مرحله 1: یک دامنه خریداری و ثبت شده است
-
عمل: دامنه neocloud.site را از یک ثبت دامنه خریداری کرد
چرا: برای استفاده از URL سفارشی و حرفه ای برای برندسازی و شناخت.
مرحله 2: منطقه میزبان را در مسیر 53 تنظیم کنید
-
عمل:
- یک منطقه میزبان برای neocloud.site در مسیر 53 ایجاد کرد.
- سرورهای نام ثبت من را برای استفاده از مسیر 53 DNS به روز کرد.
چرا: مسیر 53 به عنوان مدیر DNS من عمل می کند و به من اجازه می دهد کنترل کند که چگونه ترافیک به خدمات AWS هدایت می شود.
مرحله 3: از طریق مدیر گواهی AWS (ACM) گواهی SSL درخواست کرد
مرحله 4: کد Frontend را نوشت
-
عمل:
- یک صفحه فرود HTML/CSS با:
- یک بخش قهرمان
- بخش مزایا/ویژگی ها
- فرم ثبت نام لیست انتظار
- پاورقی با انتساب
- پاسخگویی کامل موبایل و جذابیت بصری را تضمین کرد.
-
چرا: این رابط کاربری اصلی و اولین چیزی است که کاربران می بینند. باید سریع ، سبک و مدرن باشد.
مرحله 5: جبهه را با S3 مستقر کرد (میزبان استاتیک)
مرحله ششم: Cloudfront به عنوان لایه CDN + SSL پیکربندی شده است
مرحله 7: دامنه متصل به Cloudfront با مسیر 53 (یک رکورد)
مرحله 8: زیرساخت های باطن برای ارسال فرم ایجاد شده است.
8a دروازه API
8b عملکرد لامبدا
8c جدول دینامودب
8d موضوع SNS
مرحله 9: جبهه یکپارچه با باطن
مرحله 10: اسکریپت های Terraform را برای زیرساخت های کامل نوشت و اعمال کرد
تنظیمات Terraform را نوشت:
- سطل S3 ، توزیع Cloudfront و Route 53 Records را ایجاد کنید
- ارائه Gateway API ، عملکرد لامبدا و نقش های IAM
- DynamoDB ، SNS و ACM را تنظیم کنید
فرار:
`terraform init
terraform plan
terraform apply`
- چرا: Terraform قوام ، تکرارپذیری و کنترل نسخه را در محیط ها تضمین می کند.
مرحله 11: آزمایش نهایی و اشکال زدایی
عمل:
برای اطمینان از https://neocloudapp.site بازدید کنید:
- https کار می کند
- DNS به درستی حل می شود
- صفحه در سطح جهانی از طریق Cloudfront بارگذاری می شود
- فرم به درستی ارسال می شود
- داده ها در DynamoDB ذخیره می شوند
- اعلان ایمیل ایجاد می شود
چرا: آزمایش برای تأیید اعتبار بسیار مهم است که همه چیز قبل از به اشتراک گذاری عمومی یکپارچه کار می کند.
نتیجه گیری:
این پروژه به من تجربه ای در زمینه ساخت یک سایت رویداد درجه یک تولید ، امن و در سطح جهانی در دسترس من داد-همه بدون یک نمونه EC2.
اگر در حال یادگیری AWS هستید یا برای نقش های معمار ابر در دنیای واقعی آماده می شوید ، من به شدت توصیه می کنم چیزی شبیه به این را بسازید.
با تشکر از خواندن!
این مقاله را برای مستند کردن روند من ، برای کمک به دیگران ، نشان دادن مهارت های من و تحکیم آنچه که آموخته ام ، نوشت
بیشتر بخوانید https://github.com/glory-cloud-solution/app-event-countdown-wbsite-