Backend توسعه دهنده ‏ی مدرن در سال 2018

Backend

Backend

Backend توسعه دهنده ‏ی مدرن در سال 2018 ، توسعه‏ ی وب امروزه کاملا متفاوت از چند سال گذشته است؛موارد مختلف بسیاری وجود دارد که می‏تواند به سادگی هر فردی که وارد توسعه‏ ی وب می‏شود را متحیر کند.

این یکی از دلایلی بود که ما تصمیم گرفتیم این راهنماهای تصویری گام به گام که تصویری بزرگتر را نشان داده و برای اینکه به هر فرد ذهنیتی روشن در رابطه با اینکه چه چیزهایی را برای حضور در نقش ‏هایی مشخص در توسعه ‏ی وب باید دنبال کنند تهیه کنیم.

Backend کیست؟

Backend به طور کلی به عمق برنامه ای که در سرور اجرا میشود اشاره میکند که بعضی از افراد آن از آن به عنوان سرور-ساید یا همان “server-side” یاد میکنند. Backend بیشتر روی ارسال اطلاعات صحیح به مرورگر تمرکز میکند . آن تکه ای از یک توده ی یخ شناوری است که زیر سطح آب قرار دارد . چیز های زیادی نیاز دارند که به صورت صحیح ارسال شوند تا front end بتواند آن را نمایش دهد .

ممکن است که از نظر ما گوگل یک موتور جستجوی سر راست باشد . اما آن ها یک ارتش از مهندسین را استخدام کرده اند که مطمئن شوند تمامی قطعاتی که شما آنها را نمیبینید به صورت صحیح کار میکنند با خیر .

می‏توانید نقشه ‏ی دقیق و با جزئیات را در تصویر زیر بیابید، با این حال هر مرحله در تصویر زیر را توضیح خواهم داد.

Backend

Backend

مرحله 1- یک زبان را یاد بگیرید.

هنگامیکه به انتخاب یک زبان می‏رسیم، هزاران گزینه وجود دارد.

من آن‏ها را به دسته ‏هایی تقسیم کرده ‏ام تا تصمیم گیری را برای شما آسان ‏تر کنم.

برای افراد مبتدی که به تازگی در حال ورود به توسعه ‏ی backend هستند، پیشنهاد می‏کنم که هر یک از زبان ‏های اسکریپت نویسی را انتخاب کنید.

چراکه تقاضای بسیاری داشته و به شما این امکان را می‏دهند که به سرعت رشد کنید.

اگر مقداری دانش frontend دارید، احتمالا Node.js را ساده‏ تر خواهید یافت بعلاوه اینکه بازار کار بزرگی برای آن وجود دارد.

اگر از قبل توسعه ‏ی backend کار می‏کردید و برخی زبان‏ های اسکریپت نویسی را می‏شناسید، به شما پیشنهاد می‏دهم زبان اسکریپت نویسی دیگری انتخاب نکرده و یکی از موارد بخش “تابعی” یا “چند پارادایمی” را انتخاب کنید.

برای مثال، اگر از قبل PHP یا Node.js کار می‏کردید، سراغ Python یا Ruby نروید، در عوض Erlang یا Golang را امتحان کنید.

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

مرحله 2- آموخته‏ های خود را تمرین کنید

هیچ روش بهتری از تمرین برای یادگیری وجود ندارد.

هنگامیکه زبان خود را انتخاب کردید و درک پایه از مفاهیم را پیدا کردید، آن‏ها را به کار ببندید.

هر چقدر می‏توانید برنامه ‏های کوچک بسازید. در اینجا چند ایده برای شروع شما آورده شده است.

  • تعدادی فرمان که خود را در حال استفاده از آن‏ها در بش (bash) می‏یابید را پیاده سازی کنید، برای مثال سعی کنید کارکرد ls را پیاده سازی کنید
  •  فرمانی بنویسید که پست ‏های ردیت (reddit) را واکشی و در /r/programming به شکل یک فایل JSON ذخیره کند
  •  فرمانی بنویسید که یک ساختار دایرکتوری به فرمت JSON به شما بدهد، برای مثال jsonify dir-name برای دادن یک فایل JSON به همراه ساختار در dir-name
  •  فرمانی بنویسید که JSON را از مرحله ‏ی بالا خوانده و ساختار دایرکتوری ایجاد کند
  •  به چند مورد از کارها و وظایفی که هر روزه انجام می‏دهید فکر کرده و سعی کنید آن‏ها را ماشینی (اتومات/خودکار) کنید.

