Content deleted Content added
No edit summary Tag: Reverted |
Tag: Reverted |
||
Line 168:
The design of an API has significant impact on its usage.<ref name="Clarke4"/> The principle of [[information hiding]] describes the role of programming interfaces as enabling [[modular programming]] by hiding the implementation details of the modules so that users of modules need not understand the complexities inside the modules.<ref name="Parnas72">{{Cite journal |last=Parnas |first=D.L. |date=1972 |title=On the Criteria To Be Used in Decomposing Systems into Modules |url=https://www.win.tue.nl/~wstomv/edu/2ip30/references/criteria_for_modularization.pdf |journal=Communications of the ACM |volume=15 |issue=12 |pages=1053–1058 |doi=10.1145/361598.361623|s2cid=53856438 }}</ref> Thus, the design of an API attempts to provide only the tools a user would expect.<ref name="Clarke4" /> The design of programming interfaces represents an important part of [[software architecture]], the organization of a complex piece of software.<ref name="GarlanShaw94">{{Cite journal |last1=Garlan |first1=David |last2=Shaw |first2=Mary |date=January 1994 |title=An Introduction to Software Architecture |url=https://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf |journal=Advances in Software Engineering and Knowledge Engineering |volume=1 |access-date=8 August 2016}}</ref>
==Improving Performance==
===Horizontal Scaling Strategies===
Load balancing - Distribute incoming requests across multiple server instances using load balancers like HAProxy, NGINX, or cloud solutions (AWS ALB, Google Cloud Load Balancer).
Stateless design - Ensure your API doesn't store session state on individual servers. Use external stores like Redis or databases for session management so any server can handle any request.
Line 219:
Spot instances - Use cheaper spot/preemptible instances for non-critical workloads.
Reserved capacity - Purchase reserved instances for predictable baseline load.
==Release policies==
|