{"id":8435,"date":"2018-03-20T10:34:56","date_gmt":"2018-03-20T10:34:56","guid":{"rendered":"http:\/\/www.esds.co.in\/blog\/?p=8435"},"modified":"2018-05-08T07:46:24","modified_gmt":"2018-05-08T07:46:24","slug":"micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2","status":"publish","type":"post","link":"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/","title":{"rendered":"Micro-Services Architecture &#8211; Next Generation Application Architecture for Cloud Ready Applications \u2013 Part II"},"content":{"rendered":"<h2><span class=\"ez-toc-section\" id=\"Next_Generation_Application_Architecture_for_Cloud_Ready_Applications%E2%80%93_Part_II\"><\/span>Next Generation Application Architecture for Cloud Ready Applications\u2013 Part II<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p style=\"text-align: justify;\">The upsurge in micro-services architecture and applications based on it has led to the development of platforms and frameworks that emphasise and foster this application development style. There is not a standard definition of micro-services architecture and nor there are standard guidelines to develop an application around that architecture. There are lot of tools and technologies that help develop applications with micro-services architecture like Container based virtualization with docker, Container orchestration with Kubernetes and platforms like Istio and Apache Kafka.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#Next_Generation_Application_Architecture_for_Cloud_Ready_Applications%E2%80%93_Part_II\" >Next Generation Application Architecture for Cloud Ready Applications\u2013 Part II<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#Istio_%E2%80%93_Easy_management_of_Micro-Services\" >Istio \u2013 Easy management of Micro-Services<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#In_addition_to_these_behaviours_Istio_is_designed_for_extensibility_to_meet_diverse_deployment_needs\" >In addition to these behaviours, Istio is designed for extensibility to meet diverse deployment needs:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#Apache_Kafka_%E2%80%93_A_Distributed_streaming_platform\" >Apache Kafka \u2013 A Distributed streaming platform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#Apache_Kafka_is_described_as_a_distributed_streaming_platform_having_these_capabilities\" >Apache Kafka is described as a distributed streaming platform having these capabilities:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#It_gets_used_for_two_broad_classes_of_application\" >It gets used for two broad classes of application:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#Kafka_has_four_core_APIs\" >Kafka has four core APIs:<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/#In_Conclusion\" >In Conclusion<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-8438 aligncenter\" src=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1.jpg\" alt=\"Monolithic Architecture - Non Micro-Services\" width=\"1195\" height=\"761\" srcset=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1.jpg 1195w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1-150x96.jpg 150w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1-300x191.jpg 300w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1-1024x652.jpg 1024w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-1-660x420.jpg 660w\" sizes=\"auto, (max-width: 1195px) 100vw, 1195px\" \/><\/a><\/p>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Istio_%E2%80%93_Easy_management_of_Micro-Services\"><\/span><strong>Istio \u2013 Easy management of Micro-Services <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p style=\"text-align: justify;\">Istio provides a complete solution to satisfy the diverse requirements of micro-service applications by providing behavioural insights and operational control over the service mesh as a whole. It provides a number of key capabilities uniformly across a network of services:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>Traffic Management &#8211;<\/strong> Control the flow of traffic and API calls between services, make calls \u2022 more reliable, and make the network more robust in the face of adverse conditions.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li><strong>Observability &#8211;<\/strong> Gain understanding of the dependencies between services and the nature and \u2022 flow of traffic between them, providing the ability to quickly identify issues.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li><strong>Policy Enforcement &#8211;<\/strong> Apply organizational policy to the interaction between services, ensure access policies are enforced and resources are fairly distributed among consumers. Policy changes are made by configuring the mesh, not by changing application code.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li><strong>Service Identity and Security &#8211;<\/strong> Provide services in the mesh with a verifiable identity and provide the ability to protect service traffic as it flows over networks of varying degrees of trustability.<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"In_addition_to_these_behaviours_Istio_is_designed_for_extensibility_to_meet_diverse_deployment_needs\"><\/span><strong>In addition to these behaviours, Istio is designed for extensibility to meet diverse deployment needs:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul style=\"text-align: justify;\">\n<li>Platform Support &#8211; Istio is designed to run in a variety of environments including ones that span Cloud, on-premise, Kubernetes, Mesos, etc. We\u2019re initially focused on Kubernetes but are working to support other environments soon.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li>Integration and Customization &#8211; The policy enforcement component can be extended and customized to integrate with existing solutions for ACLs, logging, monitoring, quotas, auditing and more.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">These capabilities greatly decrease the coupling between application code, the underlying platform, and policy. This decreased coupling not only makes services easier to implement, but also makes it simpler for operators to move application deployments between environments or to new policy schemes. Applications become inherently more portable as a result.<\/p>\n<p style=\"text-align: justify;\">The container orchestration engine Kubernetes was developed by Google and later made open-source. Istio is also developed and managed by Google which is also an opensourced project. Google has been using both of these technologies to develop their applications and provide a unified user-experience.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-8437 aligncenter\" src=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2.jpg\" alt=\"Micro-Services Architecture \" width=\"1994\" height=\"1016\" srcset=\"https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2.jpg 1994w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2-150x76.jpg 150w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2-300x153.jpg 300w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2-1024x522.jpg 1024w, https:\/\/www.esds.co.in\/blog\/wp-content\/uploads\/2018\/03\/cdn-images2-660x336.jpg 660w\" sizes=\"auto, (max-width: 1994px) 100vw, 1994px\" \/><\/a><\/p>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Apache_Kafka_%E2%80%93_A_Distributed_streaming_platform\"><\/span><strong>Apache Kafka \u2013 A Distributed streaming platform <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p style=\"text-align: justify;\">Apache Kafka, is another example of robust and well known framework for developing micro-services application. It is totally different from Istio, while Istio focuses more on containers and services, Apache Kafka focuses on service to service communication. Services can be developed independently and their intercommunication can be implemented with Apache Kafka.<\/p>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Apache_Kafka_is_described_as_a_distributed_streaming_platform_having_these_capabilities\"><\/span><strong>Apache Kafka is described as a distributed streaming platform having these capabilities: <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol style=\"text-align: justify;\">\n<li>It lets you publish and subscribe to streams of records. In this respect it is similar to a message queue or enterprise messaging system.<\/li>\n<li>It lets you store streams of records in a fault-tolerant way.<\/li>\n<li>It lets you process streams of records as they occur.<\/li>\n<\/ol>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"It_gets_used_for_two_broad_classes_of_application\"><\/span><strong>It gets used for two broad classes of application: <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol style=\"text-align: justify;\">\n<li>Building real-time streaming data pipelines that reliably get data between systems orapplications<\/li>\n<li>Building real-time streaming applications that transform or react to the streams of data<\/li>\n<\/ol>\n<p style=\"text-align: justify;\">Kafka is run as a cluster on one or more servers. The Kafka cluster stores streams of records in categories called topics. Each record consists of a key, a value, and a timestamp.<\/p>\n<h3 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"Kafka_has_four_core_APIs\"><\/span><strong>Kafka has four core APIs: <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul style=\"text-align: justify;\">\n<li>The Producer API allows an application to publish a stream of records to one or more Kafka topics.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li>The Consumer API allows an application to subscribe to one or more topics and process thestream of records produced to them.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li>The Streams API allows an application to act as a stream processor, consuming an input stream from one or more topics and producing an output stream to one or more output topics, effectively transforming the input streams to output streams.<\/li>\n<\/ul>\n<ul style=\"text-align: justify;\">\n<li>The Connector API allows building and running reusable producers or consumers that connect Kafka topics to existing applications or data systems. For example, a connector to a relational database might capture every change to a table.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">In Kafka the communication between the clients and the servers is done with a simple, high performance, language agnostic TCP protocol. This protocol is versioned and maintains backwards compatibility with older version. OpenDaylight Project, which is an open-source project backed by The Linux Foundation, is a good example of an application that runs on Apache Kafka.<\/p>\n<p style=\"text-align: justify;\">There are many opensource frameworks for developing and managing micro-services applications. Such applications are influenced by the capabilities of the framework used to develop them which introduces certain amount of dependency. There are applications like OpenStack that are highly modularized applications, but they are developed without using any such frameworks and yet their architecture is inclined towards micro-services architecture.<\/p>\n<h4 style=\"text-align: justify;\"><span class=\"ez-toc-section\" id=\"In_Conclusion\"><\/span><strong>In Conclusion <\/strong><span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p style=\"text-align: justify;\">There are enough tools and frameworks to develop applications with micro-services architecture, but there is no standard practice. From an application perspective, its architecture is greatly influenced by the purpose of the application. That being said, a question that arises is \u201cWhat applications can be built with micro-service architecture?\u201d The answer is tricky but straight forward, it totally depends upon the purpose of the application. A small desktop application that generates graphs from provided data need not be developed using micro-services architecture. That would not only degrade the application performance but also introduce unnecessary complexity in it. Whereas large applications that have multiple stages of data processing and computations can be developed with this style of application development. Essentially an application that can be segregated into modularized components must always be developed with micro-services architecture. This only applies to applications that involve a lot of remote processing and communication via network protocols. Applications that run on a standalone computer, irrespective of their size and complexity are also not well suited for such development practice.<\/p>\n<p style=\"text-align: justify;\">Best example of Micro-services based applications are enterprise application that run a whole business. Big enterprises like Amazon, Netflix, Uber, Spotify, Walmart, Sound Cloud, etc. are implementing and practicing this Micro-Services style of application development. The tools and technology stack used to develop applications with micro-services architecture demand and robust and flexible IT infrastructure. These applications require to be Reliable, Available and Highly Scalable. Thus, opting for Cloud is the best approach for deploying these applications. Applications that require an increasing amount of resources must be deployed on public cloud, with cloud service providers who provide highly scalable cloud like <a href=\"https:\/\/www.esds.co.in\/enlight-cloud-hosting\">eNlight Cloud<\/a>. In case of large enterprises that already have their data centers they can opt for a private cloud solution that not only helps deploy their application but also provide secure and easy management of their data center like <a href=\"https:\/\/www.esds.co.in\/enlight360\">eNlight 360<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Next Generation Application Architecture for Cloud Ready Applications\u2013 Part II The upsurge in micro-services architecture and applications based on it has led to the development of platforms and frameworks that emphasise and foster this application development style. There is not a standard definition of micro-services architecture and nor there are standard guidelines to develop an&#8230; <\/p>\n<div class=\"clear\"><\/div>\n<p><a href=\"https:\/\/www.esds.co.in\/blog\/micro-services-architecture-next-generation-application-architecture-cloud-ready-applications-2\/\" class=\"gdlr-button small excerpt-read-more\">Read More<\/a><\/p>\n","protected":false},"author":43,"featured_media":8438,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1534],"tags":[1623,1618,504,282,180,1620,661,1616,1621,1622],"class_list":["post-8435","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology","tag-application-development-style","tag-cloud-enabled-services","tag-cloud-solution","tag-cloud-technologies","tag-data-center","tag-enlight-360","tag-enlight-cloud","tag-micro-services","tag-micro-services-architecture","tag-private-cloud-solution"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/posts\/8435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/comments?post=8435"}],"version-history":[{"count":5,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/posts\/8435\/revisions"}],"predecessor-version":[{"id":8683,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/posts\/8435\/revisions\/8683"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/media\/8438"}],"wp:attachment":[{"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/media?parent=8435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/categories?post=8435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esds.co.in\/blog\/wp-json\/wp\/v2\/tags?post=8435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}