مرحله 3- Package Manager (مدیریت پکیج ‏ها) را یاد بگیرید.

هنگامی که مبانی زبان را درک کرده و چند برنامه ‏ی نمونه ساختید، یاد بگیرید که چگونه از package manager برای زبانی که انتخاب کردید استفاده کنید.

package managerها به شما کمک می‏کنند تا از کتابخانه ‏های خارجی در برنامه ‏های خود استفاده کنید و کتابخانه ‏های خود را برای استفاده ‏ی دیگران توزیع کنید.
اگر PHP انتخاب کردید باید Composer را یاد بگیرید، NPM یا Yarn برای Node.js، Pip برای Python و RubyGems برای Ruby وجود دارند.

انتخاب شما هرچه که بوده، بروید و یاد بگیرید چگونه از package manager مربوط به آن استفاده کنید.

مرحله 4- استانداردها و بهترین روش‏ها

هر زبان استانداردها و بهترین روش‏های انجام کارهای خود را دارد.

آن‏ها را برای زبان انتخابی خود مطالعه کنید.

برای مثال، PHP-FIG و PSRها برای PHP. برای Node.js راهنماهای جامعه محور بسیاری وجود دارد و برای زبان‏ های دیگر نیز به همین صورت است.

مرحله 5- امنیت

حتما در رابطه با بهترین روش ‏ها برای امنیت مطالعه کنید.

راهنماهای OWASP را خوانده و مسائل امنیتی مختلف و نحوه‏ ی اجتناب از آن‏ها در زبان انتخابی خود را درک کنید.

مرحله 6- تمرین

حال که مبانی زبان، استانداردها و بهترین روش‏ها، امنیت و نحوه ‏ی استفاده از package manager را می‏دانید، بروید و یک پکیج ایجاد کرده و برای استفاده ‏ی دیگران آن را توزیع کنید، و اطمینان حاصل کنید که از استانداردها و بهترین روش ‏هایی که تا به اینجا یاد گرفته ‏اید استفاده کنید.

برای مثال اگر PHP را انتخاب کرده ‏اید، باید آن را در Packagist منتشر کنید، اگر Node.js را انتخاب کرده‏ اید، باید آن را در بایگانی Npm (Npm registry) منتشر کنید و برای دیگر زبان ‏ها نیز به همین ترتیب.

هنگامیکه آن را انجام دادید، تعدادی پروژه در Github جستجو کرده و تعدادی درخواست (pull request) در برخی پروژه ‏ها باز کنید.

چند ایده برای این کار:

  •  بهترین روش‏هایی که یاد گرفته‏ اید را بازسازی و پیاده سازی کنید.
  •  نگاهی به مسائل باز انداخته و سعی کنید آن‏ها را حل کنید.
  • هر کارکرد اضافی که می‏توانید بیفزایید.

مرحله 7- در رابطه با آزمون بیاموزید

انواع بسیار مختلفی از آزمون برای آزمایش وجود دارد.

به درکی از اینکه اهداف این انواع چیست برسید.

اما در حال حاضر نحوه ‏ی نوشتن آزمون‏ های واحد (Unit) و آزمون‏ های تلفیق (Integration) را در برنامه ‏ی خود بیاموزید.

همچنین، اصطلاحات مختلف آزمایش مانند mocks، stubs و … را درک کنید.

مرحله 8- کاربردی و عملی

برای تمرین، بروید و آزمون‏ های واحد را برای وظایف عملی و کاربردی که تا به اینجا انجام داده‏ اید، به خصوص آنچه در مرحله 6 ساختید بنویسید.

همچنین پوشش آزمون‏ هایی که نوشته ‏اید را یاد آموخته و محاسبه کنید.

مرحله 9- در رابطه با پایگاه داده‏ه ای رابطه ‏ای (Relational Databases) بیاموزید.

بیاموزید که چگونه داده ‏های خود را در پایگاه داده ی رابط ه‏ا حفظ کنید.

پیش از اینکه بروید و ابزاری را برای یادگیری انتخاب کنید، اصطلاحات مختلف پایگاه داده را درک کنید، برای مثال کلید‏ها، اندیس ‏ها، نرمال سازی، المان‏ های چندتایی و … .

در اینجا گزینه ‏های بسیاری وجود دارد.

با این حال اگر یکی را یاد بگیرید، دیگر گزینه ‏ها نسبتا آسان خواهند بود.

