{"id":920,"date":"2018-12-16T04:55:24","date_gmt":"2018-12-16T04:55:24","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw93\/?p=920"},"modified":"2018-12-28T19:40:49","modified_gmt":"2018-12-28T19:40:49","slug":"do-microservices-make-soa-irrelevant","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/12\/16\/do-microservices-make-soa-irrelevant\/","title":{"rendered":"Do Microservices Make SOA Irrelevant?"},"content":{"rendered":"<p>Is service-oriented architecture, or SOA, dead? You may be tempted to<br \/>\nthink so. But that\u2019s not really true. Yes, SOA itself may have receded<br \/>\ninto the shadows as newer ideas have come forth, yet the remnants of SOA<br \/>\nare still providing the fuel that is propelling the microservices market<br \/>\nforward. That\u2019s because incorporating SOA principles into the design and<br \/>\nbuild-out of microservices is the best way to ensure that your product<br \/>\nor service offering is well positioned for the long term. In this sense,<br \/>\nunderstanding SOA is crucial for succeeding in the microservices world.<br \/>\nIn this article, I\u2019ll explain which SOA principles you should adopt when<br \/>\ndesigning a microservices app.<\/p>\n<h3>Introduction<\/h3>\n<p>In today\u2019s mobile-first development environment, where code is king, it<br \/>\nis easier than ever to build a service that has a RESTful interface,<br \/>\nconnect it to a datastore and call it a day. If you want to go the extra<br \/>\nmile, piece together a few public software services (free or paid), and<br \/>\nyou can have yourself a proper continuous delivery pipeline. Welcome to<br \/>\nthe modern Web and your fully buzzworthy-compliant application<br \/>\ndevelopment process. In many ways, microservices are a direct descendant<br \/>\nof SOA, and a bit like the punk rock of the services world. No strict<br \/>\nrules, just some basic principles that loosely keep everyone on the same<br \/>\npage. And just like punk rock, microservices initially embraced a<br \/>\ndo-it-yourself ethic, but has been evolving and picking up some<br \/>\nstructure which moved microservices into the mainstream. It\u2019s not just<br \/>\nthe dot com or Web companies that use microservices anymore\u2014all<br \/>\ncompanies are interested.<\/p>\n<h3>Definitions<\/h3>\n<p>For the purposes of this discussion, the following are the definitions I<br \/>\nwill be using.<\/p>\n<p>Microservices: The implementation of a specific business function,<br \/>\ndelivered as a separate deployable artifact, using queuing or a RESTful<br \/>\n(JSON) interface, which can be written in any language, and that<br \/>\nleverages a continuous delivery pipeline.<\/p>\n<p>SOA: Component-based architecture which has the goal of driving<br \/>\nreuse across the technology portfolio within an organization. These<br \/>\ncomponents need to be loosely coupled, and can be services or libraries<br \/>\nwhich are centrally governed and require an organization to use a single<br \/>\ntechnology stack to maximize reusability.<\/p>\n<h3>Positive things about microservices-based development<\/h3>\n<p>As you can tell, microservices possess a couple of distinct features<br \/>\nthat SOA lacked, and they are good:<\/p>\n<p>Allowing smaller, self-sufficient teams to own a product\/service<br \/>\nthat supports a specific business function has drastically improved<br \/>\nbusiness agility and IT responsiveness (to any directions that the<br \/>\nbusiness units they support) want to take.<\/p>\n<p>Automated builds and testing, while possible under SOA, are now<br \/>\nserious table stakes.<\/p>\n<p>Allowing teams to use the tools they want, primarily around which<br \/>\nlanguage and IDE to use.<\/p>\n<p>Using-agile based development with direct access to the business.<br \/>\nMicroservices and mobile development teams have successfully shown<br \/>\nbusinesses how technologists can adapt to and accept constant feedback.<br \/>\nWaterfall software delivery methods suffered from unnecessary overhead<br \/>\nand extended delivery dates as the business changed while the<br \/>\ndevelopment team was off creating products that often didn\u2019t meet the<br \/>\nbusiness\u2019 needs by the time they were delivered. Even iterative<br \/>\ndevelopment methodologies like the Rational Unified Process (RUP) had<br \/>\nlayers of abstraction between the business, product development, and the<br \/>\ndevelopers doing the actual work.<\/p>\n<p>A universal understanding of the minimum granularity of a service.<br \/>\nThere are arguments around \u201cIs adding a client a business function, or<br \/>\nis client management a business function?\u201d So it isn\u2019t perfect, but at<br \/>\nleast both can be understood by the business side that actually runs the<br \/>\nbusiness. You may not want to believe it, but technology is not the<br \/>\nentire business (for most of the world\u2019s enterprises anyway). Back in<br \/>\nthe days when SOA was the king on the hill, some services performed<br \/>\nnothing but a single database operation, and other services were adding<br \/>\na client to the system, which led to nothing but confusion from business<br \/>\nwhen IT did not have a consistent answer.<\/p>\n<h3>How can SOA help?<\/h3>\n<p><img decoding=\"async\" src=\"http:\/\/cdn.rancher.com\/wp-content\/uploads\/2017\/02\/16180354\/Training.png\" alt=\"\" \/> Want to learn more about<br \/>\nDocker, Kubernetes, and Rancher? Join us for free online<br \/>\ntraining After reading those definitions, you are probably<br \/>\nthinking, \u201cMicroservices sounds so much better.\u201d You\u2019re right. It is the<br \/>\nnext evolution for a reason, except that it threw away a lot of the<br \/>\nlessons that were hard-learned in the SOA world. It gave up all the good<br \/>\nthings SOA tried to accomplish because the IT vendors in the space<br \/>\nmorphed everything to push more product. Enterprise integration patterns<br \/>\n(which define how new technologies or concepts are adopted by<br \/>\nenterprises) are a key place where microservices are leveraging the work<br \/>\ndone by the SOA world. Everyone involved in the integration space can<br \/>\nbenefit from these patterns, as they are concepts, and microservices are<br \/>\na great technological way to implement them. Below, I\u2019ve listed two<br \/>\nother areas where SOA principles are being applied inside the<br \/>\nmicroservices ecosystem to great success.<\/p>\n<h4>API Gateways (n\u00e9e ESB)<\/h4>\n<p>Microservices encourage point-to-point connections, and that each client<br \/>\ntake care of their own translations for dates and other nuanced things.<br \/>\nThis is just not sustainable as the number of microservices available<br \/>\nfrom most companies skyrockets. So in comes the concept of an Enterprise<br \/>\nService Bus (ESB), which provides a means of communication between<br \/>\ndifferent application in an SOA environment. SOA originally intended the<br \/>\nESB to be used to carry things between service components\u2014not to be<br \/>\nthe hub and spoke of the entire enterprise, which is what vendors<br \/>\npushed, and large companies bought into, and left such a bad taste in<br \/>\npeople\u2019s mouths. The successful products in the ESB have changed into<br \/>\ntoday\u2019s API gateway vendors, which is a centralized way for a single<br \/>\norganization to manage endpoints they are presenting to the world, and<br \/>\nprovide translation to older services (often SOA\/SOAP) that haven\u2019t been<br \/>\ntouched in years but are vital to the business.<\/p>\n<h4>Overarching standards<\/h4>\n<p>SOA had WS-* standards. They were heavy-handed, but guaranteed<br \/>\ninteroperability (mostly). Having these standards in place, especially<br \/>\nthe more common ones like WS-Security and WS-Federation, allowed<br \/>\nenterprises to call services used in their partner systems\u2014in terms<br \/>\nthat anyone could understand, though they were just a checklist.<br \/>\nMicroservices have begun to formalize a set of standards and the vendors<br \/>\nthat provide the services. The OAuth and OpenID authentication<br \/>\nframeworks are two great examples. As microservices mature, building<br \/>\neverything in-house is fun, fulfilling, and great for the ego, but<br \/>\nultimately frustrating as it creates a lot of technical debt with code<br \/>\nthat constantly needs to be massaged as new features are introduced. The<br \/>\nother side where standards are rapidly consolidating is API design and<br \/>\ndescriptions. In the SOA world, there was one way. It was ugly and<br \/>\nbarely readable by humans, but the Web service definition language<br \/>\n(WSDL), a standardized format for cataloguing network services, was<br \/>\nuniversal. As of April 2017, all major parties (including Google, IBM,<br \/>\nMicrosoft, MuleSoft, and Salesforce.com) involved in providing tools to<br \/>\nbuild RESTful APIs are members of the OpenAPI Initiative. What was once<br \/>\na fractured market with multiple standards (JSON API, WASL, RAML, and<br \/>\nSwagger) is now becoming a single way for everything to be described.<\/p>\n<h3>Conclusion<\/h3>\n<p>SOA originated as a set of concepts, which are the same core concepts as<br \/>\nmicroservices architecture. Where SOA fell down was driving too much<br \/>\ngovernance and not enough \u201cJust get it done.\u201d For microservices to<br \/>\ncontinue to survive, the teams leveraging them need to embrace their<br \/>\nancestry, continue to steal the best of the ideas, and reintroduce them<br \/>\nusing agile development methodologies\u2014with a healthy dose of<br \/>\nanti-governance to stop <a href=\"http:\/\/www.opengroup.org\/soa\/source-book\/gov\/p4.htm#X_Governed_SOA_Processes\">SOA<br \/>\nGovernance<\/a><br \/>\nfrom reappearing. And then, there\u2019s the side job of keeping ITIL and<br \/>\nfriends safely inside the operational teams where they thrive. <em>Vince<br \/>\nPower is a Solution Architect who has a focus on cloud adoption and<br \/>\ntechnology implementations using open source-based technologies. He has<br \/>\nextensive experience with core computing and networking (IaaS), identity<br \/>\nand access management (IAM), application platforms (PaaS), and<br \/>\ncontinuous delivery.<\/em><\/p>\n<p><a href=\"https:\/\/rancher.com\/microservices-make-soa-irrelevant\/\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Is service-oriented architecture, or SOA, dead? You may be tempted to think so. But that\u2019s not really true. Yes, SOA itself may have receded into the shadows as newer ideas have come forth, yet the remnants of SOA are still providing the fuel that is propelling the microservices market forward. That\u2019s because incorporating SOA principles &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/12\/16\/do-microservices-make-soa-irrelevant\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Do Microservices Make SOA Irrelevant?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-920","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/comments?post=920"}],"version-history":[{"count":1,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/920\/revisions"}],"predecessor-version":[{"id":976,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/920\/revisions\/976"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/media?parent=920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/categories?post=920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/tags?post=920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}