{"id":11596,"date":"2017-06-01T11:16:26","date_gmt":"2017-06-01T11:16:26","guid":{"rendered":"https:\/\/stackify.com\/?p=11596"},"modified":"2024-05-20T05:35:18","modified_gmt":"2024-05-20T05:35:18","slug":"fundamentals-web-application-performance-testing","status":"publish","type":"post","link":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/","title":{"rendered":"Fundamentals of Web Application Performance Testing"},"content":{"rendered":"<p>Software development, as a profession, has evolved in fits and starts over the years. \u00a0When I think back a couple of decades, I find myself a little amazed. \u00a0During the infancy of the web, hand-coding PHP (or PERL) live on a production machine seemed perfectly fine.<\/p>\n<p>At first blush, that might just seem like sloppiness. \u00a0But don&#8217;t forget that stakes were much lower at the time. \u00a0Messing up a site that displayed song lyrics for a few minutes didn&#8217;t matter very much. \u00a0Web developers of the time had much less incentive to install pre-production verification processes. \u00a0Just make the changes and see if anything breaks. \u00a0Anything you don&#8217;t catch, your users will.<\/p>\n<h3>The Evolution of Web Application Testing<\/h3>\n<p>Of course, that attitude couldn&#8217;t survive much beyond the early days of dynamic web content. \u00a0As <a href=\"http:\/\/www.ecommerce-land.com\/history_ecommerce.html\" target=\"_blank\" rel=\"noopener noreferrer\">soon as e-commerce gained steam<\/a> in the web development world, the stakes went up. \u00a0Amateurs walked the tightrope of production edits while professional shops started to create and test in development or sandbox environments.<\/p>\n<p>As I said initially, this didn&#8217;t happen in some uniform move. \u00a0Instead, it happened in fits and starts. \u00a0Some lagged behind the curve, continuing to rely on their users for testing. \u00a0Others moved testing into sandbox environments and pushed the envelope beside. \u00a0They began to automate.<\/p>\n<p>Web development then took another step forward as <a href=\"\/best-cloud-tools-infrastructure-automation\/\">automation<\/a> worked its way into the <a href=\"\/integrating-apm-testing-strategy\/\">testing strategy<\/a>. \u00a0Sophisticated shops had their QA environments as a check on production releases. \u00a0But their developers also began to build automated test suites. \u00a0They then used these to guard against regression tests and to ensure proper application behavior.<\/p>\n<p>Eventually, testing matured to a point where it spread out beyond straightforward unit test suites and record-playback-style integration tests. \u00a0Organizations got to know the <a href=\"https:\/\/martinfowler.com\/bliki\/TestPyramid.html\" target=\"_blank\" rel=\"noopener noreferrer\">so-called test pyramid<\/a>. \u00a0They built increasingly sophisticated, nuanced test suites.<\/p>\n<h3>Web Application Testing Today<\/h3>\n<p>Building upon all of this backstory, we&#8217;ve seen the rise of <a href=\"https:\/\/stackify.com\/what-is-devops\/\">DevOps movement<\/a> in recent years. \u00a0This movement emphasizes automating the entire delivery pipeline, from written code to production functioning. \u00a0So stakes for automated testing are higher than ever. \u00a0The only way to automate the whole thing is to have bulletproof verification.<\/p>\n<p>This new dynamic shines a light on an oft-ignored element of the testing strategy. \u00a0I&#8217;m talking specifically about performance testing for your web application. \u00a0Automated unit and acceptance testing have long since become a <em>de facto<\/em> standard. \u00a0But now automated performance testing is getting to that point.<\/p>\n<p>Think about it. \u00a0We got burned by hand-editing code on the production server. \u00a0So we set up sandboxes and tested manually. \u00a0Our applications grew too complex for manual testing to handle. \u00a0So we built test suites and automated these checks. \u00a0We needed production rolls more frequently so we automated the <a href=\"https:\/\/stackify.com\/ultimate-checklist-app-deployment-success\/\">deployment process<\/a>. \u00a0Now, we push code efficiently through build, test, and deployment. \u00a0But we don&#8217;t know how it will behave in the wild.<\/p>\n<p>Web application performance testing fixes that. \u00a0If you don&#8217;t yet have such a strategy, you need one. \u00a0Let&#8217;s take a look at the fundamentals for adding this to your testing approach. \u00a0And I&#8217;ll keep this general enough to apply to your tech stack, whatever it may be.<\/p>\n<p><!--more--><\/p>\n<h3>Understand Your Production Conditions<\/h3>\n<p>First up, you have some homework. \u00a0You need to figure out what sorts of conditions your application will actually face in production. \u00a0Obviously, you&#8217;ll have an easier time of this if you have already released. \u00a0But in either case, figure out what normal conditions and peak conditions look like.<\/p>\n<p>You&#8217;re doing this to prep for the different kinds of <a href=\"https:\/\/stackify.com\/ultimate-guide-performance-testing-and-software-testing\/\">performance testing<\/a>\u00a0you&#8217;ll do. \u00a0These will include load testing, stress testing, endurance testing, and possibly others.\u00a0 With load testing, you contrive of production conditions (e.g., number of users, traffic volume, etc.). \u00a0Then you simulate that load to see how your system handles it. \u00a0You can also increase the load to the point of breaking to see what you can handle.<\/p>\n<p>With stress testing, you throw adverse conditions at your app to see how it behaves. \u00a0You want to verify that, even when it fails, it does so reasonably and gracefully. \u00a0And with endurance testing, you observe behavior over the course of time, rather than with unusually heavy load.<\/p>\n<p>All of these different tests involve simulating potential production conditions and testing the behavior. \u00a0So you need to know what to expect in production.<\/p>\n<blockquote><p>Also Read-<a href=\"https:\/\/stackify.com\/n-tier-architecture\/\">https:\/\/stackify.com\/n-tier-architecture\/<\/a><\/p><\/blockquote>\n<h3>Set Up Your Test Environment<\/h3>\n<p>Once you&#8217;ve done your due diligence, you need to start in earnest. \u00a0And your first task will involve actually setting up your environment for testing.<\/p>\n<p>Conceptually, this will differ from your previous setups. \u00a0In the past, you&#8217;ve mainly concerned yourself with deploying the software somewhere neutral. \u00a0In other words, as long as you test it somewhere besides a developer&#8217;s machine, you&#8217;re probably good. \u00a0Once deployed into your environment, you execute tests to verify the correctness of functionality.<\/p>\n<p>Performance testing requires something different. \u00a0Here, you need to simulate production to the best of your ability. \u00a0At the least, this will probably mean beefier servers. \u00a0Depending on your company, you may need to put in requests and requisition machines. \u00a0If you can, try leveraging cloud technologies to make your life easier.<\/p>\n<p>But whatever you do, figure out how to get as close to production as possible.<\/p>\n<h3>Simulation Strategy<\/h3>\n<p>Once you have a production testing home for your app, you still have work to do. \u00a0You&#8217;re going to need to figure out how to simulate production conditions for load and stress tests. \u00a0How do you go about throwing thousands or millions of requests at your app?<\/p>\n<p>You don&#8217;t want to do it by paying hordes of developers, testers, and data entry people to do it manually. \u00a0Seriously, please don&#8217;t do this. \u00a0It&#8217;s inhumane and ineffective. \u00a0We&#8217;re not talking about a good ole&#8217; fashioned bug bash here. \u00a0We&#8217;re talking about a simulation of exposing your app to the internet.<\/p>\n<p>Find yourself some tools and\/or services to help you with this.<\/p>\n<h3>Automate the Simulation<\/h3>\n<p>Now that you have an environment and tooling for the testing, you need to automate the operation. \u00a0I&#8217;m talking about a different sort of automation than in the last section. \u00a0That involved automating the simulated requests and usage scenarios. \u00a0I&#8217;m talking now about automating the bigger picture.<\/p>\n<p>As part of your deployment pipeline, you need to automate deployment to this performance testing environment. \u00a0You&#8217;ll then need to automate the kickoff of the performance tests, as well as the recording of the results, along with passes and fails. \u00a0Don&#8217;t underestimate the complexity here, particularly in the case of any endurance testing you might do.<\/p>\n<h3>Establish Baselines<\/h3>\n<p>Traditional correctness is easy in a sense. \u00a0&#8220;When I input X, I should get back Y.&#8221; \u00a0You can easily test for such a thing. \u00a0You just input X, check for Y and fail for anything but Y.<\/p>\n<p>With performance testing, the waters muddy a bit. \u00a0You no longer have true and false, but rather thresholds and guidelines. \u00a0For instance, you might say that a response should have a certain average time and a certain unacceptable maximum time. \u00a0You might have runs that trouble you, but don&#8217;t stop you from shipping. \u00a0And, frankly, you might start out not even knowing exactly what to expect.<\/p>\n<p>For this reason, you should establish initial baselines. \u00a0See how your app performs as-is, recording lots of data. \u00a0Assuming you find the run acceptable, establish your results as baselines. \u00a0(If it&#8217;s not acceptable, fix it until it is.) \u00a0You&#8217;ll keep this around so that you can judge whether or not performance regresses with time. \u00a0And you&#8217;ll also want to have this data in case you want to target sustained improvements over the course of future releases.<\/p>\n<h3>Test and Benchmark as You Go<\/h3>\n<p>With all of the prep out of the way, you&#8217;re ready to incorporate the performance testing into your overall strategy. \u00a0You have your environment, all surrounding automation, and your baselines. \u00a0Now you just have to run your tests regularly, benchmarking against the baselines that you&#8217;ve established.<\/p>\n<p>You may start out with improvement goals from the start. \u00a0But you also might content yourself for the time being. \u00a0Either way, make sure to evaluate both your test results and your evolving needs. \u00a0If your competitors later start to boast faster load times or more responsive applications, you should adjust your strategy accordingly.<\/p>\n<p>We had indeed come a long way since the early days of my career when people hand-coded things on servers in the cgi-bin folder. \u00a0Testing techniques have evolved in surprising ways. \u00a0But bear in mind that they will <em>continue<\/em> to do so. \u00a0Make sure you keep adapting quickly enough to stay on the right side of the curve.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Software development, as a profession, has evolved in fits and starts over the years. \u00a0When I think back a couple of decades, I find myself a little amazed. \u00a0During the infancy of the web, hand-coding PHP (or PERL) live on a production machine seemed perfectly fine. At first blush, that might just seem like sloppiness. [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":38382,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7,10],"tags":[127],"class_list":["post-11596","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","category-team","tag-deployment-tracking"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v25.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Web Application Performance Testing: Process and Tips<\/title>\n<meta name=\"description\" content=\"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Web Application Performance Testing: Process and Tips\" \/>\n<meta property=\"og:description\" content=\"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Stackify\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Stackify\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-01T11:16:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-20T05:35:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"881\" \/>\n\t<meta property=\"og:image:height\" content=\"441\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Erik Dietrich\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@stackify\" \/>\n<meta name=\"twitter:site\" content=\"@stackify\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Erik Dietrich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\"},\"author\":{\"name\":\"Erik Dietrich\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/4eb4876b2d07f2456290a72bc4fcfc65\"},\"headline\":\"Fundamentals of Web Application Performance Testing\",\"datePublished\":\"2017-06-01T11:16:26+00:00\",\"dateModified\":\"2024-05-20T05:35:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\"},\"wordCount\":1444,\"publisher\":{\"@id\":\"https:\/\/stackify.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg\",\"keywords\":[\"Deployment Tracking\"],\"articleSection\":[\"Developer Tips, Tricks &amp; Resources\",\"Insights for Dev Managers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\",\"url\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\",\"name\":\"Web Application Performance Testing: Process and Tips\",\"isPartOf\":{\"@id\":\"https:\/\/stackify.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg\",\"datePublished\":\"2017-06-01T11:16:26+00:00\",\"dateModified\":\"2024-05-20T05:35:18+00:00\",\"description\":\"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage\",\"url\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg\",\"contentUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg\",\"width\":881,\"height\":441},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/stackify.com\/#website\",\"url\":\"https:\/\/stackify.com\/\",\"name\":\"Stackify\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/stackify.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/stackify.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/stackify.com\/#organization\",\"name\":\"Stackify\",\"url\":\"https:\/\/stackify.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png\",\"contentUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png\",\"width\":1377,\"height\":430,\"caption\":\"Stackify\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Stackify\/\",\"https:\/\/x.com\/stackify\",\"https:\/\/www.instagram.com\/stackify\/\",\"https:\/\/www.linkedin.com\/company\/2596184\",\"https:\/\/www.youtube.com\/stackify\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/4eb4876b2d07f2456290a72bc4fcfc65\",\"name\":\"Erik Dietrich\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8d2a69c7391254ec05da64052c94f3d9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8d2a69c7391254ec05da64052c94f3d9?s=96&d=mm&r=g\",\"caption\":\"Erik Dietrich\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Web Application Performance Testing: Process and Tips","description":"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/","og_locale":"en_US","og_type":"article","og_title":"Web Application Performance Testing: Process and Tips","og_description":"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.","og_url":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/","og_site_name":"Stackify","article_publisher":"https:\/\/www.facebook.com\/Stackify\/","article_published_time":"2017-06-01T11:16:26+00:00","article_modified_time":"2024-05-20T05:35:18+00:00","og_image":[{"width":881,"height":441,"url":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg","type":"image\/jpeg"}],"author":"Erik Dietrich","twitter_card":"summary_large_image","twitter_creator":"@stackify","twitter_site":"@stackify","twitter_misc":{"Written by":"Erik Dietrich","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#article","isPartOf":{"@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/"},"author":{"name":"Erik Dietrich","@id":"https:\/\/stackify.com\/#\/schema\/person\/4eb4876b2d07f2456290a72bc4fcfc65"},"headline":"Fundamentals of Web Application Performance Testing","datePublished":"2017-06-01T11:16:26+00:00","dateModified":"2024-05-20T05:35:18+00:00","mainEntityOfPage":{"@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/"},"wordCount":1444,"publisher":{"@id":"https:\/\/stackify.com\/#organization"},"image":{"@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg","keywords":["Deployment Tracking"],"articleSection":["Developer Tips, Tricks &amp; Resources","Insights for Dev Managers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/","url":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/","name":"Web Application Performance Testing: Process and Tips","isPartOf":{"@id":"https:\/\/stackify.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage"},"image":{"@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg","datePublished":"2017-06-01T11:16:26+00:00","dateModified":"2024-05-20T05:35:18+00:00","description":"Get tips on how to understand your production conditions, set up your test, automate a simulation and more web application performance testing advice.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/fundamentals-web-application-performance-testing\/#primaryimage","url":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg","contentUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/06\/WhatIsPerformanceTesting-881x441-1.jpg","width":881,"height":441},{"@type":"WebSite","@id":"https:\/\/stackify.com\/#website","url":"https:\/\/stackify.com\/","name":"Stackify","description":"","publisher":{"@id":"https:\/\/stackify.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stackify.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/stackify.com\/#organization","name":"Stackify","url":"https:\/\/stackify.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/#\/schema\/logo\/image\/","url":"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png","contentUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png","width":1377,"height":430,"caption":"Stackify"},"image":{"@id":"https:\/\/stackify.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Stackify\/","https:\/\/x.com\/stackify","https:\/\/www.instagram.com\/stackify\/","https:\/\/www.linkedin.com\/company\/2596184","https:\/\/www.youtube.com\/stackify"]},{"@type":"Person","@id":"https:\/\/stackify.com\/#\/schema\/person\/4eb4876b2d07f2456290a72bc4fcfc65","name":"Erik Dietrich","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8d2a69c7391254ec05da64052c94f3d9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8d2a69c7391254ec05da64052c94f3d9?s=96&d=mm&r=g","caption":"Erik Dietrich"}}]}},"_links":{"self":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/11596"}],"collection":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/comments?post=11596"}],"version-history":[{"count":2,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/11596\/revisions"}],"predecessor-version":[{"id":44148,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/11596\/revisions\/44148"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/media\/38382"}],"wp:attachment":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/media?parent=11596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/categories?post=11596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/tags?post=11596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}