خطوط لوله، مکانها و برنامهها – اوه من!

روز 1 ساخت و ساز در عموم – من هیجان زده هستم!
سال گذشته، یک برنامه اثبات مفهوم ساختم تا به من کمک کند پاسخهای مصاحبه رفتاری را برنامهریزی کنم، آنها را در دوربین تمرین کنم و ویدیوها را برای بازخورد با دوستان به اشتراک بگذارم. من آن را در آمادهسازی مصاحبه بسیار مفید دیدم، اما وقتی یک کار تمام وقت در آمازون شروع کردم مجبور شدم آن را کنار بگذارم. من اخیراً اخراج شدم و اکنون از زمان اضافی در طول جستجوی شغلم برای ساختن Prepple استفاده میکنم، نسخه آمادهتر برای تولید مفهوم اصلی برنامه من.
من در ملاء عام می سازم زیرا فکر می کنم شفاف بودن در مورد روند توسعه فوق العاده مفید است. بینشهایی را که به دست میآورم و موانعی که در این راه با آنها روبرو میشوم را به اشتراک میگذارم، به این امید که بتواند به دیگران کمک کند. شرم آور است که وقتی برای شرکت ها کار می کنیم، NDAهایی که امضا می کنیم به این معنی است که ما به ندرت می توانیم مبارزات و پیروزی های روزانه خود را به اشتراک بگذاریم. این لحظه نادری در حرفه من است که در آن می توانم همه چیز را در حین آشکار شدن به اشتراک بگذارم، و برای استفاده از آن هیجان زده هستم.
این هفته اسناد طراحی خود را مرتب می کنم و بخش های کلیدی زیرساخت را برای برنامه اصلی تنظیم می کنم.
چیزی که ما با آن شروع می کنیم
برخی از بخشهای چارچوب قبلاً تنظیم شدهاند: من یک خط لوله استقرار کارآمد و دروازه REST API به یک برنامه Java Spring بدون سرور دارم. من همچنین یک لوگوی ناخوشایند دارم و نام دامنه را برای برنامه خود به دست آورده ام.
من از AWS CDK برای تعریف و ارائه معماری خود و AWS CodePipeline برای استقرار استفاده می کنم. AWS CDK یک سیستم زیرساخت بهعنوان کد است که به شما امکان میدهد پشتههای CloudFormation را به زبان دلخواه خود تعریف کنید، و سپس قالبها را تولید و استقرار دهید تا بهطور خودکار منابع AWS مورد نیاز خود را تهیه و به هم متصل کنید.
AWS CodePipeline با GitHub ادغام می شود، به این معنی که زمانی که کد جدید در شاخه هدف مخزن در GitHub ادغام می شود، استقرار از طریق خط لوله به طور خودکار آغاز می شود. خط لوله قالبهای CloudFormation را میسازد، داراییهای کد را آپلود میکند، زیرساخت را فراهم میکند، داراییهای کد را در زیرساخت مستقر میکند، و آزمایشهای از پیش تعریفشده مختلفی را اجرا میکند و تنها در صورتی به مرحله بعدی میرود که همه آزمایشهای مورد نیاز با موفقیت انجام شود. خط لوله من بسیار استاندارد است، با مراحل بتا، گاما و پرود. (برای زمینه بیشتر، این مقاله یک نمای کلی از آنچه که هر مرحله معمولاً شامل می شود ارائه می دهد: https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/. مقاله من از این نظر کمی متفاوت است. مرحله آلفا مستقل و غیرمسدود خواهد بود، اما در پست بعدی به جزئیات بیشتر در مورد استدلال پشت آن خواهم پرداخت.)
من همچنین یک برنامه boilerplate Java Spring دارم که در حال حاضر از طریق یک تابع Lambda اجرا می شود و توسط API Gateway قابل دسترسی است. من آن را تنظیم کرده ام تا بتوانم به روز رسانی ها را به صورت محلی از طریق SAM CLI & Postman آزمایش کنم. در حال حاضر فقط داربست یک برنامه است (یک مسیر احراز هویت نشده، در خدمت “سلام جهان”)، اما این تنها چیزی است که در حال حاضر به آن نیاز دارم.
چه خبر بعدی
در اینجا برنامه بازی من برای شروع است:
بالاترین اولویت: اسناد طراحی. اسناد طراحی منسجم و به خوبی نوشته شده به جلوگیری از خزش ویژگی و تصمیمات “در یک طرفه” (تصمیمات زیرساختی یا ویژگی هایی که خنثی کردن آنها دشوار است) کمک می کند.
بالاترین اولویت بعدی: هشدارهای صورتحساب AWS. قبل از اینکه منابع بیشتری را در حساب Prepple AWS تهیه کنم، یک هشدار صورتحساب و آستانه هزینه تنظیم میکنم. کار از محکم کاری عیب نمیکنه!
هدف گسترش: حداقل نسخه از چند مؤلفه دیگر را که برنامه اصلی به آن نیاز دارد، به کار بگیرید. من دوست دارم تا پایان هفته حداقل یک سرویس احراز هویت، یک سرویس صورتحساب، دریافت ویدیو، و بخش جلویی داشته باشم.
نظر شما در مورد این طرح چیست؟ من دوست دارم هر نظر، بازخورد یا سؤالی را که دارید بشنوم. نظر خود را در زیر بنویسید یا به من پیام دهید!