{"id":2563,"date":"2022-11-30T18:32:15","date_gmt":"2022-11-30T18:32:15","guid":{"rendered":"https:\/\/beon.tech\/blog\/?p=2563"},"modified":"2026-04-06T15:05:51","modified_gmt":"2026-04-06T18:05:51","slug":"consumer-driven-contract-testing-in-a-microservice-architecture","status":"publish","type":"post","link":"https:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/","title":{"rendered":"Consumer Driven Contract Testing In a Microservice Architecture"},"content":{"rendered":"\n<p>Building an E2E test suite in a distributed environment can be a challenging task, in many cases it could even be <a href=\"https:\/\/pactflow.io\/blog\/proving-e2e-tests-are-a-scam\/\">infeasible considering its complexity and cost<\/a>, besides that, continuous integration pipelines execution could be very time consuming. <\/p>\n\n\n\n<p>Instead of focusing on applications interactions and behaviors, developers probably would spend a considerable amount of time fixing environment specific issues.<\/p>\n\n\n\n<p>One possible alternative to achieve the desired testing coverage in this scenario would be to use a CDC testing strategy (<a href=\"https:\/\/microsoft.github.io\/code-with-engineering-playbook\/automated-testing\/cdc-testing\/\">Consumer Driven Contract Testing<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is CDC (Consumer Driven Contract Testing)?<\/h2>\n\n\n\n<p>Basically CDC testing is a process which consists of the consumer setting expectations about the provider, and after that, those expectations are validated at the provider side.<\/p>\n\n\n\n<p>This kind of approach is well suited for scenarios at which the same organization is responsible for both consumers and providers involved in the solution.<\/p>\n\n\n\n<p>Pact is a contract testing framework built on top of the CDC testing idea, it supports a reasonable number of programming languages, usually integrating with the Pact Broker or its commercial variant PactFlow. Pact Broker and Pact Flow provide an UI to visualize your system dependencies, pact verifications and other features.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to evaluate pact features<\/h2>\n\n\n\n<p>Diving into the getting started docs, usually you will see examples of testing based on sharing of the contract file, being the consumer and provider located in the same repository. In this article we will see how we can tweak one of those samples to integrate with Pact Broker, in order to work with separated repositories and simulate a real world scenario. <\/p>\n\n\n\n<p>To evaluate the Pact Broker in a development environment, you can use a docker compose file which suits best for your needs&nbsp; from <a href=\"https:\/\/github.com\/pact-foundation\/pact-broker-docker\">this repo<\/a> (docker-compose-dev.yml is a good choice for testing purposes). Once you have your pact broker instance running, you can go to the getting started docs of your preferred language. In this article we are going to use <a href=\"https:\/\/github.com\/pact-foundation\/pact-ruby\">ruby<\/a>.<\/p>\n\n\n\n<p><br>The original tutorial is based on other web frameworks, but in that case we have created two rails api\u2019s to evaluate pact features. One is the zoo app and the other is the animal app, being zoo the consumer and animal the provider.<br>We are not going to setup authentication features, since the server is for testing purposes only:<\/p>\n\n\n\n<p>Zoo application Rakefile<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require_relative \"config\/application\" \nRails.application.load_tasks\nrequie 'pact_broker\/client\/tasks'\nPactBroker::Client::PublicationTask.new do | task |\n&nbsp;&nbsp;task.consumer_version = '1.0-beta'\n&nbsp;&nbsp;task.pact_broker_base_url = \"http:\/\/localhost:9393\" # assuming your pact broker instance is running on port 9393\nend<\/pre>\n\n\n\n<p>After running our test suite from the consumer application (bundle exec rspec), the contract files will be generated (spec\/pacts\/zoo_app-animal_service.json\/spec\/pacts\/zoo_consumer-animal_producer.json), and we can publish it to our Pact Broker using a rake task:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rake pact:publish<\/pre>\n\n\n\n<p>You will be able to see your pacts at the pact broker home page, and they are not verified yet, since testing from the provider is pending:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/vWF2tTabVUgtTuFLNAKAfPXcwawUF_NtM9FlNVmXXD-0lzkRmp7E8XtRhWVxYTrUUKFIxXBMSGZgj7luwn5q6ePTja-kIISWr9FayFmCnRQCM33iEBAZ_WkZzq0VR7mS6pJtL6vjJvMrBkKfoP2pew\" alt=\"Pact broker home page with the zoo app and zoo consumer app\"\/><\/figure>\n\n\n\n<p>Our pact_helper at the provider side will look like that:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'pact\/provider\/rspec'\nPact.provider_states_for \"Zoo App\" do\n&nbsp;&nbsp;provider_state \"an alligator exists\" do\n&nbsp;&nbsp;&nbsp;no_op\n&nbsp;&nbsp;end\nend\n\nPact.service_provider \"Animal Service\" do\n&nbsp;&nbsp;app_version '2.0-beta'\n&nbsp;&nbsp;publish_verification_results true\n&nbsp;&nbsp;honours_pact_with 'Zoo App' do\n&nbsp;&nbsp;&nbsp;&nbsp;pact_uri 'http:\/\/localhost:9393\/pacts\/provider\/Animal%20Service\/consumer\/Zoo%20App\/latest.json'\n&nbsp;&nbsp;end\nend<\/pre>\n\n\n\n<p>There is a separated helper for testing messaging communication (message_helper.rb)<\/p>\n\n\n\n<p>The \u201cpublish_verification_results true\u201d snippet will enable publishing the test results to our pact broker. In order to use the pact contract published from the consumer, we configure the pact \u201cZoo App\u201d to be loaded from the pact broker uri (pact_uri).<\/p>\n\n\n\n<p>The Animal App Rakefile contains a task definition to verify messaging contracts and also is responsible for requiring Pact Tasks:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">require 'pact\/tasks'\nrequire_relative \"config\/application\"\nRails.application.load_tasks\nrequire 'pact_broker\/client\/tasks'\nPact::VerificationTask.new(:messaging) do | task |\n&nbsp;&nbsp;task.uri 'http:\/\/localhost:9393\/pacts\/provider\/Animal%20Producer\/consumer\/Zoo%20Consumer\/latest.json', pact_helper: '.\/spec\/message_consumer\/message_helper.rb'\nend<\/pre>\n\n\n\n<p>To run the tests related to our service at the provider side we can use the following rake task:<\/p>\n\n\n\n<p>rake pact:verify RAILS_ENV=test<\/p>\n\n\n\n<p>The article demo shows a very simple messaging test scenario, you can run it from the provider using the command rake verify:pact:messaging RAILS_ENV=test<\/p>\n\n\n\n<p>After running both tasks from the provider, your pacts must be verified<\/p>\n\n\n\n<p>.<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh5.googleusercontent.com\/DfA248hVM-hbqYxSVJlX9P6xauunkduNA1RLJ0zIJ5ZTnNB9t1yAzRxlxQScZFyBbx9Fw7bpBHTKD_X8kZWdCJVbUj0KxPUSLp76xTgX13AIpbaVO3nONnZi2pn7p6lqhJWT7C0l-ImC2TSAFbgIKQ\" width=\"624\" height=\"279\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final thoughts<\/h2>\n\n\n\n<p>Although contract testing is a great alternative to deliver quality in a distributed environment, there are some drawbacks, more specifically about using the Pact framework. Some languages provide better support and features than others, also sometimes it\u2019s hard to find documentation or guides on using more advanced features. It is worth mentioning that having good communication between teams is essential to ensure your contract testing strategy will succeed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Building an E2E test suite in a distributed environment can be a challenging task, in many cases it could even be infeasible considering its complexity and cost, besides that, continuous integration pipelines execution could be very time consuming. Instead of focusing on applications interactions and behaviors, developers probably would spend a considerable amount of time<a class=\"read_more_linkk\" href=\"https:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/\">&#8230;<\/a><\/p>\n","protected":false},"author":25,"featured_media":2490,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[168],"tags":[480,479,156],"class_list":["post-2563","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technical-engineering","tag-consumer-driven-contract","tag-microservice-architecture","tag-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Consumer-Driven Contract Testing in Microservices | BEON.tech Blog<\/title>\n<meta name=\"description\" content=\"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Consumer-Driven Contract Testing in Microservices | BEON.tech Blog\" \/>\n<meta property=\"og:description\" content=\"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/\" \/>\n<meta property=\"og:site_name\" content=\"Software &amp; Tech Hiring Insights | BEON.tech Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-30T18:32:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-06T18:05:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"470\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nicolas Michels\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@beontechok\" \/>\n<meta name=\"twitter:site\" content=\"@beontechok\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nicolas Michels\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/\"},\"author\":{\"name\":\"Nicolas Michels\",\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/#\\\/schema\\\/person\\\/81efeedeea7477882215a19e0b8dd572\"},\"headline\":\"Consumer Driven Contract Testing In a Microservice Architecture\",\"datePublished\":\"2022-11-30T18:32:15+00:00\",\"dateModified\":\"2026-04-06T18:05:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/\"},\"wordCount\":687,\"image\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/tech-6.png\",\"keywords\":[\"Consumer Driven Contract\",\"Microservice Architecture\",\"Software Development\"],\"articleSection\":[\"Technical Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/\",\"url\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/\",\"name\":\"Consumer-Driven Contract Testing in Microservices | BEON.tech Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/tech-6.png\",\"datePublished\":\"2022-11-30T18:32:15+00:00\",\"dateModified\":\"2026-04-06T18:05:51+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/#\\\/schema\\\/person\\\/81efeedeea7477882215a19e0b8dd572\"},\"description\":\"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#primaryimage\",\"url\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/tech-6.png\",\"contentUrl\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/tech-6.png\",\"width\":1000,\"height\":470},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/beontech.wpengine.com\\\/consumer-driven-contract-testing-in-a-microservice-architecture\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/beon.tech\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Consumer Driven Contract Testing In a Microservice Architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/beon.tech\\\/blog\\\/\",\"name\":\"Software &amp; Tech Hiring Insights | BEON.tech Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/beon.tech\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/#\\\/schema\\\/person\\\/81efeedeea7477882215a19e0b8dd572\",\"name\":\"Nicolas Michels\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BEON-FHD-DIA-1-326-scaled-96x96.jpg\",\"url\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BEON-FHD-DIA-1-326-scaled-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/beon.tech\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/BEON-FHD-DIA-1-326-scaled-96x96.jpg\",\"caption\":\"Nicolas Michels\"},\"description\":\"Nicolas Michels is a Software Engineer with around 10 years of experience focused on building web applications. He has worked across full-stack projects using technologies like Ruby on Rails and ASP.NET, and enjoys collaborating with teammates to share knowledge and deliver strong results. He\u2019s also passionate about open-source software and has contributed to the Entity Framework Core project.\",\"url\":\"https:\\\/\\\/beon.tech\\\/blog\\\/author\\\/nicolasmichels\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Consumer-Driven Contract Testing in Microservices | BEON.tech Blog","description":"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.","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:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/","og_locale":"en_US","og_type":"article","og_title":"Consumer-Driven Contract Testing in Microservices | BEON.tech Blog","og_description":"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.","og_url":"https:\/\/beon.tech\/blog\/consumer-driven-contract-testing-in-a-microservice-architecture\/","og_site_name":"Software &amp; Tech Hiring Insights | BEON.tech Blog","article_published_time":"2022-11-30T18:32:15+00:00","article_modified_time":"2026-04-06T18:05:51+00:00","og_image":[{"width":1000,"height":470,"url":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","type":"image\/png"}],"author":"Nicolas Michels","twitter_card":"summary_large_image","twitter_creator":"@beontechok","twitter_site":"@beontechok","twitter_misc":{"Written by":"Nicolas Michels","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#article","isPartOf":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/"},"author":{"name":"Nicolas Michels","@id":"https:\/\/beon.tech\/blog\/#\/schema\/person\/81efeedeea7477882215a19e0b8dd572"},"headline":"Consumer Driven Contract Testing In a Microservice Architecture","datePublished":"2022-11-30T18:32:15+00:00","dateModified":"2026-04-06T18:05:51+00:00","mainEntityOfPage":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/"},"wordCount":687,"image":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","keywords":["Consumer Driven Contract","Microservice Architecture","Software Development"],"articleSection":["Technical Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/","url":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/","name":"Consumer-Driven Contract Testing in Microservices | BEON.tech Blog","isPartOf":{"@id":"https:\/\/beon.tech\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#primaryimage"},"image":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#primaryimage"},"thumbnailUrl":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","datePublished":"2022-11-30T18:32:15+00:00","dateModified":"2026-04-06T18:05:51+00:00","author":{"@id":"https:\/\/beon.tech\/blog\/#\/schema\/person\/81efeedeea7477882215a19e0b8dd572"},"description":"Find tips and insights to ensure your microservice architecture is doing what it should with consumer driven contract testing.","breadcrumb":{"@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#primaryimage","url":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","contentUrl":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","width":1000,"height":470},{"@type":"BreadcrumbList","@id":"https:\/\/beontech.wpengine.com\/consumer-driven-contract-testing-in-a-microservice-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beon.tech\/blog\/"},{"@type":"ListItem","position":2,"name":"Consumer Driven Contract Testing In a Microservice Architecture"}]},{"@type":"WebSite","@id":"https:\/\/beon.tech\/blog\/#website","url":"https:\/\/beon.tech\/blog\/","name":"Software &amp; Tech Hiring Insights | BEON.tech Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beon.tech\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/beon.tech\/blog\/#\/schema\/person\/81efeedeea7477882215a19e0b8dd572","name":"Nicolas Michels","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2026\/03\/BEON-FHD-DIA-1-326-scaled-96x96.jpg","url":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2026\/03\/BEON-FHD-DIA-1-326-scaled-96x96.jpg","contentUrl":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2026\/03\/BEON-FHD-DIA-1-326-scaled-96x96.jpg","caption":"Nicolas Michels"},"description":"Nicolas Michels is a Software Engineer with around 10 years of experience focused on building web applications. He has worked across full-stack projects using technologies like Ruby on Rails and ASP.NET, and enjoys collaborating with teammates to share knowledge and deliver strong results. He\u2019s also passionate about open-source software and has contributed to the Entity Framework Core project.","url":"https:\/\/beon.tech\/blog\/author\/nicolasmichels\/"}]}},"featured_image_src":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","featured_image_src_square":"https:\/\/beon.tech\/blog\/wp-content\/uploads\/2023\/02\/tech-6.png","author_info":{"display_name":"Nicolas Michels","author_link":"https:\/\/beon.tech\/blog\/author\/nicolasmichels\/"},"_links":{"self":[{"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/posts\/2563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/comments?post=2563"}],"version-history":[{"count":0,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/posts\/2563\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/media\/2490"}],"wp:attachment":[{"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/media?parent=2563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/categories?post=2563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beon.tech\/blog\/wp-json\/wp\/v2\/tags?post=2563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}