GraphQL Subscriptions ارتباط بلادرنگ در APIهای مدرن!
کاوش در سبک های مختلف معماری API: GraphQL، gRPC، سوکت ها و SOAP
انجام این کار عملکرد و امنیت در مقیاس را مختل می کند، تا زمانی که تیم ها به عقب برگردند و با زحمت آن کد را حذف کنند. بسیار مهم است که رهبری به طور کامل پیاده سازی GraphQL را بخرد، متعهد شود و از همان روز اول پشتیبانی کند. بهینهسازی عملکرددر این بخش، روشهای مختلفی برای بهبود عملکرد API های GraphQL مورد بررسی قرار میگیرد. این شامل کاهش زمان پاسخ و اعمال استراتژیهای مختلف برای کمک به مدیریت حجم بارهای زیاد میشود. اگر پروژهای با تعداد منابع محدود و درخواستهای ساده دارید، REST API انتخاب مناسبی است.
برخلاف GraphQL و gRPC که میتوانند راهحلهای مهمی برای ایجاد API در نظر گرفته شوند، همه جا وجود دارد. با توجه به محبوبیت REST، بسیاری از توسعه دهندگان از قبل با آن آشنا هستند و کار کردن با آن را آسان می دانند. و بنابراین، اگر یک API تجاری برای بسیاری از توسعه دهندگان شخص ثالث ایجاد کنید تا آن را مصرف کنند، ممکن است REST بهترین گزینه برای شما باشد. نظارت و محدود کردن نرخ APIهای مبتنی بر REST در مقایسه با GraphQL آسانتر است زیرا هر منبع معمولاً در پشت یک نقطه پایانی منحصر به فرد قرار دارد. در نتیجه، منابع فردی را نیز می توان به راحتی در پشت یک دیوار پرداخت قفل کرد. بافرهای پروتکل، که gRPC از جعبه خارج میشود، از انواع دادههای بیشتری نسبت به JSON پشتیبانی میکند و به لطف فرمت باینری بهینهشده آن، بسیار سریعتر است.
با شرکت در این دوره، شما نه تنها مهارتهای فنی خود را ارتقا میدهید، بلکه توانایی انجام پروژههای واقعی و کاربردی را نیز به دست خواهید آورد. در دنیای امروز، بهویژه در حوزه مالی و تکنولوژی، اطلاع از قیمتهای لحظهای ارزهای دیجیتال و فیات اهمیتی دوچندان یافته است. در این دوره آموزشی، شما با سه مدل API پرکاربرد و رایج یعنی Socket.IO، GraphQL و gRPC آشنا خواهید شد و یاد میگیرید چگونه از آنها برای دریافت لحظهای اطلاعات استفاده کنید. تمام مطالب این دوره به گونهای طراحی شده است که بتوانید از ابزارها و امکانات رایگان بهره ببرید. کش کردن پاسخهای REST API به دلیل وجود URLهای ایستا بسیار آسانتر است و میتوان از روشهای مختلفی مانند HTTP Caching برای بهینهسازی عملکرد استفاده کرد.
هدف از راهاندازی سایت EngineDevOps.com ، ایجاد مرجعی جامع برای آموزش کوبرنتیز، داکر و ابزارهای DevOps است. ما بر این باوریم که کسب دانش و مهارتهای لازم در این حوزه نه تنها موجب پیشرفت فردی میشود، بلکه بهطور چشمگیری در ارتقاء سطح فناوری و بهینهسازی فرآیندهای کاری در صنایع مختلف تأثیرگذار خواهد بود. در بلوک کد بالا، پیام UserRequest درخواست، پیام UserResponse پاسخ، و GetUser نقطه پایانی API است. در اینجا User همان شی است و در داخل آن فیلدها یا خواصی را که شیء دارد از جمله انواع داده را مشخص می کنیم. این بدان معناست که در هر پرس و جوی که بر روی شی User عمل می کند، تنها فیلدهایی که می توانند ظاهر شوندname و age هستند.
REST API و GraphQL هر دو راهحلهای قدرتمندی برای توسعه APIها هستند، اما هر کدام مزایا و معایب خاص خود را دارند. REST API سادهتر و مناسب برای پروژههای کوچک است، در حالی که GraphQL انعطافپذیری بیشتری دارد و برای پروژههای بزرگتر و پیچیده مناسبتر است. در نهایت، انتخاب بین این دو به نیازهای خاص پروژه شما و سطح پیچیدگی آن بستگی دارد. REST API به دلیل تفکیک منابع و اصول ساده آن، برای پروژههای کوچک و ساده مناسب است. در پروژههای بزرگتر، ممکن است با افزایش تعداد endpointها و پیچیدگی درخواستها، مدیریت API مشکل شود.
سه فناوری محبوب در حال حاضر برای ایجاد APIها GraphQL، gRPC و REST هستند. در این پست، نحوه عملکرد هر یک از جمله مزایا و معایب آنها را بررسی خواهیم کرد. روشهای آزمون برای میکروسرویسها به طور قابلتوجهی با آنهایی که برای برنامههای مونوئیلیک استفاده میشود متفاوت است. ضروری است که رویکردی را اتخاذ کنید که بر آزمون اتوماتیک، شامل آزمونهای واحد و ادغام، تأکید دارد تا اطمینان حاصل شود که تغییرات یا بهروزرسانیها قابلیتهای موجود را تحت تأثیر قرار ندهند. ابزارهایی مانند Postman برای آزمون API و Jest برای آزمون JavaScript میتوانند به طور قابل توجهی فرآیندهای تضمین کیفیت را در توسعه میکروسرویسها بهبود بخشند. REST و GraphQL دو معماری قدرتمند برای توسعه API هستند که هر کدام مزایا و معایب خاص خود را دارند.
یکی از ویژگیهای کلیدی GraphQL، کنترل دقیقتر بر روی دادههای درخواستشده است. این ویژگی باعث میشود دادههای اضافی منتقل نشود و فقط اطلاعات مورد نیاز بازگردانده شود. این رویداد همچنین برای کشف بخشی از برنامه ما که نیاز به بهینه سازی داشت، ارزشمند بود. با این حال، بدون استراتژی امنیتی مخصوص GraphQL ما نمیتوانستیم درک کنیم که کدام کاربر تحت تأثیر این مشکل قرار گرفته است، یا اینکه چگونه آن را تا این حد قاطعانه حل کنیم. با یک نمودار فدرال، APIها یک نمودار داده واحد را نشان می دهند که چندین زیرگراف را ترکیب می کند (و مبهم می کند). اما پذیرش GraphQL شامل چند دام است که میتواند باعث شود پیادهسازیها به اهداف خود نرسند.
کوئریها دادهها را از سرور درخواست میکنند در حالی که mutations دادهها را به سرور ارسال میکنند و دادههای دروازهشده توسط سرور را تغییر میدهند. Subscriptions هنگام تغییر دادهها، معمولاً از طریق Websockets، بهروزرسانیهارا به صورت live دریافت میکنند. در مجموع، GraphQL از زبان هایی مانند جاوا اسکریپت، جاوا، پایتون، روبی، PHP و غیره پشتیبانی می کند. GraphQL یک زبان پرس و جو و زمان اجرا برای ایجاد و اجرای کوئریهای API است. این برنامه توسط تیم فیسبوک در سال 2012 ایجاد شد و در سال 2015 بهصورت منبع باز درآمد. این طرحواره دادهها را در API ارائه میدهد، به کاربران اجازه خواهد داد ساختار داده مورد نیاز خود را مشخص کنند و سرور فقط دادههای درخواستی را برمیگرداند.
GraphQL یک زبان پرسوجو (query language) برای APIهاست که توسط فیسبوک توسعه یافته است. این زبان به توسعهدهندگان اجازه میدهد تنها دادههایی را که نیاز دارند درخواست کنند. برخلاف REST، GraphQL این امکان را به توسعهدهندگان میدهد تا دقیقاً مشخص کنند که چه دادههایی را نیاز دارند. این ویژگی باعث میشود برنامهها انعطاف بیشتری داشته باشند و از بازگشت دادههای غیرضروری جلوگیری شود. GraphQL یک زبان پرس و جو برای APIها و یک Runtime به منظور اجرای پرس و جو برروی داده های موجود است. با استفاده از GraphQL این امکان برای کلاینت فراهم می شود که داده های مورد نیازش را از سرور درخواست کرده و دقیقا همان داده هایی را که نیاز دارد دریافت کند، نه چیزی بیشتر و نه چیزی کمتر.
اگر شما نیاز به انعطافپذیری بیشتر در مورد درخواستها و پاسخهای API خودتون دارید و نمیخواهید over and under fetching داشته باشید. همچنین، اگه به دادههای مشخص خاصی از چندیدن سورس نیاز دارید و میخواهید بیشترین بهرهوری را از دریافت دادهها ببریدGraphQL میتونه گزینهی مناسبی باشه. REST، GraphQL و gRPC سه تکنولوژی محبوب برای توسعه API ها در برنامههای وب مدرن هستن. با این حال، انتخاب یکی از اونها کار سختی هست و هرکدوم ویژگیها و معایب منحصر به فردی دارن که با توجه به نوع اپلیکیشن ما ممکنه انتخاب مناسب یا کاملا نامناسبی باشن. ویژگیهای پیشرفته GraphQLدر این بخش، ویژگیهای پیشرفتهتر GraphQL شامل اشتراکها و دستورالعملها را بررسی خواهیم کرد. اشتراکها امکان برقراری ارتباط در زمان واقعی با سرور را فراهم می کنند، در حالی که دستورالعملها به توسعهدهندگان امکان اعمال قوانین و محدودیتهای مختلف بر روی دادهها را می دهند.
پشتیبانی از GraphQL برای چارچوبهای مختلف وب/برنامه در مقایسه با REST هنوز ضعیف است. اکوسیستم JS بیشترین پشتیبانی را دارد، اما چشم انداز در حال تغییر است و پشتیبانی روز به روز برای سایر زبان ها و چارچوب ها بهبود می یابد. انتخاب بین RESTful و GraphQL بستگی به نیاز پروژه و اهداف توسعهدهندگان دارد. از سوی دیگر، اگر به دنبال کارایی بالا و بارگذاری بهینه دادهها هستید، GraphQL میتواند بهترین انتخاب باشد. APIها (Application Programming Interface) به عنوان پل ارتباطی بین برنامههای نرمافزاری عمل میکنند. آنها به توسعهدهندگان این امکان را میدهند که از قابلیتهای نرمافزارها و سیستمها استفاده کنند.
آنها به استراتژیهای اندیشیدهشدهای نیاز دارند که با بهترین شیوههای فعلی همسو باشد. در این مثال، ما یک سرور سوکت ایجاد می کنیم که به پورت 3000 گوش می دهد و اتصالات مشتری را مدیریت می کند. هنگامی که یک مشتری پیامی را ارسال می کند، سرور آن را دریافت می کند و با یک پیام تأیید پاسخ می دهد. در این مثال ساده، یک طرحواره GraphQL را با یک فیلد hello تعریف می کنیم که یک رشته را برمی گرداند. اگر به دنبال یادگیری تکنولوژیهای مدرن، ساخت پروژههای حرفهای و ورود به حوزهای جذاب و کاربردی هستید، این دوره دقیقاً برای شما طراحی شده است.
GRPC از پخش جریانی full-duplex خارج از جعبه پشتیبانی می کند که آن را برای ویژگی هایی مانند تماس های ویدیویی و صوتی مناسب می کند. GRPC تعادل بار را انجام می دهد تا درخواست های مشتری به طور مساوی در بین سرورها توزیع شود تا از بارگذاری بیش از حد یک سرور خاص جلوگیری شود. معماری میکروسرویسها به عنوان یک رویکرد معماری نوآورانه تعریف میشود که یک برنامه را به مجموعهای از خدمات مستقل و loosely coupled (کمپیوند) سازماندهی میکند. هر میکروسرویس به یک قابلیت تجاری خاص اختصاص دارد و در فرآیند خود عمل میکند و از طریق رابطهای برنامهنویسی کاربردی (APIs) به دیگران ارتباط برقرار میکند. این فلسفه طراحی از توسعه چابک (agile development) پشتیبانی میکند و به تیمهای مختلف اجازه میدهد به سرعت و به طور مستقل نوآوری کنند و در نتیجه زمان کلی پروژه را تسریع میبخشند. در پایان ، بهترین فناوری API برای پروژه خاص شما به آنچه میخواهید به دست آورید بستگی دارد.
در کنار فناوری REST API قدیمی، GraphQL با توانمندسازی برنامهها برای جمعآوری، مزیتهای دگرگونی را ارائه میکند. تمام داده های لازم از طریق یک درخواست API واحد، و برای کنترل مستقیم آن داده ها به جای اتکا به اتصال سرور. در حالی که کش کردن در GraphQL به دلیل استفاده از یک endpoint واحد و پاسخهای متغیر، چالش بیشتری دارد و به استراتژیهای پیشرفتهتر نیاز دارد. با ارائه منابع آموزشی بهروز و فراگیر، شامل مقالات تخصصی، ویدئوهای آموزشی، و دورههای آنلاین، در تلاشیم تا سطح دانش فنی در ایران عزیز را ارتقاء دهیم. هدف ما این است که حرفهایها و تازهواردان به این حوزه را توانمند کنیم تا با ابزارهای مدرن آشنا شوند و در دنیای پیچیده فناوری اطلاعات، مهارتهای خود را تقویت کنند.
این استراتژیها باید به شما کمک کنند تا سفر مدرنسازی API GraphQL شما روانتر شود. نتیجهگیریدر نهایت، با خلاصه کردن نکات کلیدی و اهمیت استفاده از GraphQL برای طراحی و ایجاد API های انعطاف پذیر، مقاله به پایان میرسد.
سرویس های GraphQL بوسیله تعریف Typeها و فیلدهای مربوط به Typeها ایجاد می شود و سپس توابعی را برای هر فیلد در هر Type فراهم می کند. افزودن فیلدها و Typeهای جدید به APIهای GraphQL، تاثیری بر Queryهای موجود ندارد. درحقیقت برنامه ها با یک نسخه از GraphQL API در تعامل هستند و همچنین به راحتی می توانند به ویژگی های جدید بطور پیوسته نیز دسترسی داشته باشند و این موضوع نگهداری کد سمت سرور را راحتتر می کند. بهتر است ابتدا بدانیم که API چیست و چه نقشی در توسعه وبسایتها دارد؟ APIها ستون فقرات ارتباط بین مشتریان و سرورها در دنیای مدرن توسعه وب و موبایل هستند. دو تا از محبوبترین روشها برای مدیریت این ارتباط، API های RESTful و GraphQL هستند. اگرچه هدف هر دو دستیابی به نتایج مشابه (انتقال دادهها) است؛ اما این کار را به روشهای کاملاً متفاوتی انجام میدهند.
کار کردن و ایمن کردن آن هم اکنون و هم در آینده آسانتر است، فوراً سود حاصل از تلاش را به همراه دارد، و مقیاسبندی و رسیدن به اهداف نقشه راه را بسیار آسانتر و سریعتر میکند. GraphQl چیست در عصر مدرن هر روزِ ابزارهای زیادی معرفی میشود که هر کدام میتوانند پروسه ایجاد برنامه های که قصد ایجادشان را داریم تسریع ببخشند . در این دوره قصد دارم ابزاری که این روزها به محبوبیت زیاد رسیدِ و حقاً هم میتوان گفت تکنولوژی بسیار عالیست را به شما آموزش دهم . GraphQl یک زبان Query محسوب میشود که با استفاده از آن میتوانیم api های قابل توسعه تر و قدرتمندتری را نسبت به گذشته به وجود آوریم. راهاندازی سرور GraphQLبرای راهاندازی یک سرور GraphQL، نیاز است که یک فریمورک مناسب را انتخاب کرده و پس از آن، نقاط پایانی GraphQL را پیادهسازی کنید.
خوشبختانه، قبل از این حادثه، پلتفرم مدیریت Inigo GraphQL را برای محافظت از سرورهای GraphQL تولیدی خود مستقر کرده بودیم. ما از معیارهای نظارت بر عملکرد برنامه (APM) خود برای شناسایی محدوده زمانی و رفع سرویس به بار مورد نظر استفاده کردیم. با ابزارهای امنیتی و تحلیلی Inigo، میتوانیم کاربر و فضای کاری را که باعث ترافیک میشوند شناسایی کنیم. GraphQL یک نمایه امنیتی خاص خود را دارد و به یک رویکرد امنیتی نیاز دارد که بتواند تهدیدهایی را که به طور خاص برای سوء استفاده از آسیبپذیریهای GraphQL طراحی شدهاند، خنثی کند. برای ایمن سازی GraphQL، سازمان ها باید به جای آن از روش های مدرنی استفاده کنند که قادر به کشف ترافیک GraphQL و ارائه دید عمیق است که پاسخ های امنیتی بلادرنگ را ممکن می سازد. در یک مثال بسیار رایج، توسعه دهندگانی که بدون آینده نگری کار می کنند، اغلب بدون نیاز به راحتی، دسترسی با کد سخت را به سرورهای GraphQL و حل کننده ها کنترل می کنند.
مکانیزمهای احراز هویت قوی، ترجیحاً از طریق OAuth2 یا JSON Web Tokens (JWT)، باید برای حفاظت از دادههای حساس اعمال شوند. همچنین تأیید و تصفیه تمام ورودیهای دریافتی برای کاهش خطرات مرتبط با نقاط ضعف تزریق (injection vulnerabilities) ضروری است. علاوه بر این، پیادهسازی یک API Gateway میتواند فرآیندهای احراز هویت و اعطای مجوز را در میکروسرویسها تسهیل کند و لایه اضافی از امنیت را فراهم کند. اگر به دنبال یک معماری ساده و کارآمد هستید، REST میتواند انتخاب مناسبی باشد. در صورتی که نیاز به انعطاف بیشتر و بهینهسازی درخواستها دارید، GraphQL گزینه بهتری است.
REST API و GraphQL دو معماری محبوب هستند که هر کدام مزایا و معایب خود را دارند. در این مقاله، به مقایسه عمیق GraphQL و REST API پرداخته و بررسی خواهیم کرد که کدام یک برای پروژه بعدی شما بهتر است. با GraphQL، می توانید محدوده دقیق داده های مورد نیاز در هر نمونه را تعریف کنید. با جلوگیری از ارسال اطلاعات اضافی از سرور به مشتری، برنامه شما عملکرد بهتری دارد. از آنجایی که می توانید چندین فیلد را از منابع مختلف در یک پرس و جو انتخاب کنید، GraphQL نیاز به انجام چندین سفر رفت و برگشت به سرور برای واکشی داده ها برای مشتری شما را از بین می برد. استاندارد تبادل داده بین فرانت اند و بک اند همیشه کمی بحث برانگیز بوده است.
این فناوری، با ارائه راهحلهای مؤثر برای چالشهای رایج API، هم تجربه توسعهدهندگان و هم رضایت کاربران را بهبود میبخشد. تیمهای پلتفرمی که فقط به ابزارهای سنتی مجهز شدهاند، فاقد قابلیت مشاهده هستند تا بفهمند کدام زیرگراف با چه ترافیکی مرتبط است. مسائل مربوط به عملکرد و منابع هدر رفته برای پرداختن به آن بسیار چالش برانگیز خواهد بود که در پشت این معماری فدرال پنهان شده است. به همین دلیل بسیار مهم است که در صورت امکان از ابتدا، منابع، دادهها و بارهای کاری GraphQL را به عنوان بخشی از استقرار سازمان خود فعال کنید. استراتژی به مراتب بهتر این است که به طور کامل به GraphQL متعهد شوید و از همان ابتدا آن را به درستی پیاده سازی کنید. معرفی یک محیط گرین فیلد GraphQL مبتنی بر بهترین شیوه ها، هدیه ای به سازمان آینده شماست.
این همچنین منجر به شکست کمتر کد فرانت اند می شود فقط به این دلیل که یک فیلد جدید به مدل اضافه کرده اید و فراموش کرده اید که کد فرانت اند را به روز کنید. در بالا، ما لیستی از کاربران در پایگاه داده، به ویژه نام و سن آنها را درخواست می کنیم. به عنوان مثال، شی کاربر می تواند فیلدهای دیگری مانند جنسیت یا عنوان شغلی داشته باشد، اما فقط فیلدهایی که ما درخواست کرده ایم برای ما ارسال می شود. در REST، هنگامی که یک نقطه پایانی پرس و جو می شود، تمام داده های پشت آن نقطه پایانی برای شما ارسال می شود و به شما اجازه می دهد تا از طریق آرایه مرتب کنید و فیلدهای خاص مورد نیاز خود را انتخاب کنید. امنیت یک موضوع حیاتی در طراحی و پیادهسازی میکروسرویسها و APIهای GraphQL است.
این شامل تست واحد و ادغام، و همچنین روشهایی برای تولید دادههای موکا میشود تا تستها به صورت موثری اجرا شوند. کلاینت ممکن است دادههای بیشتری از نیاز خود دریافت کند (over-fetching) یا دادههای کافی دریافت نکند و نیاز به درخواستهای اضافی باشد (under-fetching). REST API (Representational State Transfer) یک معماری نرمافزاری برای توسعه APIها است که در دهه 2000 میلادی توسط روی فیلدینگ معرفی شد. این معماری از HTTP به عنوان پروتکل ارتباطی استفاده میکند و بر اساس عملیاتهای CRUD (ایجاد، خواندن، بروزرسانی، حذف) طراحی شده است. برای مثال، زمانی که در حال استفاده است، یک درخواست GET میتواند روی یک URI که معمولاً شبیه /api/users است انجام شود.
مانند آنچه در بالا داریم دنبال میشوند، به این معنی است که فیلدها غیر قابل تهی هستند. زمانی که شیء به روز می شود باید داده هایی برای آنها نوشته شود و فیلدها همیشه مقادیری را هنگام پرس و جو ارائه می دهند. توسعه میکروسرویسها (Microservices) یک رویکرد معماری جدید است که به تیمهای توسعهدهنده امکان میدهد تا اپلیکیشنها را به صورت خدمات کوچک و مستقل... اما بیشترین رشد و میزان محبوبیت GraphQL را میتوانید در نمودار زیر، که نشاندهنده رشد و کسب محبوبیت آن در بازه ۴ ساله ۲۰۱۶ تا ۲۰۲۰ است، مشاهده کنید. بسیاری از شرکتهای بزرگ مانند فیسبوک، توییتر، گیتهاب و شاپیفای از GraphQL برای بهبود کارایی APIهای خود استفاده میکنند.
REST (Representational State Transfer) یک سبک معماری برای طراحی APIهاست که از استانداردهای HTTP بهره میبرد. بخش اعظم وب در رابطه با REST / GraphQL و اندکی در رابطه با WebSocket است. گاهی اوقات ممکن است شانس این را داشته باشیم که با JSON RPC کار کنیم، به هر حال این یک موقعیت مناسب است. در کل، ما نمیتونیم استفاده از REST را به نوع خاصی از برنامهها محدود کنیم. به طورکلی ما در همه مواقع میتوانیم از REST استفاده کنیم مگر درحالتی که اپلیکیشن شما به صراحت نیاز به GraphQL یا gRPC داشته باشه.
این از یک مدل ارتباطی مشتری - سرور بدون حالت تبعیت میکند؛ به این معنی که هر درخواست از مشتری به سرور مستقل است. GraphQL یک زبان پرسوجوی API است که به توسعهدهندگان اجازه میدهد تا تنها دادههای مورد نیاز خود را درخواست کنند. برخلاف روشهای سنتی مثل REST، که دادههای اضافی یا ناکافی ارائه میدهند، و به صورت دقیق پاسخگوی نیازهای کلاینت است. پیادهسازی مکانیزمهای مؤثر نظارت و ثبت گزارش در معماری میکروسرویسها از اهمیت بالایی برخوردار است. استفاده از ابزارهای پیشرفته مانند Kibana برای تجسم و Prometheus برای جمعآوری معیارها میتواند به طور قابل توجهی در پیگیری عملکرد سیستم و رخدادهای خطا در میکروسرویسهای مختلف کمک کند.
از طرف دیگر، اگر نیاز به انعطاف بیشتر در درخواست دادهها و بهینهسازی عملکرد دارید، GraphQL میتواند انتخاب بهتری باشد. بسیاری از شرکتهای بزرگ مانند APIهای خود را به سمت GraphQL منتقل کردهاند. هنگامی که بک اند درخواست را دریافت میکند، آن را پردازش کرده و با پرسوجو از پایگاه داده، انجام محاسبات یا هر اقدام ضروری دیگر، دادهها یا تأیید را به فرانت اند ارسال میکند. سپس frontend این دادهها را میگیرد و صفحه وب را بر این اساس بهروز میکند. فناوریهایی مانند AJAX و چارچوبهایی مانند React یا Angular این تعاملات را روانتر و پویاتر خواهند کرد. در یک آخر هفته اخیر، هشداری دریافت کردیم مبنی بر اینکه حجم بالایی از درخواستها از طریق لایه GraphQL ما ارسال میشود.
برنامه نویسی بازی