نقشه راه توسعهدهنده بکاند
آیا میدانید اینترنت چگونه به درخواستهای ما پاسخ میدهد؟ ارتباط بر مبنای معماری کلاینتسرور انجام میشود. در معماری فوق، درخواست از طریق پروتکلهای HTTP (یا HTTPS) که لایه کاربرد مبتنی بر TCP/IP است، ارسال شده و پاسخ نیز به همین شکل دریافت میشود. در این میان، سیستمعاملها نقشی کلیدی در ارائه درست صفحات وب دارند. سیستمعامل نرمافزار و سختافزار سیستم شما را مدیریت میکند و بر روند ذخیرهسازی فایلها، مدیریت حافظه و عملیات ورودی و خروجی نظارت میکند.
اکنون که در مورد اینترنت اطلاعات کلی بهدست آوردیم، وقت آن رسیده تا ببینیم یک صفحه وب چگونه کار میکند. همه ما روزانه برای انجام کارهای متنوع به وبسایتهای مختلفی مراجعه میکنیم. فرانتاند و بکاند شالوده و زیرساخت تمامی وبسایتها را شکل دادهاند. تمامی عناصر بصری قابل تعامل با وبسایتها در زیرمجموعه فرانتاند قرار میگیرند، در حالی که تمامی خدمات کاربردی و اطلاعاتی که دریافت میکنید در زیرمجموعه بکاند قرار میگیرند. بهطور معمول، هنگامی که صحبت از خدمات پشتیبانی سایت بهمیان میآید، منظور بیشتر بکاند سایت است، زیرا بخش فرانتاند ماهیتی نیست که نیازمند بهروزرسانیهای مستمر باشد، در حالی که بکاند سایت دائما به ارزیابی نیاز دارد تا وبسایت بتواند بدون مشکل خدمترسانی کند. قبل از آنکه بهشکل عمیق به سراغ مبحث بکاند برویم، بهتر است برخی از مفاهیم زیربنایی فرانتاند که بهعنوان یک توسعهدهنده بکاند باید در مورد آنها اطلاع داشته باشید، یعنی HTML ،CSS و JS را بررسی کنیم.
زبان نشانهگذاری فرامتن HTML سرنام HyperText Markup Language یک استاندارد واحد برای ساخت صفحات وب است. این زبان شامل عناصری است که برای ساخت کارآمد یک صفحه وب استفاده میشود. تمام سرآیندها، پاراگرافها، تصاویر و عناوین اضافهشده به یک صفحه وب همگی مبتنی بر کدهای HTML هستند.
برگههای سبک آبشاری CSS سرنام Cascading Style Sheets برای قالببندی یک سند HTML مورد استفاده قرار میگیرد تا صفحات وب و عناصر درون آن ساختاری جذاب داشته باشند. CSS این قابلیت را دارد تا بهطور همزمان برای قالببندی چند صفحه وب مورد استفاده قرار گیرد. با استفاده از CSS میتوان به روشهای مختلف، عناصر گرافیکی مثل رنگها، فونتها، حاشیهها و غیره را مدیریت کرد.
جاوااسکریپت محبوبترین و سادهترین زبان برنامهنویسی جهان است. جاوااسکریپت برای ساخت صفحات وب پویا و تعاملی استفاده میشود. ترکیب نحوی ساده جاوااسکریپت اجازه میدهد به روشهای مختلف یک متغیر را با استفاده از کلمههای کلیدی var، let و const تعریف کنید، دکمههای واکنشگرا تعریف کنید یا اشیاء درون صفحه را متحرک کنید.
بهطور معمول، یک توسعهدهنده فرانتاند باید شناخت دقیقی درباره مولفههای فوق داشته باشد، اما توسعهدهنده بکاند تنها نیاز دارد اطلاعات اولیهای در مورد مولفههای فوق داشته باشد.
توسعهدهنده بکاند کیست؟
یک توسعهدهنده بکاند (Back-End) فردی است که سرورها، پایگاه دادهها، کدهای زیربنایی سایت و APIها را مدیریت میکند. بهطور خلاصه، فردی است که مسئولیت ذخیره و سازماندهی دادهها بر عهده او است. او باید کدهایی بنویسید که قابلیت تعامل با رابط کاربری را که توسعهدهنده فرانتاند طراحی میکند داشته باشد و در نهایت به مدیریت سمت سرور بپردازد. همانگونه که ممکن است حدس زده باشید، برای ساخت ساختار یک برنامه وب به یک توسعهدهنده بکاند نیاز است. بهعنوان مثال، اگر یک وبسایت تجارت الکترونیک مانند آمازون را مشاهده کنید، فهرست بلندبالایی از محصولاتی را که رابط کاربری نشان میدهد مشاهده میکنید. فهرستی که اطلاعات آن باید در مکانی ذخیره شده باشند. این دادهها در پایگاه دادهای ذخیره میشوند که توسط بکاند مدیریت میشوند. هنگامی که روی محصولی کلیک میکنید تا جزئیات آنرا مشاهده کنید، تمامی اطلاعات موردنیاز از طریق واسط برنامهنویسی کاربردی بکاند واکشی شده و روی صفحهنمایش نشان داده میشود. علاوه بر این، هنگامی که متنی در کادر جستوجوی سایت وارد میکنید، اطلاعات در سمت سرور پردازش شده و نتیجه در قالب یک صفحه وب در اختیارتان قرار میگیرد. تمامی این فرآیندهای اجرایی توسط توسعهدهندگان بکاند کدنویسی میشود.
مهارتهای مورد نیاز برای تبدیل شدن به یک توسعهدهنده بکاند
هنگامی که صحبت از مهارتهای موردنیاز یک توسعهدهنده بکاند بهمیان میآید، افراد باید بهفکر تجربهاندوزی در مورد تخصصهای مختلفی باشند که از مهمترین آنها به موارد زیر باید اشاره کرد:
1. دانش وب سرور
وب سرورها وظیفه اجرای وبسایتها را بر عهده دارند، صفحات وب را ذخیره میکنند، آنها را پردازش میکنند و به درخواست کاربران پاسخ میدهند. یک سرور HTTP شامل مولفههای مختلفی است که قادر به درک دستورات HTTP و آدرسهای اینترنتی است. هنگامی که کاربر درخواستی برای یک وب سرور ارسال میکند، سرور درخواست را در قالب ساختار HTTP دریافت و پردازش کرده و محتوا را از طریق HTTP برای مرورگر ارسال میکند. از سرورهای وب متنباز مطرح در این زمینه باید به Apache و NGINX اشاره کرد.
2. زبانهای برنامهنویسی و چارچوبهای مرتبط با آنها
همه شما با اصطلاح زبان برنامهنویسی آشنا هستید. زبان برنامهنویسی به الگوی ساختارمندی اشاره دارد که اجازه میدهد به زبان کامپیوترها با آنها صحبت کنیم. چارچوبها مجموعهای از کتابخانهها هستند که با هم کار میکنند تا برنامهنویسی را ساده و آسانتر کنند. زبانهای برنامهنویسی ستون فقرات یک صفحه وب هستند. بدون دانش عمیق در مورد زبانهای برنامهنویسی قادر به استفاده درست از چارچوبها نخواهید بود و در نتیجه به یک توسعهدهنده بکاند کاربلد تبدیل نخواهید شد. امروزه زبانهای برنامهنویسی زیادی وجود دارد که میتوانید با کمی تحقیق به سراغ یادگیری یک یا چند مورد از آنها بروید.
جاوااسکریپت همراه با نودجیاس
جاوااسکریپت یکی از پرکاربردترین زبانهای دنیای فناوری اطلاعات است و بد نیست بدانید بهلحاظ محبوبیت یک پله بالاتر از پایتون قرار دارد. اگر علاقهمند به یادگیری این زبان هستید بهتر است کار را با مفاهیم پایه آغاز کنید و سعی کنید وبسایتهای کوچکی بر مبنای آن ایجاد کنید. بهطور کلی، جاوااسکریپت برای ساخت وبسایتهای تعاملی و پویا استفاده میشود. پیشنهاد من این است که اگر علاقهمند به یادگیری جاوااسکریپت هستید، همراه با آن چارچوب Node.JS را بیاموزید تا بتوانید برنامههای مبتنی بر معماری بلادرنگ را توسعه دهید. نودجیاس به شما امکان میدهد جاوااسکریپت را روی سرور اجرا کنید.
پایتون همراه با جنگو
پایتون اگر با جنگو ترکیب شود، به کارآمدترین ابزار برای توسعه وبسایتها تبدیل میشود. پایتون اجازه میدهد با کمترین و خواناترین کدنویسی، برنامههای وب کارآمد و مقیاسپذیری را بنویسید. جنگو امنترین و مقیاسپذیرترین چارچوبی است که یک توسعهدهنده بکاند در اختیار دارد.
پیاچپی همراه با لاراول
پیاچپی یک زبان برنامهنویسی همهمنظوره مناسب توسعه وب است. این زبان، سریع، انعطافپذیر و عملگرا (pragmatic) است و توانایی ساخت وبسایتهای پیچیده یا وبلاگهای ساده را دارد. لاراول یک چارچوب متنباز است که برای ساخت طیف گستردهای از برنامههای کاربردی وب استفاده میشود. لازم به توضیح است که لاراول یک چارچوب سمت سرور است که دادهها را مدیریت میکند و مبتنی بر معماری مدل، مشاهده و کنترلکننده (MVC) است که توانایی شکستن معماری بکاند یک برنامه کاربردی به بخشهای منطقی مختلف را دارد.
3. سیستم کنترل نسخه گیت
سیستم کنترل نسخه برای حفظ و پیگیری تغییرات مفید است، بهطوری که هرگونه تغییر در کدها را رصد کرده و به اعضا تیم اجازه میدهد در جریان کامل تغییراتی که روی یک پروژه اعمال میشود، قرار بگیرند. سامانههای کنترل نسخه، ابزارهای نرمافزاری هستند که به مدیریت تغییرات در کد منبع در طول زمان کمک میکنند. گیت یک ابزار رایگان و منبعباز است که بهدلیل ویژگیهای امن، انعطافپذیر و ویرایش ساده بهعنوان بهترین سیستم کنترل نسخه شناخته میشود. بهکارگیری یک سیستم کنترل نسخه بهترین روشی است که هر توسعهدهنده برای دنبال کردن تغییرات در روند ساخت یک پروژه در اختیار دارد. گیت حتا برای پروژههای کوچک نیز مفید است، بهویژه پروژههایی که دائما بهروز میشوند و تغییراتی در آنها اعمال میشود. هنگامیکه از یک سیستم کنترل نسخه استفاده میکنید، هر زمان که بخواهید یک ویژگی را بهروز کنید یا قابلیت جدیدی را اضافه کنید، بهسرعت کد منبع را ویرایش میکنید و نسخهای سازگار با نسخههای قبلی را ایجاد میکنید. بهطور کلی، گیت به دلایل زیر مورد توجه توسعهدهندگان قرار دارد.
- رایجترین سیستم کنترل نسخه است.
- تغییرات ایجادشده در فایلها را ردیابی میکند.
- فرآیند ساخت انشعابها یا ادغام آنها در گیت ساده است.
- هر زمان که بخواهید میتوانید به نسخههای خاصی از پروژه دسترسی داشته باشید.
4. آگاهی در مورد امنیت وب
امروزه، تهدیدهای مختلفی پیرامون وبسایتها قرار دارند که باعث مختل شدن عملکرد آنها میشوند. هکرها، افرادی هستند که میتوانند با نفوذ به وبسایتها یا برنامههای وب کدهای مخربی به آنها تزریق کرده و مانع عملکرد عادی وبسایتها باشند. آنها دادههای ارزشمند را سرقت میکنند و مانع از آن میشوند تا فعالیتهای تجاری روند عادی خود را طی کنند. برای پیشگیری از بروز چنین مشکلاتی، یک توسعهدهنده بکاند باید درک درستی از امنیت داشته باشد. بهطور کلی، امنیت وب به مجموعه اقدامات حفاظتی و پروتکلهایی گفته میشود که توسعهدهندگان باید برای ساخت یک وبسایت بهینه و موثر دنبال کنند. این موضوع شامل اسکن یک وبسایت برای شناسایی آسیبپذیریها و برطرف کردن رخنههای امنیتی است. وبسایتها با تهدیدات مختلفی مثل بدافزارها، سرریز بافر و نشتی اطلاعات روبهرو هستند. برای پیشگیری از بروز چنین مشکلاتی میتوان از تکنیکهای مختلفی بهشرح زیر استفاده کرد:
استفاده از HTTPS: پروتکل HTTPS نسخه ایمنشده پروتکل HTTP است. هنگامی که دادهها با استفاده از HTTPS ارسال میشوند از طریق پروتکل TLS ارسال و محافظت میشوند. پروتکل TLS مبتنی بر سه لایه محافظتی زیر است:
- رمزگذاری: روشی برای ایمنسازی دادهها است. در این حالت برای رمزگشایی اطلاعات باید کلید مربوطه را داشته باشید.
- یکپارچگی داده: زمانی که یکپارچگی دادهها تضمین شده باشد، اطلاعات ذخیرهشده در پایگاه داده، کامل، دقیق و قابل اعتماد است.
- احراز هویت: این روش برای مقابله با حملههای جعل هویت استفاده میشود. راهکار فوق تضمین میکند تنها افراد شناختهشده و قابل اعتماد به منابع سازمانی دسترسی خواهند داشت.
پیادهسازی مکانیزمهای پشتیبانگیری و بازیابی ایمن: از دست دادن دادهها، بزرگترین تهدیدی است که هر وبسایتی با آن روبهرو است. برای پیشگیری از بروز چنین مشکلی باید مطمئن شوید که یک فرآیند پشتیبانگیری دقیق را اجرا میکنید. همچنین، بهعنوان یک توسعهدهنده بکاند باید در مورد حملههای XSS و تزریق کد اسکیوال دانش کافی داشته باشید.
5. رابطهای برنامهنویسی کاربردی
API مجموعهای از توابع است که دسترسی به دادهها و تعامل با مولفههای موجود در کیتهای توسعه، ریزسرویسها و سیستمعامل را امکانپذیر میکند. بهطور خلاصه، API پاسخهای کاربران را به سیستم تحویل میدهد و پاسخها را برای کاربر ارسال میکند.
به بیان دقیقتر، APIها عملکردی شبیه به یک پل دارند که اجازه میدهند دو برنامه با یکدیگر صحبت کنند. APIها توسط توسعهدهندگان بکاند برای برقراری ارتباط سرویسها یا برنامهها و بهبود تجربه کاربری استفاده میشوند. Express یک انتخاب خوب برای سرورها است که اجازه ساخت و انتشار APIها برای برقراری ارتباط کلاینتها و سرورها را امکانپذیر میکند. از APIهایی که باید بهفکر کسب دانش در مورد آنها باشید، میتوان به REST، JSON، SOAP، GSON، XML-RPC و AES اشاره کرد.
6. کانتینرها و تست
کانتینرسازی به فرآیند بستهبندی کدهای نرمافزارها با تمام عناصر ضروری مثل چارچوبها، کتابخانهها و سایر وابستگیها در قالب یک مفهوم واحد اشاره دارد. کانتینرها با هدف ارائه خدمات متمایز از یکدیگر مورد استفاده قرار میگیرند. توسعهدهندگان بکاند بهشکل گستردهای از کانتینرها استفاده میکنند. از جمله کانتینرهای کارآمد در این زمینه باید به داکر و کوبرنتیس اشاره کرد.
داکر یک پلتفرم کانتینریسازی منبعباز است که به توسعهدهندگان امکان میدهد برنامهها را در کانتینرها بستهبندی کنند. مکانیزم فوق عملکردی شبیه به یک ماشین مجازی دارد، اما کارآمدتر است. کاربرد اصلی فناوری فوق این است که به برنامهها اجازه میدهد در محیطهای مختلف اجرا شوند. کوبرنتیس که اغلب K8s نامیده میشود، استقرار و مدیریت برنامههای ابری بومی را با استفاده از پلتفرمهای ابر عمومی خودکارسازی و ساده میکند.
یکی از کارهای اجباری که باید بهعنوان یک توسعهدهنده بکاند انجام دهید، تست، ارزیابی و تایید کدهایی است که نوشتهاید. تست نشان میدهد نرمافزاری که توسعه دادهاید، بهترین عملکرد را دارد یا نیاز به ویرایش دارد. تست برای پیشگیری از بروز خطاها و بهبود عملکرد وبسایتها انجام میشود. از تستهای مهم در این زمینه به موارد زیر باید اشاره کرد:
- تست واحد: عملکرد هر واحد بهعنوان کوچکترین مولفه یک برنامه کاربردی را ارزیابی و تایید میکند.
- تست عملکردی: عملکرد مولفههای مختلف را بررسی میکند تا اگر اشکالی وجود داشته باشد یا کدها نیازمند بهینهسازی باشند، توسعهدهندگان اقدامات لازم را انجام دهند.
- تست قابلیت استفاده: روشی کارآمد است که نشان میدهد امکان استفاده از یک برنامه وب برای انجام یک کار خاص وجود دارد.
- تست کارایی: برنامه در شرایط مختلف مورد بررسی قرار میگیرد تا مشخص شود هنگامیکه بار ترافیکی زیادی به آن وارد میشود چه واکنشی خواهد داشت.
- تست رگرسیون: اشاره به این نکته دارد که هر زمان عملکرد جدیدی به کدها اضافه شد، نباید روی عملکرد دیگر بخشهای وبسایت تاثیر منفی بگذارد.
7. استقرار
هنگامی که فرآیند تست بهپایان میرسد، توسعهدهندگان به مرحله استقرار وارد میشوند. جایی که میتوانند عملکرد برنامه در دنیای واقعی را مشاهده کنند. این فرآیند شامل 5 مرحله برنامهریزی، توسعه، تست، استقرار و نظارت است.
- برنامهریزی: زمانی که چند توسعهدهنده روی یک پروژه کار میکنند، یک برنامه استقرار ضروری است. با استفاده از این مرحله، از تضاد بین تغییراتی که ممکن است بر روند استقرار تاثیر منفی بگذارند، اطمینان حاصل خواهید کرد. علاوه بر این، روند توسعه را سریعتر و کارآمدتر میکند.
- توسعه: پس از برنامهریزی، توسعه واقعی انجام میشود. این مرحلهای است که در آن ایدهها و الزامات جمعآوری و اولویتبندی میشوند. در ادامه، میتوان مرحله تست برنامه را انجام داد.
- تست: تست برنامه، یک گام مهم برای اطمینان از عدم وجود اشکال قبل از انتقال برنامه به مرحله تولید است. تست تنها زمانی امکانپذیر است که برنامه در محیطهای مختلف مستقر شده باشد. تنها در این مرحله است که متوجه خواهید شد، برنامه هماهنگ با استراتژیها است یا خیر. در این مرحله اشکالات بررسی شده و اطمینان حاصل خواهد شد که همگی برطرف شدهاند. پس از انجام تست، برنامه به مرحله استقرار وارد میشود.
- استقرار: عملکرد برنامه بهشکل زنده را نشان میدهد. در این مرحله، برنامه نباید دارای باگ باشد و باید بهترین عملکرد را ارائه کند.
- نظارت: برای بررسی این موضوع که آیا وبسایت بهخوبی کار میکند یا خیر باید بهشکل مداوم زیرنظر قرار بگیرد. ممکن است این احتمال وجود داشته باشد که پس از استقرار مشکلاتی رخ دهد، بنابراین باید عملکرد وبسایت را بررسی کنید و در صورت لزوم تغییراتی در ماژولهای برنامه اعمال کنید.
8. ارائهدهندگان ابر
تقریبا تمامی برنامههای بزرگ در حال انتقال به فضای ابری هستند، این محاسبات مبتنی بر ابر و وب، به کسبوکارها و افراد اجازه میدهند به منابع محاسباتی موردنیاز خود مثل ماشینهای مجازی، پایگاههای داده، توان پردازشی، خدمات، ذخیرهسازی و غیره به سادهترین شکل و به میزان هزینهای که پرداخت میکنند، دسترسی داشته باشند. رایانش ابری را میتوان به سه دسته اصلی، نرمافزار بهعنوان سرویس (SaaS)، پلتفرم بهعنوان سرویس (PaaS) و زیرساخت بهعنوان سرویس (IaaS) تقسیم کرد. ابر مزایای قابل توجه زیر را ارائه میکند:
- دسترسپذیری تماموقت به سرویسها.
- قابلیت نگهداری و بهروزرسانی خودکار نرمافزارها، سیستمعامل و پایگاههای اطلاعاتی.
- کاهش هزینههای فناوری اطلاعات.
- عدم نیاز به تجهیزات فیزیکی درونسازمانی فناوری اطلاعات برای ذخیرهسازی دادهها.
- توانایی دسترسی به برنامهها در هر زمان و هر مکان.
- محافظت از دادهها در برابر انواع مختلفی از تهدیدها؛ زیرا همواره یک نسخه پشتیبان از دادهها در مکانی قابل اعتماد و ایمن نگهداری میشود.
کلام آخر
همانگونه که مشاهده کردید، یک توسعهدهنده بکاند خوب باید دانش کافی در مورد فناوریهای میانرشتهای داشته باشد تا بتواند کار خود را بهدرستی انجام دهد. به بیان دقیقتر، تسلط بر زبانهای برنامهنویسی و چارچوبها برای تبدیل شدن به یک توسعهدهنده بکاند خبره کافی نیست و شما باید با فناوریهای زیربنایی که سازوکار وب را شکل میدهند، آشنا باشید.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