نقشه راه توسعه دهنده قسمت دوم

توسط mrbardia72
زمان خواندن 2 دقیقه
نقشه راه توسعه دهنده قسمت دوم

در این مقاله که سری دوم از مسیری در جهت تبدیل شدن به یک توسعه دهنده گولنگ را نشان می دهد. که یک توسعه دهنده گولنگ باید چه چیز های یاد بگیرد. پس با ما همراه باشید. شما می توایند قسمت اول را از این جا بخوانید.

سرفصل بخش اول شامل موارد زیر هست

Caching

Logging

Real-Time Communication

API Clients

Good 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 SYNC

Automatic connection pooling with circuit breaker support

Pub/Sub

Transactions

Pipeline and TxPipeline

Scripting

Timeouts

Redis Sentinel

Redis Cluster

Cluster of Redis Servers without using cluster mode and Redis Sentinel

Ring

Instrumentation

۱-۳. کتابخانه 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 به گونه ای طراحی شده است که هم یک تجربه توسعه دهنده عالی داشته باشد و هم عملکرد خیره کننده ای داشته باشد. و همچنین برای ساده نگه داشتن پایه کد فقط روی ورود به سیستم ساختاری کارآمد تمرکز دارد.

کمپانی ها و پروژه های که از این کتابخانه استفاده می کنند.

Netflix

Publica

Alvalor

Zumata

pomerium

AjoCard

Eurotel

Arquivei

ownCloud

SafeCrow

Unity

Productsup

ForChange (风变科技)

BetMakers

Holda

M3, inc

ویژگی های این کتابخانه

Blazing fast

Low to zero allocation

Level logging

Sampling

Hooks

Contextual fields

context.Context integration

net/http helpers

JSON and CBOR encoding formats

Pretty 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) در پایان نامه دکترای خودش معرفی کرد. این استاندارد تشویق میکنه لایه بک‌اند کاملا از فرانت‌اند جدا کنیم، این استاندارد یک سری قوانین وضع کرده

۴-۱. کتابخانه 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 mocking

Supports 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 هست. تو سال ۲۰۱۲ توسط فیسبوک ایجاد شد و درسال ۲۰۱۵ به صورت اپن سورس منتشر شد. این نه یک استاندارده نه یک وب سرویس. گراف‌کیوال واسط بین کوئری و دیتاسورس‌های شماست. دیتاسورس شما میتونه دیتابیس یا وب سرویس باشه.

۴-۴. کتابخانه gqlgen

یکی از بهترین کتابخوانه های گولنگ می باشد برای کار با گراف کیوال ها<br/>۴-۵. کتابخانه graphql-go

یکی دیگر از کتابخوانه های گولنگ می باشد برای کار با گراف کیوال ها

ویژگی های این کتابخانه:

minimal API

support for context.Context

support for the OpenTracing standard

schema type-checking against resolvers

resolvers are matched to the schema based on method sets

handles panics in resolvers

parallel execution of resolvers

subscriptions

۵. یکسری مفاهیمی که باید بدونید توی کد نویسی یعنی رعایت بشه

۵-۱. کتابخانه 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 validation

Handles type interface by determining it's underlying type prior to validation.

Handles custom field types such as sql driver Valuer see Valuer

Alias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structs

Extraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldError

Customizable i18n aware error messages.

Default validator for the gin web framework;

۵-۲. کتابخانه GJson

این یک راه سریع و ساده برای به دست آوردن مقادیر از یک سند json را فراهم می کند. دارای ویژگی هایی مانند بازیابی یک خط ، مسیرهای نشانه گذاری نقطه ، تکرار و تجزیه خطوط json است.

۵-۳. کتابخانه Authboss

این بسته یک سیستم تأیید اعتبار ماژولار برای وب است.

این بسته چندین ماژول دارد که ویژگی های تأیید اعتبار و مجوز را دارد که به طور کلی برای وب سایت ها معمول است به گونه ای که شما می توانید هر تعداد مورد نیاز خود را فعال کنید و سایرین را کنار بگذارید. این کار باعث می شود تا بتوانید احراز هویت را به یک برنامه وصل کنید.

۵-۴. کتابخانه Go-Underscore

کتابخانه Underscore.js یکی از کتابخانه های کاربردی JavaScript می باشد که بدون نیاز به توسعه Object های جاوااسکریپت و با استفاده از توابع موجود در آن می توان کدنویسی را بسیار ساده و با سرعت و Performance بهتری انجام داد. در واقع در گولنگ هم ما چنین کتابخانه Go-Underscore داریم.