{"id":38711,"date":"2020-03-27T00:27:54","date_gmt":"2020-03-27T07:27:54","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/premier-developer\/?p=38711"},"modified":"2020-03-18T12:40:29","modified_gmt":"2020-03-18T19:40:29","slug":"what-is-cloud-native-exactly","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/premier-developer\/what-is-cloud-native-exactly\/","title":{"rendered":"What Is Cloud Native, Exactly?"},"content":{"rendered":"<p>App Dev Manager <a href=\"https:\/\/www.linkedin.com\/in\/rogueagile\/\" target=\"_blank\" rel=\"noopener noreferrer\">Dave Harrison<\/a> talks with <a href=\"https:\/\/www.linkedin.com\/in\/robvettor\/\">Robert Vettor<\/a>, a Premier Developer consultant who specializes in microservices and cloud native architecture.<\/p>\n<hr \/>\n<p><em><img decoding=\"async\" width=\"275\" height=\"355\" class=\"wp-image-38712 alignleft\" src=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/word-image-28.png\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/word-image-28.png 275w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/word-image-28-232x300.png 232w\" sizes=\"(max-width: 275px) 100vw, 275px\" \/>I had the pleasure recently of interviewing <a href=\"https:\/\/www.linkedin.com\/in\/robvettor\/\">Robert Vettor<\/a>, a Premier Developer consultant who specializes in microservices and cloud native architecture. Robert\u2019s in the process of writing a great book on \u201cArchitecting Cloud-Native .NET Apps for Azure\u201d which is available now in a preview version. I found our conversation enlightening \u2013 Robert\u2019s always so locked into the realities of both legacy code and the real-world strengths and liabilities that come with developing and supporting enterprise software. I\u2019m sure you will too! <\/em><\/p>\n<p><em>A condensed version of our interview is below. I encourage you to <\/em><a href=\"https:\/\/anchor.fm\/dave-harrison5\/episodes\/Interview-with-Robert-Vettor-of-Microsoft---What-Is-Cloud-Native-eb4ur3\"><em>check out the podcast<\/em><\/a><em> \u2013 and then dive deeper into <\/em><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/architecture\/cloud-native\/\"><em>Robert\u2019s book<\/em><\/a><em> for more! There\u2019s also extensive coverage of many of these principles in my book \u201c<\/em><a href=\"https:\/\/www.amazon.com\/Achieving-DevOps-Novel-Delivering-Microservices\/dp\/1484243870\"><em>Achieving DevOps<\/em><\/a><em>\u201d, which Robert was instrumental in helping me launch. Thanks again my friend!<\/em><\/p>\n<p>The book begins with a description of the \u201cFear Cycle\u201d that may be all too familiar \u2013 the life of someone in charge of a brittle, hard to maintain application. It all started out so easy \u2013 but as its functionality has expanded, so has the complexity, to the point where no one understands it well. Each change comes with unintended and costly side effects \u2013 new features are increasingly expensive to implement, and often breaks important pieces elsewhere. Deployments happen slower and slower, often quarterly, with frequent \u201cred\u201d builds and all-weekend build parties in corporate war rooms. The framework \u2013 which is impossible to modernize with newer libraries \u2013 ages and becomes increasingly unstable. This system cannot go down \u2013 the business depends on it \u2013 but change is becoming near impossible, and highly risky. Things simply cannot go on this way.<\/p>\n<p>Enter the world of the cloud native application. At Microsoft, we\u2019ve followed the <a href=\"https:\/\/github.com\/cncf\/foundation\/blob\/master\/charter.md\">definition<\/a> set by the Cloud-Native Computing Foundation (CNCF):<\/p>\n<p>\u201cCloud-native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.\u201d<\/p>\n<p>For example, look at this diagram below of a sample web-native architecture:<\/p>\n<p><img decoding=\"async\" width=\"744\" height=\"490\" class=\"wp-image-38713\" src=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/cloud-native-design.png\" alt=\"Cloud-Native Design\" srcset=\"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/cloud-native-design.png 744w, https:\/\/devblogs.microsoft.com\/premier-developer\/wp-content\/uploads\/sites\/31\/2020\/03\/cloud-native-design-300x198.png 300w\" sizes=\"(max-width: 744px) 100vw, 744px\" \/><\/p>\n<p>This is a big difference from a traditional n-tier application (or monolith). This cloud-native application is decomposed across a set of small isolated microservices. Each service is self-contained and encapsulates its own code, data, and dependencies. Each is deployed in a software container and managed by a container orchestrator. Instead of a large relational database, each service owns its own datastore, the type of which vary based upon the data needs.<\/p>\n<p>Note how some services depend on a relational database, but other on NoSQL databases. One service stores its state in a distributed cache. Note how all traffic routes through an API Gateway service that is responsible for routing traffic to the core back-end services and enforcing many cross-cutting concerns. Most importantly, the application takes full advantage of the scalability and resiliency features found in modern cloud platforms.<\/p>\n<p>In the book, we explore all of the key concepts described by CNCF in the definition of cloud native: Containers, API Gateways, Immutable Infrastructure, Microservices, and Declarative APIs. Along the way we answer questions like the following:<\/p>\n<ul>\n<li>Should everything be cloud native?<\/li>\n<li>What approach should I use for brownfield (legacy) applications?<\/li>\n<li>What business problems can the cloud-native approach help resolve?<\/li>\n<li>What three different approaches are there in migrating existing applications to the cloud?<\/li>\n<li>How can the 12-Factor Methodology help create a pragmatic checklist to audit my applications for cloud readiness?<\/li>\n<\/ul>\n<p>Another great resource for you Premier customers out there is a brand new chalk talk called \u201cThinking in Cloud Native\u201d. In two hours we condense the essence of the book \u2013 exploring how companies are constructing their digital foundation with cloud native architecture, fusing microservices, containers, automation and cloud infrastructure. Get in touch with your Premier Developer Application Development Manager (ADM) to get this on your team\u2019s radar!<\/p>\n<p>To stay competitive, move fast and use the cloud as a competitive advantage, you too need to be \u201cthinking in Cloud Native.\u201d With some outside-the-box thinking, your applications can become more robust, easier to maintain, and built for the modern cloud.<\/p>\n<p><strong>Links:<\/strong><\/p>\n<ul>\n<li>Our 30-minute podcast interview: <a href=\"https:\/\/anchor.fm\/dave-harrison5\/episodes\/Interview-with-Robert-Vettor-of-Microsoft---What-Is-Cloud-Native-eb4ur3\">https:\/\/anchor.fm\/dave-harrison5\/episodes\/Interview-with-Robert-Vettor-of-Microsoft&#8212;What-Is-Cloud-Native-eb4ur3<\/a><\/li>\n<li>The Cloud Native Computing Foundation (CNCF) <a href=\"https:\/\/raw.githubusercontent.com\/cncf\/trailmap\/master\/CNCF_TrailMap_latest.png\">Cloud-Native Trail Map<\/a>, and the <a href=\"https:\/\/github.com\/cncf\/foundation\/blob\/master\/charter.md\">official definition<\/a><\/li>\n<li>Preview edition of \u201cArchitecting Cloud-Native .NET Apps for Azure\u201d: <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/architecture\/cloud-native\/\">https:\/\/docs.microsoft.com\/en-us\/dotnet\/architecture\/cloud-native\/<\/a><\/li>\n<li>A good exploration of <a href=\"https:\/\/docs.microsoft.com\/azure\/devops\/learn\/what-is-infrastructure-as-code\">Infrastructure as Code<\/a>, or IaC. Sam Guckenheimer describes how, &#8220;Teams who implement IaC can deliver stable environments rapidly and at scale. Teams avoid manual configuration of environments and enforce consistency by representing the desired state of their environments via code. Infrastructure deployments with IaC are repeatable and prevent runtime issues caused by configuration drift or missing dependencies. DevOps teams can work together with a unified set of practices and tools to deliver applications and their supporting infrastructure rapidly, reliably, and at scale.&#8221;<\/li>\n<li>An excellent resource that we explore at length in the book \u2013 and align with cloud-native architectural principles \u2013 is that of <a href=\"https:\/\/12factor.net\/\">12-Factor Methodology<\/a>. We also highly recommend the book \u201c<a href=\"https:\/\/content.pivotal.io\/blog\/beyond-the-twelve-factor-app\">Beyond the Twelve-Factor App<\/a>\u201d by Kevin Hoffman, which provides three additional factors that reflect today&#8217;s modern cloud application design.<\/li>\n<li>Last, the Microsoft e-book\u00a0<a href=\"https:\/\/dotnet.microsoft.com\/download\/thank-you\/modernizing-existing-net-apps-ebook\">Modernize existing .NET applications with Azure cloud and Windows Containers<\/a>\u00a0provides guidance for migrating on-premises workloads into cloud. We explore this more in the book \u2013 but there is no single, one-size-fits-all strategy for modernization.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I had the pleasure recently of interviewing Robert Vettor, a Premier Developer consultant who specializes in microservices and cloud native architecture. Robert\u2019s in the process of writing a great book on \u201cArchitecting Cloud-Native .NET Apps for Azure\u201d which is available now in a preview version. <\/p>\n","protected":false},"author":582,"featured_media":38715,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[25],"tags":[77,24,9249,3],"class_list":["post-38711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","tag-architecture","tag-azure","tag-cloud-native","tag-team"],"acf":[],"blog_post_summary":"<p>I had the pleasure recently of interviewing Robert Vettor, a Premier Developer consultant who specializes in microservices and cloud native architecture. Robert\u2019s in the process of writing a great book on \u201cArchitecting Cloud-Native .NET Apps for Azure\u201d which is available now in a preview version. <\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/38711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/users\/582"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/comments?post=38711"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/posts\/38711\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media\/38715"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/media?parent=38711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/categories?post=38711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/premier-developer\/wp-json\/wp\/v2\/tags?post=38711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}