آن‏هایی که ممکن است بخواهید یاد بگیرید MySQL، MariaDB ( که تقریبا همان است و شاخه‏ی MySQL است) و PostgresSQL هستند. برای شروع MySQL را انتخاب کنید.

مرحله 10- زمان عملی

زمان آن رسیده که تمام مواردی که تا به اینجا یاد گرفته‏ اید را به کار ببندید.
یک برنامه‏ ی ساده با استفاده از تمام چیزهایی که تا به حال یاد گرفته ‏اید ایجاد کنید.

هر ایده‏ ای را انتخاب کنید، شاید یک برنامه ‏ی وبلاگ نویسی ساده و ویژگی ‏های زیر را در آن پیاده سازی کنید.

  •  حساب‏های کاربری- ثبت نام و ورود
  •  کاربر ثبت شده می‏تواند بلاگ‏ پست ‏هایی ایجاد کند
  •  کاربر باید بتواند تمام بلاگ ‏پست ‏هایی را که ایجاد کرده مشاهده کند
  •  باید بتوانند بلا گ‏پست ‏هایشان را حذف کنند
  •  اطمینان حاصل کنید که کاربر تنها بتواند بلاگ ‏پست ‏های خود و نه دیگران را مشاهده کند
  •  آزمون‏ های واحد/تلفیق را برای برنامه بنویسید
  •  باید اندی س‏ها را برای کوئری ‏ها (جستارها) اعمال کنید. کوئری‏ها را تجزیه و تحلیل کرده تا اطمینان حاصل کنید که اندیس ‏ها در حال استفاده هستند.

مرحله 11- یک فریمورک را بیاموزید

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

هر زبان گزینه ‏های مختلف بسیاری دارد، بروید و ببینید چه گزینه ‏هایی برای زبان انتخابی شما موجود هستند و گزینه ‏ی مربوطه را انتخاب کنید.

اگر PHP انتخاب کردید، به شما پیشنهاد می‏دهم با Laravel یا Symfony پیش بروید و برای ریز فریمورک‏ ها (micro-frameworks)، با Lumen یا Slim پیش بروید.

اگر Node.js را انتخاب کردید، گزینه ‏های مختلف بسیاری وجود دارد اما معروف‏ترین و بارزترین آن‏ها Express.js است.

مرحله 12- زمان عملی

برای بخش عملی این مرحله، برنامه ‏ای که در مرحله 10 ساختید را تبدیل کنید، تا از فریمورکی که انتخاب کردید استفاده کند.

همچنین حتما تمام موارد از جمله آزمون ‏ها را تطابق (port) دهید.

مرحله 13- یک پایگاه داده‏ ی NoSQL (NoSQL Database) یاد بگیرید.

ابتدا اینکه چیستند، چگونه از پایگاه داده‏  های رابطه ‏ای متفاوتند و چرا مورد نیاز هستند را درک کنید.

گزینه‏ های متفاوت بسیاری وجود دارد، کمی تحقیق کرده و نگاهی بیندازید و آن‏ها را به لحاظ ویژگی‏ ها و تفاوت‏ ها مقایسه کنید.

برخی از گزینه‏ های معمول که می‏توانید از بین آن‏ها انتخاب کنید MongoDB، Cassandra، RethinkDB و Couchbase هستند.

اگر باید یکی را انتخاب کنید، با MongoDB پیش بروید.

مرحله 14- ذخیره سازی در حافظه‏ ی نهانی/کَش (Caching)

نحوه‏ ی پیاده سازی caching سطح برنامه در برنامه‏ ی خود را یاد بگیرید.

نحوه ‏ی بکارگیری Redis یا Memcached را درک کرده و caching را در برنامه‏ ای که در مرحله 12 ساختید پیاده سازی کنید.

مرحله 15- ایجاد APIهای RESTful

REST را درک کرده و نحوه ‏ی ساخت APIهای RESTful را یاد بگیرید و اطمینان حاصل کنید که قادرید با فردی مشاجره کنید اگر بگوید که REST تنها برای APIهای HTTP است.

مرحله 16- در رابطه با روش‏های مختلف احراز هویت و صدور مجوز بیاموزید.

در رابطه با اصول مختلف احراز هویت و صدور مجوز بیاموزید.

