Twelve Expectations for Developer Platforms

III - Infrastructure Abstracted

Infrastructure is an implementation detail and should not be exposed in raw form

Developer platforms should abstract infrastructure complexities, allowing developers to focus their engineering skills on building high-quality software rather than grappling with infrastructure intricacies.

Developers should not be expected to possess deep knowledge of specific infrastructure technologies, such as networking, storage, or clustering. By empowering developers in this way, they may concentrate on writing code, designing architectures, solving business problems, and are no longer bogged down by infrastructure management tasks. This approach enhances developer productivity, reduces the learning curve, and allows teams to leverage their core engineering skills to deliver value more efficiently.

Experiences should automatically resolve infrastructure details into the context of the application architecture. When developers define their application components, dependencies, and desired runtime characteristics, the developer platform should intelligently map those requirements to the appropriate infrastructure and configurations. This abstraction layer should handle the complex decisions of resource allocation, configuration management, and infrastructure optimization behind the scenes. By resolving infrastructure details into the application architecture context, the developer platform enables developers to think and operate at a higher level of abstraction, focusing on the logical components and interactions of their application rather than worrying about the underlying infrastructure specifics.