ما هو الوقت المناسب لبدء التفكير في التحجيم؟
-
04-10-2019 - |
سؤال
لقد قمت بتصميم موقع على مدار اليومين الماضيين ، وكنت أقوم ببعض الأبحاث في جوانب مختلفة من توسيع نطاق الموقع أفقيًا. إذا سارت الأمور كما هو مخطط لها ، في غضون بضعة أشهر (سنوات؟) أعلم أنني بحاجة إلى القلق بشأن توسيع نطاق الموقع لأعلى وللخارج ، لأن الموارد التي ستستهلكها ستكون ضخمة.
لذلك ، جعلني هذا أفكر ، ما هو أفضل وقت للبدء في التفكير ، والتصميم ، قابلية التوسع؟ إذا بدأت مبكرًا جدًا ، فيمكنك بسهولة تعقيد التصميم الخاص بك ، وجعل من المستحيل بناء بالفعل. يمكنك أيضًا الانخراط في التفاصيل ، والهندسة المعمارية ، أيا كان ، وينتهي الأمر بإنجاز أي شيء. أيضًا ، إذا قمت بعملها ، لكن الموقع لا تقلع أبدًا ، فقد تكون قد أهدرت جزءًا كبيرًا من الجهد الإضافي.
من ناحية أخرى ، قد تنقذ نفسك الكثير من الجهد على الطريق. إن تصميمه من الألف إلى الياء ليكون كبيرًا سيجعل الأمر أسهل في وقت لاحق في وقت لاحق من السماح له بالنمو بشكل كبير ، مع إعادة كتابة قليلة للغاية.
أعرف ما أعمل عليه ، لقد قررت اتخاذ ما لا يقل عن بعض الخيارات الآن على جانب التحجيم ، لكنني لن أقوم بتغيير كامل في التفكير لجعله يتوسع تمامًا. والجدير بالذكر ، لقد أعدت تصميم قاعدة البيانات الخاصة بي من تصميم علائقي تقليدي إلى واحد مشابه لما تم اقتراحه في موقع Reddit المرتبط أدناه ، وسأجرب Memcache تجربة.
لذا ، السؤال الأساسي ، متى يكون الوقت المناسب لبدء التفكير أو القلق بشأن التحجيم ، وما هي بعض التصميمات الجيدة والنصائح وما إلى ذلك عند القيام بذلك؟
هناك شيئان قرأتهما ، لأولئك المهتمين:
http://www.codinghorror.com/blog/2009/06/scaling-up-vs-scaling-thidden-costs.html
المحلول
على الرغم من أن الهندسة المعمارية المعقولة ، يجب أن تسمح لك بالتوسيع في وقت لاحق دون الحاجة إلى موارد مفرطة للتنفيذ. يجب التفكير في هذا منذ بداية المشروع.
في الوقت الحاضر ، هناك أبناء جيد للغاية وأنماط تصميم للمؤسسات التي يمكنك استخلاصها من (Rails ، MVC ، Spring ، وما إلى ذلك) التي تتيح لك تطوير البرامج على أساس راسخ وفهم جيدًا يوفر الآليات اللازمة لتوسيع نطاقها.
نصائح أخرى
تحت وجهة نظر معينة ، يتم قبول تقنيات التحجيم وتوحيدها تمامًا. لذا بدلاً من ذلك على الاعتماد على روابط/مقالات الويب ، قرأت الكتب حول الموضوع قبل بدء التحقيق.
أقترح:
- "بنيات الإنترنت القابلة للتطوير" - http://www.amazon.com/scalable-internet-architectures-theo-schlossnagle/dp/067232699x/ref=sr_1_1؟ie=utf8&s=books&qid=127462743&sr=8-1
- "فن قابلية التوسع" - http://www.amazon.com/art-scalability-architecture-organizations-enterprise/dp/0137030428/ref=sr_1_3؟ie=utf8&s=books&qid=127462743&sr=8-3
- "فن تخطيط القدرات" - http://www.amazon.com/art-capacity-planning-scaling-resources/dp/0596518579/ref=pd_bxgy_b_text_b