Introduced PinConsole: Pinterest introduced PinConsole, a unified internal developer platform (IDP), to centralize engineering workflows. It was built to address the fragmented developer experience caused by multiple disconnected tools.
- Integrates Workflows: Integrates common developer workflows like continuous deployment pipelines, monitoring dashboards, alerting, and ownership metadata. Allows engineers to manage releases, access logs and metrics without switching tools.
- Designed with IDP Model: Inspired by Backstage, Kubernetes, and gRPC, it provides a consistent interface and standard workflows, promoting reuse and uniformity.
Supporting Technologies:
- Entity Data Model: Built an entity data model that syncs with LDAP directory every 60 minutes via Backstage’s ldapOrg provider for accurate ownership tracking and access control.
- Databases: Uses PostgreSQL databases on AWS RDS for production and staging.
- Customized Interface: Customized Pinconsole interface with Pinterest’s Gestalt design system.
- PinCompute Plugin: Provides a unified interface for managing Kubernetes workloads with custom resources like PinApps and PinScalers supported by a custom Kubernetes plugin. Supports multi-tenancy and integrates with security systems, service registry, and artifact repositories.
Scalability Optimizations:
- Apollo Client: Uses cache policies to proactively prefetch commonly accessed data.
- React.lazy and Suspense: Enables code splitting.
- Server-side Rendering: Renders critical pages server-side to improve time-to-first-meaningful-paint.
- Multi-level Caching: Reduces latency and enhances perceived performance by caching CDN assets and API gateway responses.
- Extensibility and Adoption: PinConsole is designed to be extensible, allowing teams to contribute plugins and workflows. It has reached over 700 daily active users with around 30% of Pinterest engineers using it monthly and a Net Promoter Score above 70. Consistent workflows, discoverable services, and extensible plugin architecture were key factors in its adoption.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。