Go Developer Roadmap part 2

Go Developer Roadmap part 2در این مقاله که سری دوم از مسیری در جهت تبدیل شدن به یک توسعه دهنده گولنگ را نشان می دهد. که یک توسعه دهنده گولنگ باید چه چیز های یاد بگیرد. پس با ما همراه باشید. شما می توایند قسمت اول را از این جا بخوانید.سرفصل بخش اول شامل موارد زیر هستCachingLoggingReal-Time CommunicationAPI ClientsGood to Knowخوشحال میشم اگه چیزی از قلم افتاده توی همین پست برام کامنت کنید.و در ضمن ما رو توی گیت هاب دنبال کنید۱. ابزارهای cachingاولش یه توضیح بدیم که این کش ها کارشون چیه با یه مثالخودِ کلمه‌ی Cache به معنای پنهان کردن یا چیزی است که برای کاربردهای آتی ذخیره و پنهان شده است. مثلاً به غذایی که حیوانات در زمستان ذخیره و پنهان می‌کنند تا بعداً استفاده کنند، Cache گفته می‌شود. اصطلاح کش در دنیای کامپیوتر، همزمان با تلاش برای افزایش کارایی CPU (پردازنده‌های مرکزی کامپیوتر‌ها) به صورت گسترده رواج پیدا کرد.در واقع کش یک لایه ذخیره سازی داده با سرعت بالا است که مجموعه ای از داده ها را ذخیره می کند، با این هدف که پاسخ گویی به درخواست ها با سرعت بیشتری انجام شود. به طور کلی داده ها در کش، در سخت افزار با دسترسی سریع مانند RAM (حافظه با دسترسی تصادفی) ذخیره می شود تا امکان استفاده از داده های کش شده با سرعت بالا فراهم باشد. هدف اولیه Cache افزایش بازده داده ها با کاهش نیاز به دسترسی به لایه ذخیره سازی با سرعت پایین تر(مانند Hard Disk )است. در واقع Cache ها در لایه های مختلفی مانند سیستم عامل ها، لایه های شبکه از جمله NetNews ، تحویل محتوا (CDN) و DNS، برنامه های کاربردی وب و پایگاه های داده استفاده می شود.۱-۱. کتابخانه gcache یک کتابخانه کش برای گولنگ. این کتابخانه از کش ، LFU ، LRU و ARC استفاده می کند.ویژگی های این کتابخانهاز کش ، LFU ، LRU و ARC پشتیبانی می کند.گوروین امن.۱-۲. کتابخانه go-redisنوع امن Redis برای Golang می باشد این کتابخانهویژگی های این کتابخانهRedis 3 commands except QUIT, MONITOR, SLOWLOG and SYNCAutomatic connection pooling with circuit breaker supportPub/SubTransactionsPipeline and TxPipelineScriptingTimeoutsRedis SentinelRedis ClusterCluster of Redis Servers without using cluster mode and Redis SentinelRingInstrumentation۱-۳. کتابخانه gomemcacheنوع memcache برای Golang می باشد این کتابخانهیه تغریفی هم از Memcached داشته باشیم به زبان ساده تر Memcached یک نرم افزار برای انجام عملیات کش روی سرورهای وب سایت های Dynamic هست که باعث میشه از منابعتون بهتر و بهینه تر استفاده کنید . نرم افزار Memcached بصورت Open Source ارائه شده و مکانیزم کش کردن Object ها و به ویژه Query ها رو در Dynamic وب سایت ها بر عهده داره تا سرعتشون رو بالا ببره . با استفاده از Memcached تعداد دفعات دسترسی به پایگاه داده شما کم میشه و سرعت پاسخگویی وب سایت شما بالا می ره . در Memcached مکانیزم هایی برای منقضی شدن Object های کش شده و البته پاسخ های بازگشتی به کاربر دیده شده که اگر محتوایی تغییر می کنه یا نتیجه ای باید تغییر کنه بلافاصله اینکار انجام بشه و نتایج اشتباه به کاربر نمایش داده نشه .۲. ابزار های Logging۲-۱. کتابخانه های نوع Log Frameworksکتابخانه Zapیک سیستم سریع و ساختار ی رو ارایه می کند.در واقع Zap یک رویکرد متفاوت را اتخاذ می کند. این کتابخانه شامل یک رمزگذار JSON است و بر پایه Logger تلاش می کند تا از هر جایی که امکان پذیر باشد از سرریز سریال و تخصیص آن جلوگیری کند.کتابخانه ZeroLogبسته zerolog یک چارچوب سریع و ساده را به خروجی JSON اختصاص می دهد.در واقع API Zerolog به گونه ای طراحی شده است که هم یک تجربه توسعه دهنده عالی داشته باشد و هم عملکرد خیره کننده ای داشته باشد. و همچنین برای ساده نگه داشتن پایه کد فقط روی ورود به سیستم ساختاری کارآمد تمرکز دارد.کمپانی ها و پروژه های که از این کتابخانه استفاده می کنند.NetflixPublicaAlvalorZumatapomeriumAjoCardEurotelArquiveiownCloudSafeCrowUnityProductsupForChange (风变科技)BetMakersHoldaM3, incویژگی های این کتابخانهBlazing fastLow to zero allocationLevel loggingSamplingHooksContextual fieldscontext.Context integrationnet/http helpersJSON and CBOR encoding formatsPretty logging for development۲-۲. ابزارهای Log Management Systemابزار Sentry.ioاین ابزار مانیتورینگ خطا انجام می دهد یعنی خطاها را الویت بندی می کندابزار Loggly.comتجزیه و تحلیل ورود به سیستم و نظارت بر ورود به سیستم و مسائل مربوط به عملکرد را با ردیابی و به یکدیگر سریعتر حل کنید۲-۳. ابزار های نوعDistributed Tracingابزار Jaegerنظارت و عیب یابی در سیستم های پیچیده توزیع شده۳. ابزار Real-Time Communication۳-۱. ابزار Socket.IOدر واقع Socket.IO در واقع یکی از کتابخانه های جاوا اسکریپت است که یک ارتباط دو طرفه (رفت و برگشتی) بین کلاینت و سرور برقرار می کند و از دو قسمت تشکیل می شود! کتابخانه سمت کلاینت که در مرورگر اجرا شده و دیگری ، کتابخانه سمت سرور بر پایه Node.js است که دارای یک API برای ارتباط با یکدیگر هستند.۴. کتابخانه های API ClientsمفوهمREST رست (به انگلیسی REST) مخفف REpresentational State Transfer یکی از محبوب‌ترین استانداردهای معماری API هست که روی فیلدینگ (Roy Fielding) در پایان نامه دکترای خودش معرفی کرد. این استاندارد تشویق میکنه لایه بک‌اند کاملا از فرانت‌اند جدا کنیم، این استاندارد یک سری قوانین وضع کردهبرای اطلاعات بیشتر این مقاله رو بخونید رست VS گراف‌کیوال ۴-۱. کتابخانه Gentlemanاین کتابخانه از اصول توسعه پذیری و ترکیب استفاده می کند تا روشی انعطاف پذیر برای ایجاد آسان لایه های HTTP بر اساس پلاگین های داخلی فراهم کند که می توانید در کلاینت های HTTP ثبت نام کرده و از آن استفاده مجدد کنید.ویژگی های این کتابخانه:Plugin driven architecture.Simple, expressive, fluent API.Idiomatic built on top of net/http package.Context-aware hierarchical middleware layer supporting all the HTTP life cycle.Built-in multiplexer for easy composition capabilities.Easy to extend via plugins/middleware.Ability to easily intercept and modify HTTP traffic on-the-fly.Convenient helpers and abstractions over Go's HTTP primitives.URL template path params.Built-in JSON, XML and multipart bodies serialization and parsing.Easy to test via HTTP mockingSupports data passing across plugins/middleware via its built-in context.Fits good while building domain-specific HTTP API clients.Easy to hack.Dependency free.مفهوم GraphQLگراف‌کیوال یک query language برای API هست. تو سال ۲۰۱۲ توسط فیسبوک ایجاد شد و درسال ۲۰۱۵ به صورت اپن سورس منتشر شد. این نه یک استاندارده نه یک وب سرویس. گراف‌کیوال واسط بین کوئری و دیتاسورس‌های شماست. دیتاسورس شما میتونه دیتابیس یا وب سرویس باشه.برای اطلاعات بیشتر این مقاله رو بخونید رست VS گراف‌کیوال۴-۴. کتابخانه gqlgenیکی از بهترین کتابخوانه های گولنگ می باشد برای کار با گراف کیوال ها&lt;br/&gt;۴-۵. کتابخانه graphql-goیکی دیگر از کتابخوانه های گولنگ می باشد برای کار با گراف کیوال هاویژگی های این کتابخانه:minimal APIsupport for context.Contextsupport for the OpenTracing standardschema type-checking against resolversresolvers are matched to the schema based on method setshandles panics in resolversparallel execution of resolverssubscriptionsیکسری مثال با نحوه کار این ابزار روی گراف کیوال هاtonyghita/graphql-go-example - A more "productionized" version of the Star Wars API example given in this repository.deltaskelta/graphql-go-pets-example - graphql-go resolving against a sqlite database.OscarYuen/go-graphql-starter - A starter application integrated with dataloader, psql and basic authentication.zaydek/graphql-go-walkthrough - A beginner friendly walkthrough for prospective developers.۵. یکسری مفاهیمی که باید بدونید توی کد نویسی یعنی رعایت بشه۵-۱. کتابخانه Validatorکتابخانه ای برای اعتبار سنجی مقادیر فیلد ها و استراکچرهاویژگی های این کتابخانه:Cross Field and Cross Struct validations by using validation tags or custom validators.Slice, Array and Map diving, which allows any or all levels of a multidimensional field to be validated.Ability to dive into both map keys and values for validationHandles type interface by determining it's underlying type prior to validation.Handles custom field types such as sql driver Valuer see ValuerAlias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structsExtraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldErrorCustomizable i18n aware error messages.Default validator for the gin web framework;۵-۲. کتابخانه GJsonاین یک راه سریع و ساده برای به دست آوردن مقادیر از یک سند json را فراهم می کند. دارای ویژگی هایی مانند بازیابی یک خط ، مسیرهای نشانه گذاری نقطه ، تکرار و تجزیه خطوط json است.۵-۳. کتابخانه Authbossاین بسته یک سیستم تأیید اعتبار ماژولار برای وب است.این بسته چندین ماژول دارد که ویژگی های تأیید اعتبار و مجوز را دارد که به طور کلی برای وب سایت ها معمول است به گونه ای که شما می توانید هر تعداد مورد نیاز خود را فعال کنید و سایرین را کنار بگذارید. این کار باعث می شود تا بتوانید احراز هویت را به یک برنامه وصل کنید.۵-۴. کتابخانه Go-Underscoreکتابخانه Underscore.js یکی از کتابخانه های کاربردی JavaScript می باشد که بدون نیاز به توسعه Object های جاوااسکریپت و با استفاده از توابع موجود در آن می توان کدنویسی را بسیار ساده و با سرعت و Performance بهتری انجام داد. در واقع در گولنگ هم ما چنین کتابخانه Go-Underscore داریم.&lt;br/&gt;