{"id":11295,"date":"2021-03-30T14:41:08","date_gmt":"2021-03-30T20:41:08","guid":{"rendered":"http:\/\/www.designandexecute.com\/designs\/?p=11295"},"modified":"2021-04-03T11:43:16","modified_gmt":"2021-04-03T17:43:16","slug":"modern-architecture-microservices-the-cloud","status":"publish","type":"post","link":"https:\/\/www.designandexecute.com\/designs\/modern-architecture-microservices-the-cloud\/","title":{"rendered":"Modern Architecture: MicroServices &#038; the Cloud"},"content":{"rendered":"<div class=\"wp-playlist wp-audio-playlist wp-playlist-light\">\n\t\t\t<div class=\"wp-playlist-current-item\"><\/div>\n\t\t<audio controls=\"controls\" preload=\"none\" width=\"674\"\n\t\t\t><\/audio>\n\t<div class=\"wp-playlist-next\"><\/div>\n\t<div class=\"wp-playlist-prev\"><\/div>\n\t<noscript>\n\t<ol>\n\t\t<li><a href='https:\/\/www.designandexecute.com\/designs\/wp-content\/uploads\/2021\/03\/micro-services.mp3'>micro services<\/a><\/li>\t<\/ol>\n\t<\/noscript>\n\t<script type=\"application\/json\" class=\"wp-playlist-script\">{\"type\":\"audio\",\"tracklist\":true,\"tracknumbers\":true,\"images\":true,\"artists\":true,\"tracks\":[{\"src\":\"https:\/\/www.designandexecute.com\/designs\/wp-content\/uploads\/2021\/03\/micro-services.mp3\",\"type\":\"audio\/mpeg\",\"title\":\"micro services\",\"caption\":\"\",\"description\":\"\\\"micro services\\\".\",\"meta\":{\"artist\":\"Stephen Choo Quan\",\"album\":\"Design and Execute\",\"length_formatted\":\"2:48\"},\"image\":{\"src\":\"https:\/\/www.designandexecute.com\/designs\/wp-includes\/images\/media\/audio.svg\",\"width\":48,\"height\":64},\"thumb\":{\"src\":\"https:\/\/www.designandexecute.com\/designs\/wp-includes\/images\/media\/audio.svg\",\"width\":48,\"height\":64}}]}<\/script>\n<\/div>\n\t\n<p><span data-preserver-spaces=\"true\">All modern system architectures follow two main patterns:\u00a0<\/span><\/p>\n<ol>\n<li><span data-preserver-spaces=\"true\">The first pattern is microservices,\u00a0<\/span><\/li>\n<li><span data-preserver-spaces=\"true\">The second pattern is being cloud-native.<\/span><\/li>\n<\/ol>\n<p><span data-preserver-spaces=\"true\">To understand microservices, you must understand what a monolithic system is. A software\u00a0<\/span><strong><span data-preserver-spaces=\"true\">system<\/span><\/strong><span data-preserver-spaces=\"true\">\u00a0is &#8220;<\/span><strong><span data-preserver-spaces=\"true\">monolithic<\/span><\/strong><span data-preserver-spaces=\"true\">&#8221; if it has a\u00a0<\/span><strong><span data-preserver-spaces=\"true\">monolithic<\/span><\/strong><span data-preserver-spaces=\"true\">\u00a0architecture, in which functionally different aspects are all interwoven, packaged, and deployed as a whole, rather than containing architecturally separate components that deploy independently.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">At first, monolithic systems are easy to develop, manage and deploy. An example can be a UI form to ingest data and persisted that data into a database. A small application is born. <\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Another client loving this solution ask for another form built to persist their data. We do have some standard routines that might leverage connecting and storing data in a database. The main difference between the new functionality and the preceding functionality is in the business logic of validating the form, so we decide to grow monolithically. After the first year, you have ten different clients and their UI forms in this monolith application.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">As the popularity of the application grows, so will the functionality become rich. This ever-expanding functionality will make the monolithic architecture grow in size. Over time this is becoming unruly, and deployment times become longer and longer.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">The challenge for new developers is to learn the whole code base and make changes without regression testing of all of the code. New developers are skeptical about making changes because of the uncertainty of breaking the entire code base. The application is seemingly brittle.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Any changes to a form for one client will mean that the application will need to be redeployed and impact all clients. If this application is scaled horizontally, the deployment Must happen on each node, and the deployment effort becomes heroic to ensure all clients are back to business as usual.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Another interesting challenge is that all the development is coded in one development language. The monolith needs to be compiled and packaged by the same compiler. A uni-compiler infrastructure may stunt the application&#8217;s growth if other staff members who are skilled in other languages are unable to contribute to the project.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Just based on these challenges of the monolith, we can see how microservices could be a solution. Microservices are initially more work to set up but will pay long-term dividends, Especially if more clients subscribe to the service.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Each service will run in its container and be developed in any language Independently of the other functionality. A multi-compiler architecture will mean that there&#8217;s less risk when changing any independent components. Functionality can support separate deployments and can more easily be regression tested. The services will communicate via APIs.<\/span><\/p>\n<p><span data-preserver-spaces=\"true\">Microservices running in the cloud will make your application modern.\u00a0 I have written on why <\/span><a class=\"editor-rtfLink\" href=\"http:\/\/www.designandexecute.com\/designs\/why-should-you-consider-migrating-to-the-cloud\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span data-preserver-spaces=\"true\">cloud architecture<\/span><\/a><span data-preserver-spaces=\"true\">\u00a0is relevant to modern architecture. You can see the details on this <a href=\"http:\/\/www.designandexecute.com\/designs\/why-should-you-consider-migrating-to-the-cloud\/\" target=\"_blank\" rel=\"noopener noreferrer\">link<\/a>.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>All modern system architectures follow two main patterns:\u00a0 The first pattern is microservices,\u00a0 The second pattern is being cloud-native. To understand microservices, you must understand what a monolithic system is. A software\u00a0system\u00a0is &#8220;monolithic&#8221; if it has a\u00a0monolithic\u00a0architecture, in which functionally different aspects are all interwoven, packaged, and deployed as a whole, rather than containing architecturally [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":11331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-11295","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-faq"],"jetpack_featured_media_url":"https:\/\/www.designandexecute.com\/designs\/wp-content\/uploads\/2021\/03\/monolith-vs-microservices.jpg","_links":{"self":[{"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/posts\/11295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/comments?post=11295"}],"version-history":[{"count":5,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/posts\/11295\/revisions"}],"predecessor-version":[{"id":11354,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/posts\/11295\/revisions\/11354"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/media\/11331"}],"wp:attachment":[{"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/media?parent=11295"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/categories?post=11295"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.designandexecute.com\/designs\/wp-json\/wp\/v2\/tags?post=11295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}