{"id":6480,"date":"2018-06-23T23:18:26","date_gmt":"2018-06-24T03:18:26","guid":{"rendered":"https:\/\/www.jitendrazaa.com\/blog\/?p=6480"},"modified":"2018-06-23T23:19:37","modified_gmt":"2018-06-24T03:19:37","slug":"what-is-micro-services","status":"publish","type":"post","link":"https:\/\/www.jitendrazaa.com\/blog\/others\/tips\/what-is-micro-services\/","title":{"rendered":"What is Micro Services"},"content":{"rendered":"<p style=\"text-align: justify;\">I have read many posts and watched video to understand Microservices precisely however I found <a href=\"https:\/\/en.wikipedia.org\/wiki\/Martin_Fowler\">Martin Fowler&#8217;s<\/a> explanation about Microservices most helpful. This blog post is just the recap &amp; summary of what I understood about Microservices\u00a0 Architecture.<\/p>\n<h3>Characteristics of Microservices<\/h3>\n<ol>\n<li style=\"text-align: justify;\"><strong>Build services in form of Components<\/strong>\n<ul>\n<li>Components can be independently replaceable and upgradable<\/li>\n<li>Components can be combination of Libraries and Services<\/li>\n<li>Services can be built in other languages and services can inter communicate<\/li>\n<\/ul>\n<\/li>\n<li style=\"text-align: justify;\"><strong>Organized keeping business rules in mind<\/strong>\n<ul>\n<li>Traditionally (Monolithic), Services were organized considering technical aspects like different services related to UI, Database, Server etc<\/li>\n<li>Microservices, suggests to group it as per business capabilities like shipping, Order, Catalog etc<\/li>\n<\/ul>\n<\/li>\n<li><strong>Smart end points and dump pipe<\/strong>\n<ul>\n<li style=\"text-align: justify;\">In ESB (aka spaghetti box \ud83d\ude09 lol), we tend to add all smartness in ESB itself and endpoint is just a dump where consumer gets preprocessed data<\/li>\n<li style=\"text-align: justify;\">MicroServices on other hand encourages dump pipe (ESB) and smart endpoints<\/li>\n<li>\n<div class=\"mceTemp\">\n<p><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-6488\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-Smart-Endpoints-Page-1.png?resize=840%2C396&#038;ssl=1\" alt=\"Micro Services Smart Endpoints\" width=\"840\" height=\"396\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-Smart-Endpoints-Page-1.png?resize=1024%2C483&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-Smart-Endpoints-Page-1.png?resize=300%2C142&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-Smart-Endpoints-Page-1.png?resize=768%2C362&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-Smart-Endpoints-Page-1.png?w=1060&amp;ssl=1 1060w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Decentralized Governance or Data Governance<\/strong>\n<ul>\n<li>Every Service should be responsible for their own database &amp; persistence<\/li>\n<li style=\"text-align: justify;\">Can&#8217;t communicate to other databases directly, it should be via API&#8217;s only (These are mostly inspired by Amazon&#8217;s 2 Pizza team size)<\/li>\n<li style=\"text-align: justify;\">Every service can have different languages or tools<\/li>\n<\/ul>\n<\/li>\n<li style=\"text-align: justify;\"><strong>Infrastructure Automation<\/strong>\n<ul>\n<li><a href=\"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/continuous-integration-vs-continuous-delivery-vs-continuous-deployment\/\">Continuous Delivery<\/a> is very important for each services to make sure there is no or minimal down time<\/li>\n<li>Top class monitoring capabilities to perform analysis of degraded performance or downtime<\/li>\n<li>Important to have roll back plan and ability to spin up new server in case of service or service fail<\/li>\n<\/ul>\n<\/li>\n<li><strong>Design for failure<\/strong>\n<ul>\n<li style=\"text-align: justify;\">As there could be many microservices, its inevitable that they would fail.<\/li>\n<li style=\"text-align: justify;\">Companies like Netflix, they have a application (chaos monkey) which randomly goes out and fail their microservices deliberately<\/li>\n<li style=\"text-align: justify;\">Its important to perform these kind of exercises to understand how resilient their network and microservices are.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><!--more--><\/p>\n<h3>Similarities between SOA and Microservices<\/h3>\n<p style=\"text-align: justify;\">Its debatable topic, as many Architects believe that Microservices is just a new term and does exactly what SOA is supposed to do. SOA is here for decades and Software Architects are designing their system around same characteristics as a part of SOA Architecture. I think SOA is very broad term and everyone has their own definition for SOA, it would be safe to say that Microservices is just a subset of SOA and derived its characteristics from its parent.<\/p>\n<figure id=\"attachment_6492\" aria-describedby=\"caption-attachment-6492\" style=\"width: 620px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6492\" src=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-vs-SOA-Page-2-1.png?resize=620%2C400&#038;ssl=1\" alt=\"Micro Services vs SOA\" width=\"620\" height=\"400\" srcset=\"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-vs-SOA-Page-2-1.png?w=620&amp;ssl=1 620w, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2018\/06\/Micro-Services-vs-SOA-Page-2-1.png?resize=300%2C194&amp;ssl=1 300w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><figcaption id=\"caption-attachment-6492\" class=\"wp-caption-text\">Micro Services vs SOA<\/figcaption><\/figure>\n<h3>How big the Microservices can be<\/h3>\n<p style=\"text-align: justify;\">Again debatable answers, everyone can have different opinion. However as per Martin, your Microservices can only be as big as your two pizza team size.<\/p>\n<h3>Advantages of Monolith Architecture<\/h3>\n<ul>\n<li style=\"text-align: justify;\">Monolithic applications are <strong>simpler<\/strong> to build. on other hand Microservices are complex to build and may contribute to project failure of not planned well in advance.<\/li>\n<li style=\"text-align: justify;\">Monolithic application experience are <strong>consistent<\/strong>. Its mostly guaranteed that if one functionality is working then others will work as well.<\/li>\n<li style=\"text-align: justify;\">Ability to <strong>refactor code between modules<\/strong>. As its same application, developers can decide and move codes between modules as a part of code review or refactoring. The same advantage may be disadvantage for some teams if they want to preserve their module.<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\">Advantages of Microservices<\/h3>\n<ul>\n<li style=\"text-align: justify;\">You can perform <strong>Partial Deployment<\/strong> in microservices. Instead of deploying whole application, we can just deploy services.<\/li>\n<li style=\"text-align: justify;\"><strong>Availability\u00a0<\/strong>of system is higher. If one microservice goes down, application would still work for other part. In case of monolithic application, chances are high that whole application goes down because of some server issue. Because of this , obviously microservices looses Consistency.<\/li>\n<li style=\"text-align: justify;\">Microservices can <strong>Preserve Modularity<\/strong>\u00a0so that code is owned &amp; maintained in same module. If some team needs to refactor code and move between module then same becomes disadvantage and Monolith applications wins over it.<\/li>\n<li style=\"text-align: justify;\">Ability to go in <strong>multiple Platforms <\/strong>for same application. Every microservices can be built on their own and different languages.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>I have read many posts and watched video to understand Microservices precisely however I found Martin Fowler&#8217;s explanation about Microservices most helpful. This blog post is just the recap &amp; summary of what I understood about Microservices\u00a0 Architecture. Characteristics of Microservices Build services in form of Components Components can be independently replaceable and upgradable Components [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"jz_research_post":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[17],"tags":[446],"class_list":["post-6480","post","type-post","status-publish","format-standard","hentry","category-tips","tag-microservices"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1359,"url":"https:\/\/www.jitendrazaa.com\/blog\/sql\/sqlserverintegrationservices\/etl-dts-and-ssis-introduction\/","url_meta":{"origin":6480,"position":0},"title":"ETL , DTS and SSIS Introduction","author":"Jitendra","date":"December 4, 2010","format":false,"excerpt":"Introduction to ETL Services, Data transformation services, SQL Server Integration Services, Advantages of SSIS over DTS, New features of SSIS 2008","rel":"","context":"In &quot;SSIS&quot;","block_context":{"text":"SSIS","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/sql\/sqlserverintegrationservices\/"},"img":{"alt_text":"What is ETL Extraction Transformation Loading","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2010\/12\/What-is-ETL-Extraction-Transformation-Loading.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":5796,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/lightning-data-services-standard-controller-for-lightning-components\/","url_meta":{"origin":6480,"position":1},"title":"Lightning Data Service &#8211; Standard Controller for Lightning Components","author":"Jitendra","date":"July 22, 2017","format":false,"excerpt":"Best Practices for Salesforce Lightning Component. How Lightning Data Service can improve Lightning Component performance and solve inconsistent data problem without writing single line of Apex code. Demo source code, image and slides included.","rel":"","context":"In &quot;Apex&quot;","block_context":{"text":"Apex","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/apex\/"},"img":{"alt_text":"Salesforce Lightning Data Services","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/07\/Salesforce-Lightning-Data-Services.png?fit=1045%2C395&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":1563,"url":"https:\/\/www.jitendrazaa.com\/blog\/java\/snmp\/install-snmp-service-in-windows-xp-and-overview-of-mib-explorer\/","url_meta":{"origin":6480,"position":2},"title":"Install SNMP Service in Windows XP and Overview of MIB Explorer","author":"Jitendra","date":"February 23, 2011","format":false,"excerpt":"Install SNMP Service in Windows XP and Overview of MIB Explorer","rel":"","context":"In &quot;SNMP&quot;","block_context":{"text":"SNMP","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/java\/snmp\/"},"img":{"alt_text":"Install SNMP Service in Windows XP","src":"https:\/\/i0.wp.com\/jitendrazaa.com\/blog\/wp-content\/uploads\/2011\/02\/Install-SNMP-Service-in-Windows-XP.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":6298,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-winter-18-release-my-favorite-features\/","url_meta":{"origin":6480,"position":3},"title":"Salesforce Winter 18 Release \u2013 My Favorite Features","author":"Jitendra","date":"October 4, 2017","format":false,"excerpt":"My favorite Salesforce Winter 18 features about Lightning, Flow, Platform Event , Shield and Salesforce DX","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Flow in Salesforce App Builder","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2017\/10\/Flow-in-Salesforce-App-Builder.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":30745,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/salesforce-business-rules-engine-guide\/","url_meta":{"origin":6480,"position":4},"title":"Salesforce Business Rules Engine Guide","author":"Jitendra Zaa","date":"December 20, 2025","format":false,"excerpt":"Master Salesforce Business Rules Engine. Complete guide covering expression sets, decision tables, matrices, real-world use cases, and implementation.","rel":"","context":"In &quot;Salesforce&quot;","block_context":{"text":"Salesforce","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/"},"img":{"alt_text":"Salesforce Business Rules Engine Complete Guide - Featured Image","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/BRE-Guide-Featured-16x9-1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/BRE-Guide-Featured-16x9-1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/BRE-Guide-Featured-16x9-1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/BRE-Guide-Featured-16x9-1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2025\/12\/BRE-Guide-Featured-16x9-1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":6920,"url":"https:\/\/www.jitendrazaa.com\/blog\/salesforce\/data-exchange-between-aura-lightning-web-components-lwc-and-visualforce\/","url_meta":{"origin":6480,"position":5},"title":"Event Handling between Aura, Lightning Web Components (LWC) and Visualforce","author":"Jitendra","date":"October 16, 2019","format":false,"excerpt":"How to use Lightning Message Services for event handling between Lightning Web Components, Aura Components and Visualforce","rel":"","context":"In &quot;Lightning&quot;","block_context":{"text":"Lightning","link":"https:\/\/www.jitendrazaa.com\/blog\/category\/salesforce\/lightning\/"},"img":{"alt_text":"Salesforce Lightning Message Service","src":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/10\/Salesforce-Lightning-Message-Service.png?fit=1200%2C1046&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/10\/Salesforce-Lightning-Message-Service.png?fit=1200%2C1046&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/10\/Salesforce-Lightning-Message-Service.png?fit=1200%2C1046&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/10\/Salesforce-Lightning-Message-Service.png?fit=1200%2C1046&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.jitendrazaa.com\/blog\/wp-content\/uploads\/2019\/10\/Salesforce-Lightning-Message-Service.png?fit=1200%2C1046&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/comments?post=6480"}],"version-history":[{"count":7,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6480\/revisions"}],"predecessor-version":[{"id":6495,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/posts\/6480\/revisions\/6495"}],"wp:attachment":[{"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/media?parent=6480"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/categories?post=6480"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jitendrazaa.com\/blog\/wp-json\/wp\/v2\/tags?post=6480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}