‘As-Code’ systems are those that provide declarative model for provisioning and managing elements in an application stack. Pioneered by Infrastructure-as-Code systems like Terraform and AWS CloudFormation, the ‘as-Code’ approach provides repeatability, shareability, versioning in managing the corresponding elements.
‘Platform’ systems are those that focus on providing platform-level functionality for application deployments. Pioneered by Heroku, Platform-level functionality is generally understood to include following:
Platform-as-Code systems can be thought of as systems that support this platform-level functionality in ‘as Code’ manner.
Over the years two types of toolings have evolved - PaaS & Infrastructure-as-Code. PaaSes focused on delivering end-to-end developer workflow trying to eliminate the need for Ops engineers. Infrastructure-as-Code systems focused on simplifying Ops challenges in automation and provisioning.
In practice, when teams comprised of developers and Ops engineers come together to build an application deployment workflow, they experience a communication gap due to lack of common tooling. This normally forces developers to learn at least basics of Ops systems and tools to be able to meaningfully contribute in the DevOps workflows. Platform-as-Code bridges this gap with kubectl & Kubernetes YAML becoming the common language between Devs & Ops.