Skip to content

Latest commit

 

History

History
23 lines (14 loc) · 6.45 KB

README.ur.md

File metadata and controls

23 lines (14 loc) · 6.45 KB

فعال کا منشور

مختلف شعبوں میں کام کرنے والی تنظیمیں آزادانہ طور پر سافٹ ویئر بنانے کے پیٹرن تلاش کر رہی ہیں جو یکساں نظر آنے چاہیے۔ یہ نظام جدید تقاضوں کو پورا کرنے کے لیے زیادہ مضبوط، زیادہ لچکدار، زیادہ لچکدار اور بہتر پوزیشن میں ہیں۔

یہ تبدیلیاں اس لیے ہو رہی ہیں کیونکہ حالیہ برسوں میں سافٹ ویئر کے تقاضے ڈرامائی طور پر تبدیل ہوئے ہیں۔ صرف چند سال پہلے ایک بڑی ایپلی کیشن میں دسیوں سرورز، سیکنڈوں کا رسپانس ٹائم، گھنٹوں آف لائن مینٹیننس اور گیگا بائٹس ڈیٹا ہوا کرتا تھا۔ آج ایپلیکیشنز موبائل ڈیوائسز سے لے کر کلاؤڈ بیسڈ کلسٹرز تک ہر چیز پر تعینات ہیں جو ہزاروں ملٹی کور پروسیسر چلا رہے ہیں۔ صارفین ملی سیکنڈ میں رسپانس ٹائم چاہتے ہیں اور 100% اپ ٹائم کی توقع کرتے ہیں۔ ڈیٹا پیٹا بائٹس میں حساب کیا جارہا ہے۔ کل کی سافٹ وئیر تعمیر آج کے تقاضے پورے نہیں کرپا رہے۔

ہم سمجھتے ہیں کہ سافٹ ویئر سسٹمز کی تعمیر کے لیے ایک مربوط نقطہ نظر کی ضرورت ہے، اور ہم سمجھتے ہیں کہ تمام ضروری پہلوؤں کو پہلے سے ہی انفرادی طور پر تسلیم کیا گیا ہے: ہم ایسے سسٹم چاہتے ہیں جو عملی، مزاحمتی، لچکدار اور اشاروں سے چلنے والے ہوں۔ ہم ان کو فعالی سسٹم کہتے ہیں۔

فعالی سسٹم کے طور پر بنائے گئے سسٹمز زیادہ لچکدار، علیحدہ اور توسیع پذیر ہوتے ہیں۔ یہ ان کی تعمیر میں آسانی اور تبدیلی کے قابل بناتا ہے۔ وہ نااہلی کو نمایاں طور پر زیادہ برداشت کرتے ہیں اور جب کوئی نااہلی ہوتی ہے تو وہ اسے تباہی کے بجائے خوبصورتی سے ہل کرتے ہیں۔ فعالی سسٹم انتہائی لچکدار اور صارفین کو موثر فیڈ بیک دینے والے ہوتے ہیں۔

Systems built as Reactive Systems are more flexible, loosely-coupled and قابل توسیع. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.

Reactive Systems are:

  • Responsive: The system responds in a timely manner if at all possible. Responsiveness is the cornerstone of usability and utility, but more than that, responsiveness means that problems may be detected quickly and dealt with effectively. Responsive systems focus on providing rapid and consistent response times, establishing reliable upper bounds so they deliver a consistent quality of service. This consistent behaviour in turn simplifies error handling, builds end user confidence, and encourages further interaction.
  • Resilient: The system stays responsive in the face of failure. This applies not only to highly available, mission-critical systems — any system that is not resilient will be unresponsive after a failure. Resilience is achieved by replication, containment, isolation and delegation. Failures are contained within each component, isolating components from each other and thereby ensuring that parts of the system can fail and recover without compromising the system as a whole. Recovery of each component is delegated to another (external) component and high availability is ensured by replication where necessary. The client of a component is not burdened with handling its failures.
  • Elastic: The system stays responsive under varying workload. Reactive Systems can react to changes in the input rate by increasing or decreasing the resources allocated to service these inputs. This implies designs that have no contention points or central bottlenecks, resulting in the ability to shard or replicate components and distribute inputs among them. Reactive Systems support predictive, as well as Reactive, scaling algorithms by providing relevant live performance measures. They achieve elasticity in a cost-effective way on commodity hardware and software platforms.
  • Message Driven: Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, and location transparency. This boundary also provides the means to delegate failures as messages. Employing explicit message-passing enables load management, elasticity, and flow control by shaping and monitoring the message queues in the system and applying back-pressure when necessary. Location-transparent messaging as a means of communication makes it possible for the management of failure to work with the same constructs and semantics across a cluster or within a single host. Non-blocking communication allows recipients to only consume resources while active, leading to less system overhead.

Large systems are composed of smaller ones and therefore depend on the Reactive properties of their constituents. This means that Reactive Systems apply design principles so these properties apply at all levels of scale, making them composable. The largest systems in the world rely upon architectures based on these properties and serve the needs of billions of people daily. It is time to apply these design principles consciously from the start instead of rediscovering them each time.

Sign the manifesto