یکی از ابعاد تاثیرگذار و کمککننده در فرایند توسعهٔ محصول، تعامل و فهم مشترک طراحان و توسعهدهندگان است. بهبود این تعامل و ایجاد فهم مشترک، باعث همدلی بیشتر بین اعضای تیم میشود؛ تاثیر این همدلی در فرایند تحویل طرح به توسعهدهنده (Hand-off) بسیار چشمگیر است. این فهم مشترک ایجاد شده بین طراح و توسعهدهنده نهایتا منجر به ارائهٔ تجربهٔ کاربری مطلوب و بهینهای خواهد شد که حاصل نگاه و تلاش یک تیم همدل بوده است. به عنوان یک طراح محصول یکی از گامهایی که میتوانیم برای بهبود این تعامل برداریم، فهم و درک اصطلاحات فنی مورد استفاده در مکالمات روزمرهٔ اعضای تیم است.
در همین راستا، ما در چپتر طراحی «بله» میزبان آقای مهندس محمدامین پایدار بودیم؛ در این جلسات سعی بر آن بود که نسبت به اصطلاحات فنی که در مکالمات روزمره میشنویم فهم عمیقتری پیدا کنیم. چکیدهٔ این جلسات در چهار بخش منتشر خواهند شد که قسمت اول را میتوانید در این نوشته مطالعه کنید.
شبکهٔ کامپیوتر(Computer Network)
مجموعهٔ دستگاههایی که از طریق یک لینک بهم متصل میشوند شبکهٔ کامپیوتری را شکل میدهند. این لینک میتواند کابل، بلوتوث، وایفای و … باشد. امروزه میزبانهای(host) مختلفی میتوانند شبکهٔ کامپیوتری را تشکیل دهند از جمله لپتاپ، کامپیوتر، موبایل، تلویزیونهای هوشمند، یخچالهای هوشمند و …
اینترنت
اینترنت یک شبکهٔ کامپیوتری جهانی است که همهٔ دیوایسهای دنیا میتوانند از طریق اینترنت به یکدیگر وصل شوند. مثلا وقتی گوشی موبایل شما به فیسبوک متصل میشود در واقع به سرورهای فیسبوک که یکی از دستگاههای موجود در شبکهٔ جهانی است وصل شده است در نتیجه دو دستگاه موبایل و سرور فیسبوک از طریق شبکهٔ جهانی که همان اینترنت است بهم وصل شدهاند.
دستگاهها در شبکه چگونه به یکدیگر وصل میشوند؟
دو نوع مدل ارتباطی بین هاستهای یک شبکه وجود دارد؛ شبکهٔ Peer to Peer و شبکهٔ Client-Server
شبکهٔ Peer to Peer
شبکه Peer-To-Peer یا P2P، شبکهای متشکل از تعدادی کامپیوتر است که در یک شبکه توزیع شده به وسیله اینترنت با یک پروتکل، یکدیگر را با مسیریابی IPها پیدا کرده و متصل شدهاند. هر کدام از کامپیوترها در این شبکه Node نامیده میشوند. دیوایس واسطی مثل سرور بین دو دستگاه وجود ندارد. مثلا در file sharing با blockchain از این مدل استفاده میشود.
شبکهٔ Client-Server
معماری Client Server بر پایهٔ مفهومی بنا شده است که در آن سرورها خدماتی را که توسط کلاینتها درخواست میشود تامین میکنند. یک سرور در واقع میزبانی است که یک یا چند برنامه ویژه سرور را اجرا کرده و منابع خود را با کلاینتها به اشتراک میگذارند. این کلاینتها با درخواست محتوا یا خدمات سرور یک جلسه ارتباطی با این سرورها برقرار میکنند. سرورها همیشه منتظر درخواستهای ورودی از طرف کلاینتها هستند.
سرور خود یک ابرکامپیوتر با کانفیگهای بالا (مثلا ۱ ترابایت رم یا ۱ ترابایت هارد ssd) است که از آنها برای بالا آوردن اپلیکیشنهای سمت سرور استفاده میشود.
مدل Request/Response
کلاینت (اندروید، وب) با یکسری پروتوکلهای مشخص ( مانند پروتوکل rpc، Grpc ) درخواستهایی(Request) را برای سرور میفرستد.
بعد از دریافت این درخواست ، سرور دیتای مورد نیاز رو از resource میگیرد، پردازش لازم را انجام داده و پاسخ (response) را برای کلاینت ارسال میکند.
منطق و کدهای این اندپوینتها (نقطهای که یک دستور خاص را فراخوانی میکنیم) در اپلیکیشن سمت سرور تعریف میشود تا کلاینت بتواند با فراخوانی این اندپوینتها با پروتکلهای مشخص دیتای مورد نیاز خود را بگیرد و نیاز کاربر نهایی را رفع کند.
دیتایی که بین سرور و کلاینت رد و بدل میشود از طریق شبکه ارسال میشود. حال این دیتا چگونه در شبکه انتقال داده میشود؟
برای آن که یک object دیتا بتواند انتقال یابد، باید به مجموعهای از صفر و یکها تبدیل شود. بنابراین باید پروتکلی ثابت باشد که data serialization (تبدیل دیتا به مجموعهای از صفر و یکها) را انجام دهد. یعنی اگر کلاینت برای سرور یک مجموعه صفر و یک ارسال میکند، سرور باید بتواند با یک پروتکل مشخص دیتا را deserialize کند. JSON و پروتوباف از انواع Data Serializer هستند.
تعریف Latency
مدت زمانی که طول میکشد یک درخواست از کلاینت به سرور برسد، پردازش مورد نیاز انجام شود و در نهایت پاسخ به کلاینت برسد را Latency میگویند.
تعریف Ping
دستور ping یک ابزار شبکه است که برای تعیین اینکه آیا یک آدرس IP یا میزبان خاص قابل دسترسی است یا خیر؛ پس از مشخص شدن آن، میتوانید از نتایج بیشتر استفاده کنید.
نمایانسازی تصاویر (Rendering)
نمایش بخشها و صفحات یک نرمافزار اصطلاحا rendering است. در لایهٔ رندرینگ، CPU مصرف میشود. مثلا برای نمایش عکس آواتارها، ابتدا عکس دانلود شده و سپس پیکسلهای آن رندر میشود.
رندرینگ ویژگیهای مختلف، مقادیر متفاوتی از CPU را مصرف میکند. مثلا رندرینگ ویدیو مصرف خیلی زیادی دارد.
کش (Cache)
برای افزایش سرعت خواندن دیتا، بهجای آنکه همیشه دیتا از هاردهای دیتابیسها خوانده شوند. یک لایهای از دیتا در رم دیوایس کش میشود. (نگه داشته شود)
منتظر قسمتهای بعدی این مجموعه باشید...