باید بدانید که چه هستند، تفاوت آن‏ها چگونه است و چه هنگام یکی را بر دیگری ترجیح دارد.

  •  OAuth – Open Authentication (احراز هویت باز)
  •  Basic Authentication (احراز هویت پایه)
  •  Token Authentication (احراز هویت نشانه ‏ای)
  •  JWT – JSON Web Tokens (نشانه ‏های وب JSON)
  •  OpenID

مرحله 17- کارگزاران پیام (Message Brokers)

در رابطه با کارگزاران پیام آموخته و اینکه چه زمان و چرا از آن‏ها استفاده شود را درک کنید.

چندین گزینه وجود دارد اما معروف‏ ترین‏ها RabbitMQ و Kafka هستند.

اگر می‏خواهید یکی را انتخاب کنید، برای این زمان بیاموزید که چگونه از RabbitMQ استفاده کنید.

مرحله 18- موتورهای جستجو

در حالیکه برنامه رشد می‏کند، کوئری‏ های ساده در پایگاه داده‏ ی رابطه ‏ای یا NoSQL باز نخواهند ایستاد و نیاز خواهد بود که از یک موتور جستجو یاری بگیرید.

چندین گزینه وجود دارد، که هر یک تفاوت ‏های خود را دارد.

مرحله 19- نحوه‏ ی استفاده از میان‏بر (Docker) را بیاموزید.

Docker می‏تواند تا حد زیادی درتوسعه به شما کمک کند، خواه کپی و بازسازی محیط یکسانی مانند محصول باشد، یا تمیز نگه داشتن سیستم عامل خود یا تسریع کدنویسی، آزمودن یا استقرار خود.

پاسخ این سوال که “چگونه به من کمک خواهد کرد” را برای جستجو به شما واگذار خواهم کرد. در این مرحله، بروید و نحوه‏ ی استفاده از Docker را یاد بگیرید.

مرحله 20- شناخت و دانش وب سرورها

اگر تا به اینجا پیش آمده ‏اید، احتمالا باید با سرورها در مراحل قبلی دست و پنجه نرم می‏کردید.

این مرحله عمدتا در رابطه با یافتن تفاوت‏ های بین وب سرورهای مختلف، شناخت محدودیت ‏ها و گزینه ‏های مختلف پیکربندی موجود و نحوه‏ ی نوشتن برنامه‏ هایی که با بکارگیری این محدودیت ‏ها به بهترین نحو است.

مرحله 21- نحوه ‏ی استفاده از وب سوکت‏ها (Web Sockets) را بیاموزید

با این حال که احتیاجی نیست، اما داشتن این شناخت و دانش در کمربند ابزار خود سودمند است.

نحوه‏ ی نوشتن برنامه‏ های وب بلادرنگ (real-time) با وب سوکت‏ها را آموخته و چند برنامه‏ ی نمونه با آن بسازید.

می‏توانید آن را در اپلیکیشن وبلاگی که در بالا ساختید برای پیاده سازی بروز رسانی‏ های بلادرنگ در فهرست بلاگ ‏پست‏ ها استفاده کنید.

مرحله 22- GraphQL را بیاموزید

نحوه ‏ی ساخت APIها با GraphQL را بیاموزید. اینکه چگونه از REST متفاوت است و چرا آن را REST 2.0 می‏نامند را درک کنید.

مرحله 23- پایگاه داده ‏های گراف (Graph Databases) را بررسی کنید.

مدل ‏های گراف روشی بسیار انعطاف پذیر برای مدیریت روابط در داده ‏هایتان را نشان می‏دهد، و پایگاه داده ‏های گراف ذخیره سازی سریع و کارآمد، بازیابی و کوئری گرفتن برای آن را فراهم می‏کنند.

نحوه ‏ی استفاده از Neo4j یا OrientDB را یاد بگیرید.

مرحله 24- به جستجو ادامه دهید

هنگامیکه یادگیری و تمرین را شروع کردید، قطعا با مواردی مواجه خواهید شد که در این نقشه پوشش ندادیم.

فقط ذهنی باز و اشتیاق و اشتهایی سالم برای یادگیری موارد جدید داشته باشید.

به خاطر داشته باشید که کلید و شرط لازم تمرین کردن تا جایی است که می‏توانید.

در ابتدا ترسناک تر به نظر خواهد رسید و ممکن است احساس کنید چیزی متوجه نمی‏شوید اما این امری طبیعی است و با گذشت زمان احساس خواهید کرد که در حال بهتر شدن هستید.و با این حرف، این پست به پایان می‏رسد.

Leave a reply:

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.