اولین هکاتون و اولین پست Dev.to من
سلام!
من Tena هستم، با افتخار از جزایر قناری، و میخواستم تجربهام را در اولین هکاتونم با شما به اشتراک بگذارم. همچنین این بهانه عالی برای نوشتن اولین پست من است و به این ترتیب من دو پرنده را با یک سنگ می کشم.
همه چیز با تبلیغاتی در مورد DeveloperWeek شروع شد، من به عنوان یک طرفدار خوب فکر میکردم… «ممم خیلی خوب به نظر میرسد، وقتی تمام شد بررسی میکنم چه چیزی میسازند» اما بعد متوجه شدم که شما فقط میتوانید ثبت نام کنید و شاید کسی به مهارت های شما نیاز دارد، چه کسی می داند!
و اینگونه بود که ناگهان یک روز ایمیلی از دیلن دریافت کردم که به دنبال همکارانی برای ساختن بازی ای بود که در ذهن داشت. من خیلی تعجب کردم چون واقعاً انتظار نداشتم این اتفاق بیفتد.
دیلن ایده بسیار روشنی در مورد نحوه بازی دارد، بنابراین قبل از هر چیز باید دیدگاه او را درک کنیم. بنابراین من نیاز داشتم که تمام ایده های او را روی کاغذ بیاورم (به معنای واقعی کلمه) نه تنها برای اعتبار سنجی، بلکه همچنین برای شناسایی برخی ایرادات احتمالی طراحی. کاری شبیه به یک حرفه ای انجام می دهد:
فقط شوخی کردم، یک ماکت بسیار ساده و با کیفیت پایین ساختم که چند سوال و فکر از آن به وجود آمد.
داشتن چنین مناطق زمانی متفاوت (5± ساعت) به ما این مزیت را می دهد که هنگام کار به صورت موازی، شیفت های طولانی تری داشته باشیم، اما این بدان معناست که ما قبل از اینکه خیلی فنی باشیم، چند مشکل را حل کنیم: ارتباطات ناهمزمان و گردش کار.
برای این کار، دیلن قبلاً یک سرور Discord ایجاد کرده است، جایی که میتوانیم نظرات خود را بنویسیم، ایدهها، سؤالات را به اشتراک بگذاریم یا فقط مشکلات خود را به اشتراک بگذاریم. بعداً متوجه شدم که ما نیز برای همگام سازی خود به نوعی برنامه ریزی نیاز داریم، بنابراین یک پروژه GitHub با یک تابلوی ساده ایجاد کردیم تا وضعیت فعلی را یادداشت کنیم، همچنین آنچه در انتظار بود و انجام شده است و همچنین جایی برای قرار دادن افکارمان. در مورد برخی از ایده ها و بحث در مورد آنها.
در مرحله بعد، ما نیاز به یک استراتژی داشتیم تا حداکثر امتیاز ممکن را به دست آوریم، و به نظر می رسید یکی از مهم ترین بخش ها استفاده از بیشترین ویژگی های موجود در Oracle Cloud بود. ب[u{9}]هیچ یک از ما چیزی در مورد OCI نمی دانستیم! پس وقتی چنین کیک بزرگی برای خوردن دارید چه کار می کنید؟ آسان (یا نه …)، آن را به قطعات تقسیم کنید و … فقط اسناد را بخوانید!
سپس متوجه میشوید که Oracle Cloud بدون شک نه تنها سخاوتمندترین سطح رایگان ارائهدهنده ابر است، بلکه غولپیکری است که هر روز در حال رشد است.
من آن را می دانم است دیدن این حجم عظیم از مستندات بسیار زیاد است، اما یکی از مهمترین ویژگی هایی که یک توسعه دهنده باید داشته باشد انعطاف پذیری است. بنابراین: یکی یکی، آن را بشکنید، از ابتدا شروع کنید و از میانبرها اجتناب کنید توصیه من در این موارد است.
من طبیعت مادر و همه شگفتی های آن را دوست دارم و گاهی اوقات می توان از نحوه حل مشکلات بسیار دشوار او چیزهای زیادی یاد گرفت. در این مورد، من از همان تکنیکی استفاده میکنم که کرکس روپلز انجام میدهد (یا اگر به هر دلیلی از گریفونها خوشتان نمیآید…، شاید جرثقیل معمولی باشد؟): تا جایی که میتوانید بلند پرواز کنید و بر روی منطقهای مورد علاقه بچرخید. در یک سطح بسیار بالا، بنابراین اگر فکر می کنید شایسته است، می توانید عمیق تر بروید.
اسناد را مرور کنید، و بعداً عمیقتر شوید، اگر فکر میکنید برای مورد استفاده شما جالب است، در این شرایط واقعاً آسان است که دچار فلج تجزیه و تحلیل شوید. به این ترتیب متوجه شدم که چه ویژگیهایی میتوانیم از OCI برای پروژه خود استفاده کنیم، و باید بگویم که سخت بود، و شامل ساعتها مطالعه و رفت و برگشت بود، اما برای داشتن یک نمای کلی از بخشی از Oracle ارزشش را داشت. اکوسیستم ابری
چیزی که در مورد Oracle Cloud نمیدانستم این است که، در تجربهام، تا به حال پشتیبانی بهتری ندیدهام. من به جامعه Devrel آنها ملحق شدم و این یک وضعیت در حال تغییر بازی بود. پشتیبانی و مستندات آنها عالی است، اما همچنین قابل توجه است که چگونه میتوانید از چند نمونه برای شروع استفاده کنید، از سادهترین نمونه گرفته تا یک پروژه واقعاً پیچیده، و متوجه میشوید که آنها واقعاً به شما اهمیت میدهند، به خصوص وقتی شروع به استفاده از کارگاههای آنها میکنید. یا فقط خواندن نحوه مستندسازی هر پروژه در هر مرحله.
بعد از آن متوجه شدم که میتوانیم از همه این چیزهای براق استفاده کنیم:
- دروازه API: دروازه کاملاً مدیریت شده برای رابط های HTTP/S تحت کنترل
-
متعادل کننده بار: …
- Container Engine برای Kubernetes: Kubernetes در Oracle Cloud
- Container Registry: خدماتی برای توزیع تصاویر کانتینر
- تحویل ایمیل: ارسال ایمیل را فعال می کند
- توابع: مقیاس پذیر، توابع بدون سرور چند مستاجر بر اساس Fn
- نظارت: معیارهای یکپارچه از همه منابع و خدمات
- مدیر منابع: زیرساخت به عنوان کد با Terraform
- جریان: جمع آوری و پردازش داده ها در مقیاس بزرگ
- اعلان ها: پیام ها را به سیستم های توزیع شده پخش کنید
- Bucket: ذخیره سازی اشیا برای دارایی های رسانه
- WAF: فایروال برنامه های وب (OWASP، DDoS و ACM)
- پایگاه داده ATP: پایگاه داده مستقل برای ماندگاری
با تمام این اطلاعات، زمانی که لوکاس ایده استفاده از Colyseus.io را مطرح کرد، شروع کردم به کار بر روی طراحی راه حل باطن مربوط به پیام ها با استفاده از Nats.io، که برای نیازهای ما مناسب بود* به علاوه همه چیز را بسیار ساده کرد. ! *[Our needs at that time were: Time remaining to develop an MVP, and how to get the most from OCI while developing the game itself.]
حالا بالاخره آماده شدیم! (یا ما فکر می کردیم). دیلن قبلاً روی مشتری کار می کرد، درباره Babylon.js یاد می گرفت و لوکاس قبلاً روی احراز هویت کار می کرد و درباره Colyseus مطالعه می کرد. من میخواستم در مورد چگونگی ارتباط کلاینت و سرور صحبت کنم زیرا قبلاً ایدههایی در مورد چگونگی حل مشکلات رایج مانند پروتکلها، راهحلهای Backend برای پیامرسانی، مقیاسپذیری و در دسترس بودن داشتم. این اولین نگرانی من بود من همیشه یک پسر بکاند بودهام و باید بگویم که من در قسمت جلویی کار میکنم و با اینکه میتوانم React و Angular را انجام دهم، از من چیزی فانتزی نخواهید.
همانطور که آبراهام لینکلن بزرگ گفت:
شش ساعت به من فرصت بده تا یک درخت را قطع کنم و چهار ساعت اول را صرف تیز کردن تبر خواهم کرد.
در حالی که دیلن از ساعات بسیار ارزشمندی از خواب استفاده میکرد و سعی میکرد تا بازی را به خوبی انجام دهد، وقتمان تمام میشد، بنابراین میخواستم روی توسعه تمرکز کنیم، نه روی پلتفرم یا جزئیاتی که میتواند در حین توسعه راهحل ما را آزار دهد. اما برای آن ما نیاز به خودکارسازی تا حد امکان داشتیم، به ویژه هر چیزی که مربوط به استقرار و زیرساخت است.
زمان کار بر روی زیرساخت فرا رسیده بود، ما قبلاً تصمیماتی گرفته بودیم و موافقان و مخالفان را در نظر گرفتیم. من قبلاً با Google Cloud کار کرده ام و مخصوصاً نحوه استفاده آنها از Kubernetes را دوست دارم، بنابراین می خواستم یاد بگیرم که چگونه می توانم از آن در Oracle Cloud استفاده کنم (در صورت امکان از طریق Terraform). من از k8s و Terraform در آزمایشگاه خانگی خود استفاده میکنم، بنابراین راهاندازی زیرساخت برای این پروژه باید آسان باشد، و این به لطف ارائهدهنده OCI Terraform بود.
یک چیز مهم این بود که هر قدمی را که انجام میدادم برای اعضای تیمم مستند کنم، نه تنها برای اعتبارسنجی بلکه برای خود آیندهام، بنابراین یک سند Google (بسیار معمولی/زشت اما کاربردی) ایجاد کردم که در آن لوکاس و دیلن میتوانند پیشرفت را ببینند و به اشتراک بگذارند. افکار آنها بنابراین ما به چیزی شبیه به این ختم میشویم، یک عکس ارزش هزار کلمه را دارد:
مرحله بعدی کار بر روی CD/CI بود، و ما انتخاب کردیم که از GitHub Actions مفید استفاده کنیم که هر بار که تغییری را در شاخه اصلی خود ایجاد می کنیم، تصاویر داکر لازم را در رجیستری کانتینر ما راه اندازی می کند.
اکنون در حال کار بر روی برخی از کلاینتها با استفاده از یک ماشین حالت و در backend هستم و به راههایی فکر میکنم که گردش کار و تجربه توسعهدهندهمان را در حالی که Dylan در حال بهبود بازی است، بهینه کنیم.
به همین ترتیب، اگر کسی علاقه مند باشد، من یک پست در مورد اینکه چگونه این کار را انجام دادم تا هزینه های ابری را به حداقل برسانم و چگونه روی backend کار می کنیم، خواهم نوشت.
ما هنوز ایده های زیادی در مورد چگونگی بهبود آن داریم و خواهیم کرد! این یک پروژه جانبی خنده دار است، و باید اعتراف کنم که اگر به خاطر این هکاتون نبود، هرگز تصور نمی کردم که در عرض 2 هفته چقدر می توانم درباره Oracle Cloud یاد بگیرم. . الان میخوام تا آخر سال گواهینامه OCI رو بگیرم😀.
نکته کلیدی داشتن انگیزه و هدف کوتاه مدت قابل دسترس است.
و این خلاصه ای از 2 هفته کار سخت است که ما را برنده ساخت 🤯! من تعجب کردم و در عین حال متحیر شدم و هنوز هم هستم 😯.
به همه شرکتکنندگان تبریک میگویم، امیدوارم برای شما هم مانند من پربار بوده باشد.
میخواهم از دیلن تشکر کنم که به من این فرصت را داد تا روی بازیاش با هم کار کنیم و البته از برگزارکنندگان، این یک تجربه شگفتانگیز بود.
تذکر ویژه به نیکی چن از Oracle Devrel، حمایت افسانه ای شما برای من بسیار مهم بوده است.
در قسمت بعدی می بینمت!