{"id":136928,"date":"2022-10-25T14:53:13","date_gmt":"2022-10-25T19:53:13","guid":{"rendered":"https:\/\/wpengine.com\/?p=136928"},"modified":"2025-05-14T13:31:18","modified_gmt":"2025-05-14T18:31:18","slug":"empowering-engineers-through-product-first-platforms","status":"publish","type":"post","link":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/","title":{"rendered":"Empowering Engineers Through Product-first Platforms"},"content":{"rendered":"\n<p>At WP Engine, our Product &amp; Engineering organization applies a continuous improvement process to maintain an <a href=\"https:\/\/cloud.google.com\/devops\" target=\"_blank\" rel=\"noreferrer noopener\">elite level<\/a> of software development and delivery performance.\u00a0<\/p>\n\n\n\n<p>This includes a laser focus on agility, represented by <a href=\"https:\/\/www.devops-research.com\/research.html\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Research and Assessment<\/a> (DORA) metrics for speed, stability, and quality.\u00a0<\/p>\n\n\n\n<p>To achieve their goals, our engineering colleagues count on WP Engine\u2019s internal Catalyst Software Delivery Platform (SDP)\u2014and on us, the dedicated Catalyst team, which develops and maintains that platform\u2014to provide a unified foundation for product development, release, and management.&nbsp;<\/p>\n\n\n\n<p>The aim of the Catalyst SDP is to reduce operational burden and cognitive load on our internal teams while significantly improving service observability, security, and speed of delivery. As the platform\u2019s value to users has deepened over the past two years, the variety of workloads has expanded to include more than 30 applications and services. New teams and products continue to onboard every few weeks.&nbsp;<\/p>\n\n\n\n<p>However, in the early days of the SDP, engineers who successfully stood up production services on the platform also struggled with application configuration management. While the Catalyst team had settled on a workflow that used declarative configuration tools, we had not achieved the right balance between flexibility and ease-of-use.&nbsp;<\/p>\n\n\n\n<p>We needed to evaluate SDP users\u2019 challenges more closely and take action. When we engaged with engineers, we learned that app development was indeed slowed by configuration tooling complexity; specifically, users found it difficult to craft Kubernetes configurations that met WP Engine&#8217;s security requirements.&nbsp;<\/p>\n\n\n\n<p>We understood their burden of using multiple tools, custom scripts, and complex configuration patches for customizing resources, as required by our configuration management solution. We also recognized duplicative effort across teams independently resolving common pain points.&nbsp;<\/p>\n\n\n\n<p>To restore product teams\u2019 focus on best-in-class software development and delivery, we had a job to do. We also had a reputation to uphold as winners of <a href=\"https:\/\/cloud.google.com\/awards\/devops\" target=\"_blank\" rel=\"noreferrer noopener\">Google\u2019s 2021 DevOps Award<\/a> for \u201c<a href=\"https:\/\/wpengine.com\/blog\/unleashing-the-full-power-of-the-cloud\/\" target=\"_blank\" rel=\"noreferrer noopener\">Unleashing the full power of the cloud<\/a>\u201d!<\/p>\n\n\n\n<p>Let\u2019s explore the changes we introduced to the configuration management workflow on SDP, our rollout approach, and the impact these changes had on the engineering experience.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Reduced Complexity<\/strong><\/h2>\n\n\n\n<p>To remove the need for overlay patterns, complex patching, or custom scripting, we consolidated the required tooling for operating on configurations. Engineers can now address basic use cases with a single tool, <a href=\"https:\/\/kpt.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\">kpt<\/a>, which simplifies functional configuration changes through its Configuration as Data paradigm.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Shared Functions<\/strong><\/h2>\n\n\n\n<p>Our most impactful deliverable was a library of reusable Kubernetes resource definitions as <a href=\"https:\/\/kpt.dev\/book\/02-concepts\/03-functions\" target=\"_blank\" rel=\"noreferrer noopener\">kpt functions<\/a>. Engineers can now compose applications with interoperable functional units of configuration, and can leverage packaged, time-tested k8s configurations, reducing code duplication and increasing maintainability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Documented Examples<\/strong><\/h2>\n\n\n\n<p>To further streamline implementation of common functional use cases, like configuring and authenticating to a database, we provided documented examples for invoking our kpt functions. With the help of a consistent and reliable starting point, engineers can confidently and quickly proceed to their value-added work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Security by Default<\/strong><\/h2>\n\n\n\n<p>For standard use cases like exposing an application to the internet or routing traffic between services within the mesh, we packaged baseline corporate security compliance into the kpt functions themselves. When applying our functions to their use cases, product teams benefit from the \u201cdefault-closed\u201d and \u201cleast privilege\u201d security posture that we enforce, achieving improved application security without engineering overhead.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Versioning and Pinning<\/strong><\/h2>\n\n\n\n<p>We applied semantic versioning to our Catalyst cloud builders and kpt functions. Now engineers can pin their image versions and automatically pick up our latest non-breaking changes without needing to comprehend the details of each modification.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Change Awareness<\/strong><\/h2>\n\n\n\n<p>As part of the rollout of our new configuration management solution, we provided a utility for describing the logical differences between the user\u2019s prior configuration and the new configuration introduced by the kpt functions. Using the utility, engineers can readily understand the functional changes to their applications.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>User Engagement and Results<\/strong><\/h2>\n\n\n\n<p>We partnered with application teams to roll out these changes to 30 workloads on SDP. After making initial updates directly to user pipelines in a dev environment, we invited application owners to approve our pull requests and then test their applications with the updates.&nbsp;<\/p>\n\n\n\n<p>Direct feedback about these changes indicates that we\u2019ve successfully addressed significant problems in configuration management, and that the transition to improved security and reliability required minimal effort for engineers. In turn, our engineering colleagues have been appreciative of our efforts to simplify their foundational work and restore their focus on creating valuable products.&nbsp;<\/p>\n\n\n\n<p>&nbsp;\u201cUsing the new configuration management tooling with kpt has been a massive improvement, it\u2019s way easier,\u2019 said WP Engine Sr. Staff Software Engineer Adam Lassek.&nbsp;&nbsp;<\/p>\n\n\n\n<p>\u201cWe got a whole environment up and running inside a sprint, which I never would have expected was possible before.\u201d&nbsp;<\/p>\n\n\n\n<p>Software Engineer Piotr Purwin also praised the changes, noting that the platform enabled his team to implement kubernetes best practices with fewer lines of code.&nbsp;<\/p>\n\n\n\n<p>\u201cSometimes we feel like cooking something fancy, which of course requires basic kitchen utensils, but also more complex and sophisticated tools that may not be available to everyone at home,\u201d Purwin said.&nbsp;<\/p>\n\n\n\n<p>\u201cWorking within the SDP is like entering a big, fully-equipped kitchen and just enjoying the process of preparing the dish.&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What\u2019s Ahead?<\/strong><\/h2>\n\n\n\n<p>There\u2019s more we can do to optimize application configuration management for our users. We will continue building out kpt functions for common configuration use cases, like adding a caching layer to an application. We also want to improve user experience in other areas, including observability.&nbsp;<\/p>\n\n\n\n<p>While software delivery innovations roll out to our internal teams via the SDP, the benefit cascades to WP Engine customers through faster delivery of new products.<\/p>\n\n\n\n<p>Our vision for SDP is broad and deep, and the leaders of our engineering organization have high expectations for its future use. With more reusable software, out-of-the-box capabilities for applications, and platform enhancements, the Catalyst SDP will continue increasing engineering team velocity and helping WP Engine customers win online every day.<\/p>\n\n\n\n<p><em>WP Engine Sr. Staff Software Engineer Rahul Dhir contributed to this article.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At WP Engine, our Product &amp; Engineering organization applies a continuous improvement process to maintain an elite level of software development and delivery performance.\u00a0 This includes a laser focus on agility, represented by DevOps Research and Assessment (DORA) metrics for speed, stability, and quality.\u00a0 To achieve their goals, our engineering colleagues count on WP Engine\u2019s<span class=\"tile__ellipses\">&hellip;<\/span><span class=\"tile__ellipses--animated\"><\/span><\/p>\n","protected":false},"author":408,"featured_media":136931,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5,838],"tags":[],"class_list":["post-136928","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","category-site-speed-and-performance"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Empowering Engineers Through Product-first Platforms<\/title>\n<meta name=\"description\" content=\"See how active user engagement and key changes to configuration management inspired a better platform product.\" \/>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Empowering Engineers Through Product-first Platforms\" \/>\n<meta property=\"og:description\" content=\"See how active user engagement and key changes to configuration management inspired a better platform product.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/\" \/>\n<meta property=\"og:site_name\" content=\"WP Engine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/wpengine\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-25T19:53:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-14T18:31:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wpengine.com\/resources\/wp-content\/uploads\/2022\/10\/Config-mgmt_1200x627.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Susan Fern\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wpengine\" \/>\n<meta name=\"twitter:site\" content=\"@wpengine\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Susan Fern\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/\",\"url\":\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/\",\"name\":\"Empowering Engineers Through Product-first Platforms\",\"isPartOf\":{\"@id\":\"https:\/\/wpengine.com\/resources\/#website\"},\"datePublished\":\"2022-10-25T19:53:13+00:00\",\"dateModified\":\"2025-05-14T18:31:18+00:00\",\"author\":{\"@id\":\"https:\/\/wpengine.com\/resources\/#\/schema\/person\/8f5db311dbff239764e072fb2d7153f0\"},\"description\":\"See how active user engagement and key changes to configuration management inspired a better platform product.\",\"breadcrumb\":{\"@id\":\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wpengine.com\/resources\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Empowering Engineers Through Product-first Platforms\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wpengine.com\/resources\/#website\",\"url\":\"https:\/\/wpengine.com\/resources\/\",\"name\":\"WP Engine\",\"description\":\"Managed Hosting for WordPress\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wpengine.com\/resources\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wpengine.com\/resources\/#\/schema\/person\/8f5db311dbff239764e072fb2d7153f0\",\"name\":\"Susan Fern\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wpengine.com\/resources\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/09e294a16d2b735b683f13890430a3b3246358f160f7d1e60528fb1680cf198c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/09e294a16d2b735b683f13890430a3b3246358f160f7d1e60528fb1680cf198c?s=96&d=mm&r=g\",\"caption\":\"Susan Fern\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Empowering Engineers Through Product-first Platforms","description":"See how active user engagement and key changes to configuration management inspired a better platform product.","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"Empowering Engineers Through Product-first Platforms","og_description":"See how active user engagement and key changes to configuration management inspired a better platform product.","og_url":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/","og_site_name":"WP Engine","article_publisher":"https:\/\/www.facebook.com\/wpengine","article_published_time":"2022-10-25T19:53:13+00:00","article_modified_time":"2025-05-14T18:31:18+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/wpengine.com\/resources\/wp-content\/uploads\/2022\/10\/Config-mgmt_1200x627.png","type":"image\/png"}],"author":"Susan Fern","twitter_card":"summary_large_image","twitter_creator":"@wpengine","twitter_site":"@wpengine","twitter_misc":{"Written by":"Susan Fern","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/","url":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/","name":"Empowering Engineers Through Product-first Platforms","isPartOf":{"@id":"https:\/\/wpengine.com\/resources\/#website"},"datePublished":"2022-10-25T19:53:13+00:00","dateModified":"2025-05-14T18:31:18+00:00","author":{"@id":"https:\/\/wpengine.com\/resources\/#\/schema\/person\/8f5db311dbff239764e072fb2d7153f0"},"description":"See how active user engagement and key changes to configuration management inspired a better platform product.","breadcrumb":{"@id":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wpengine.com\/resources\/empowering-engineers-through-product-first-platforms\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpengine.com\/resources\/"},{"@type":"ListItem","position":2,"name":"Empowering Engineers Through Product-first Platforms"}]},{"@type":"WebSite","@id":"https:\/\/wpengine.com\/resources\/#website","url":"https:\/\/wpengine.com\/resources\/","name":"WP Engine","description":"Managed Hosting for WordPress","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpengine.com\/resources\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/wpengine.com\/resources\/#\/schema\/person\/8f5db311dbff239764e072fb2d7153f0","name":"Susan Fern","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpengine.com\/resources\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/09e294a16d2b735b683f13890430a3b3246358f160f7d1e60528fb1680cf198c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/09e294a16d2b735b683f13890430a3b3246358f160f7d1e60528fb1680cf198c?s=96&d=mm&r=g","caption":"Susan Fern"}}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/posts\/136928","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/users\/408"}],"replies":[{"embeddable":true,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/comments?post=136928"}],"version-history":[{"count":0,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/posts\/136928\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/media\/136931"}],"wp:attachment":[{"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/media?parent=136928"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/categories?post=136928"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wpengine.com\/resources\/wp-json\/wp\/v2\/tags?post=136928"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}