Serverless computing: Difference between revisions

Content deleted Content added
Removed content without citation or with unreliable citations that don't meet wikipedia guidelines
Fixed a reference. Please see Category:CS1 errors: dates.
Line 36:
The "Grain of Sand Anti-pattern" refers to the creation of excessively small components (e.g., functions) within a system, often resulting in increased complexity, operational overhead, and performance inefficiencies. <ref>{{Cite book |last=Richards |first=Mark |title=Microservices AntiPatterns and Pitfalls |date=2015 |publisher=O'REILLY |publication-date=2015}}</ref> "Lambda Pinball" is a related anti-pattern that can occur in serverless architectures when functions (e.g., AWS Lambda, Azure Functions) excessively invoke each other in fragmented chains, leading to latency, debugging and testing challenges, and reduced observability. <ref name=":3">{{Cite journal |title=TECHNOLOGY RADAR VOL. 21 An opinionated guide to technology |url=https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2019/11/tr_technology_radar_vol_21_en.pdf |journal=Technology Radar |publisher=ThoughtWorks |volume=21}}</ref> These anti-patterns are associated with the formation of a distributed monolith.
 
These anti-patterns are often addressed through the application of clear ___domain boundaries, which distinguish between public and published interfaces. <ref name=":3" /> <ref name=":4">{{Cite journal |last=Fowler |first=Martin |date=March/AprilMarch–April 2002 |year=2002 |title=Public versus Published Interfaces |url=https://martinfowler.com/ieeeSoftware/published.pdf |journal=IEEE SOFTWARE |publication-date=March/April 2002Software}}</ref> Public interfaces are technically accessible interfaces, such as methods, classes, API endpoints, or triggers, but they do not come with formal stability guarantees. In contrast, published interfaces involve an explicit stability contract, including formal versioning, thorough documentation, a defined deprecation policy, and often support for backward compatibility. Published interfaces may also require maintaining multiple versions simultaneously and adhering to formal deprecation processes when breaking changes are introduced. <ref name=":4" />
 
Fragmented chains of function calls are often observed in systems where serverless components (functions) interact with other resources in complex patterns, sometimes described as spaghetti architecture or a distributed monolith. In contrast, systems exhibiting clearer boundaries typically organize serverless components into cohesive groups, where internal public interfaces manage inter-component communication, and published interfaces define communication across group boundaries. This distinction highlights differences in stability guarantees and maintenance commitments, contributing to reduced dependency complexity. <ref name=":3" /> <ref name=":4" />