فرض کنید باید یک سیستم نرم افزاری جدید را از ابتدا طراحی کنید. چگونه در مورد آن اقدام خواهید کرد؟

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

در حالی که این شروع خوبی است و ما سیستمی داریم که نیازهای عملکردی ما را برآورده می کند اما ما واقعاً کار معمار نرم افزار را در اینجا انجام نداده ایم.

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

در این سلسله مقالات اولین چیزی که یاد خواهیم گرفت افزایش عملکرد است.بنابراین اگر ریکوئست داشته باشیم، مثلا 90٪ درخواست ها باید در عرض یک ثانیه پاسخ دهیم

سپس این چیزی است که ما مطالعه خواهیم کرد

به عنوان بخشی از عملکرد هدف ما به حداقل رساندن تاخیر در response  افزایش توان عملیاتی آن خواهد بود.

نکته بعدی که یاد خواهیم گرفت مقیاس پذیری است که چگونه سیستم خود را مقیاس پذیر کنیم.

horizontal-vertical-scaling

بنابراین بیایید فرض کنیم که اگر سیستم ما الزامی دارد باید بتواند 1 میلیون کاربر را مدیریت کند، پس چگونه می توانیم به آن دست یابیم؟

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

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

 

بنابراین اگر در یک جزء یا داده های ما خرابی وجود داشته باشد مرکز خود شکست خورده است، سپس سیستم ما نیز شکست خورده است

باید بسیار در دسترس باقی بماند. حال، چگونه باید آن نوع الزامات را برآورده کنیم؟ این همان چیزی است که ما به عنوان بخشی از ماژول قابلیت اطمینان مطالعه خواهیم کرد.

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

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

استقرار آنها آسان نیست.

از این شکل می توانید ببینید

که این سیستم خاص دارای مقدار زیادی است از کامپوننت ها و هر جزء می تواند نمونه های زیادی داشته باشد بنابراین استقرار بی اهمیت نیست.

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

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

یکی از مهمترین چیزهایی که یک معمار نرم افزار باید انجام شود انتخاب فناوری و استک است. بنابراین برای هر لایه و هر جزء و معمار باید تصمیم بگیرد که کدام پلتفرم یا محصولی را انتخاب کنید که جزء ما روی آن اجرا شود.

 

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

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

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

تقریباً همه چیزهایی را که شما نیاز دارید پوشش می دهد بدانید که برای تبدیل شد به یک معمار بزرگ باید تلاش زیاد داشته باشید