<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dhruvesh Patel</title>
    <description>The latest articles on DEV Community by Dhruvesh Patel (@dhruvesh_patel).</description>
    <link>https://dev.to/dhruvesh_patel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F470954%2Faa09bea1-c969-4f69-b2c7-28898cf72b32.jpeg</url>
      <title>DEV Community: Dhruvesh Patel</title>
      <link>https://dev.to/dhruvesh_patel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dhruvesh_patel"/>
    <language>en</language>
    <item>
      <title>DJL - Deep Java Library </title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Sat, 24 Oct 2020 03:41:41 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/djl-deep-java-library-2o40</link>
      <guid>https://dev.to/dhruvesh_patel/djl-deep-java-library-2o40</guid>
      <description>&lt;p&gt;Want to get hands dirty with Machine Learning / Deep Learning, but have got Java background and do not know where to start? Then read on, this post is about using existing Java skillset and ramp-up your journey to start building deep learning models. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is DJL?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DJL is an open source library to build and deploy deep learning in Java. DJL is built by AWS and is open source. &lt;/p&gt;

&lt;p&gt;DJL provides a native Java development experience and functions like any other regular Java library &amp;amp; expedite machine learning and deep learning journey. Developers can use their existing IDE (Eclipse/ IntelliJ) to build, train and deploy models and DJL makes it easy to integrate this models with Java Apps. &lt;/p&gt;

&lt;p&gt;The simple APIs abstract away the complexity involved in developing Deep learning models. With the bundled set of pre-trained models from ModelZoo, users can immediately start integrating Deep learning into their Java applications. &lt;/p&gt;

&lt;p&gt;DJL is engine-agnostic and goes with Java fundamental "Write once, run anywhere". Developer can develop model using DJL and run it on an engine of your choice - MXNet, Pytorch, TensorFlow. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DJL Example for Object Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Object detection is a computer vision technique for locating instances of objects in images or videos.&lt;/p&gt;

&lt;p&gt;In this example, we will learn how to implement inference code with a ModelZoo model to detect dogs in an image. Source code for this model is available &lt;a href="https://github.com/awslabs/djl/blob/master/docs/model-zoo.md" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local software setup&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install JDK 8 (DJL has some known issues with JDK 11)&lt;/li&gt;
&lt;li&gt;Install IntelliJ a IDE&lt;/li&gt;
&lt;li&gt;Import DJL project using IntelliJ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Refer setup related more details &lt;a href="https://docs.djl.ai/docs/development/setup.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For Java source code for ObjectDetection.java class, which is using DJL can be found &lt;a href="https://github.com/awslabs/djl/blob/master/examples/src/main/java/ai/djl/examples/inference/ObjectDetection.java" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the Object Detection Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input image is used as below. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frmdx0z3wc7xb9xbxy3tq.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frmdx0z3wc7xb9xbxy3tq.JPG" alt="DJL - Input Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build the project and run
Use the following command to run the project:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Finet8va1jad80i8hf4lt.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Finet8va1jad80i8hf4lt.JPG" alt="Build project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output should look like the following:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpna0nyp0nfrqzllmsbty.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpna0nyp0nfrqzllmsbty.JPG" alt="DJL Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An output image with bounding box will be saved as build/output/detected-dog_bike_car.png:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4tvh26sqrtv00yha10o.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh4tvh26sqrtv00yha10o.JPG" alt="DJL - Output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Within Deep learning landscape, there are lots of resources for Python users like NumPy for data analysis or frameworks such as MXNet, TensorFlow. But, the very few sources for Java. Thanks to AWS team, DJL provides open source tools to train and serve Deep learning models in Java and makes it easy to start deep learning journey. &lt;/p&gt;

&lt;p&gt;Enjoy building machine learning applications with power of DJL ! &lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>java</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Software Architecture - Five Common Design Principles </title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Sat, 24 Oct 2020 03:21:52 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/software-architecture-five-common-design-principles-2il0</link>
      <guid>https://dev.to/dhruvesh_patel/software-architecture-five-common-design-principles-2il0</guid>
      <description>&lt;p&gt;This post will talk about popular design principles - used in Software architecture world, which are time-tested and even relevant today. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Software Architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software Architecture is the shared understanding that the expert developers have of the system design. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmg2gdm2872tftwi6nhwv.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmg2gdm2872tftwi6nhwv.JPG" alt="Enterprise Architecture"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In other words described by Ralph Johnson &amp;amp; Martin Fowler, Architecture is about the decisions you wish you could get right early in a product or project lifecycle. Architecture is about the important stuff, whatever that is. &lt;/p&gt;

&lt;p&gt;To draw an analogy with tree for ease of understanding, Architectural investment builds new and stronger branches. Features put leaves on branches. &lt;/p&gt;

&lt;p&gt;Software with well-defined architecture leads to good quality software and that leads to high velocity over time. Considering trade-off between quality and cost, the high quality wins, always. Over time, Architectural investment pays off with ease of developing new features in short time. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6g4grk064ifpjulb6wjo.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6g4grk064ifpjulb6wjo.JPG" alt="Architecture Benefits - High Quality vs Cost"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Architectural Principles&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOLID Principles &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;S - Single-responsibility principle - A class should only have a single responsibility, that is, only changes to one part of the software's specification should be able to affect the specification of the class.&lt;/p&gt;

&lt;p&gt;O - Open–closed principle - Software entities ... should be open for extension, but closed for modification.&lt;/p&gt;

&lt;p&gt;L - Liskov substitution principle - Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program. Design by Contract. &lt;/p&gt;

&lt;p&gt;I - Interface segregation principle - Many client-specific interfaces are better than one general-purpose interface.&lt;/p&gt;

&lt;p&gt;D - Dependency inversion principle - One should "depend upon abstractions, [not] concretions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;KISS (Keep it simple) &lt;br&gt;
    Everything should be made as simple as possible. As Simple as this, nothing complicate, Design systems to be simple and easy to understand and maintain. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;YAGNI (You aren’t gonna need it)&lt;br&gt;
    Do not build it until it is needed. There are lots of envisioned features, which are not needed on priority, leave them aside. At the same time, having view of what is coming will actually set the right direction of solution. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Opportunity Cost Principle&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opportunity costs define what we have to give up in getting that value. For the highest value, we should always opt for the option that offers maximum benefits at the lowest cost.&lt;/p&gt;

&lt;p&gt;Always weigh down different options against one another. Choose a path that adds maximum value to the project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Don't repeat yourself (DRY)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Avoid specifying behavior related to a particular concept in multiple places within application. As this will lead to a frequent source of errors. At some point, a change in requirements will require changing this behavior. It's likely that at least one instance of the behavior will fail to be updated, and the system will behave inconsistently.&lt;/p&gt;

&lt;p&gt;Rather than duplicating logic, encapsulate it in a programming construct. Make this construct the single authority over this behavior, and have any other part of the application that requires this behavior use the new construct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Common design principles mentioned above are guiding light in software architecture and provides very good reference point. But there will always be exception cases where this principles may not be applicable in its pure form, So always refer context in which software is being built and then accordingly choose suitable version of software architecture principles. There are just a few common set of time-tested software architecture principles, list can go on and on with cloud and other modern technologies.&lt;/p&gt;

&lt;p&gt;Enjoy architecting software systems and make them secure, reliable, highly efficient and cost effective. &lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>architecture</category>
    </item>
    <item>
      <title>How to deploy Spring Boot app to Azure App Service?</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Sat, 24 Oct 2020 02:52:30 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/how-to-deploy-spring-boot-app-to-azure-app-service-3259</link>
      <guid>https://dev.to/dhruvesh_patel/how-to-deploy-spring-boot-app-to-azure-app-service-3259</guid>
      <description>&lt;p&gt;If you are building Java based spring boot app, but struggling to deploy app to Azure Cloud? This blog post is for you, It will provide brief introduction of Azure App Service and App service Plans and the step-by-step guide to deploy Java based Spring boot app to Azure App service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Azure App Service?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure App Service is a Platform as a Service offering from Microsoft Azure Cloud, which allows developer to focus on developing new business features and not worrying about running and managing the underlying infrastructure. Azure Service Fabric provides the underlying magic for App Service including all good things that comes with cloud - scaling, availability and redundancy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyaobpsqvn7vn2el0441.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdyaobpsqvn7vn2el0441.JPG" alt="Azure App Service - Diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefit of  using Azure App Service :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster time to market to compete in modern digital transformation powered innovation and disruption&lt;/li&gt;
&lt;li&gt;Deployment slots are live apps with their own host names. App content and configurations elements can be swapped between two deployment slots, including the production slot. Allows to test deployment in staging before moving to production and then swap staging to be production without additional cost&lt;/li&gt;
&lt;li&gt;Security is integrated within App Service - offers layered security like Multi-factor authentication (MFA) and other security features like authentication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;App Service Plans:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An App Service Plan is like a container in which your web applications run. it is used to determine the computing resources (CPU, RAM, Cache, disk space, etc.) available to your application. &lt;/p&gt;

&lt;p&gt;Following image shows comparison of various App service Plans such as Free/Shared, Basis, Standard, Premium and Isolated &amp;amp; their pricing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiktocnwdjgnuxmi8l6xz.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiktocnwdjgnuxmi8l6xz.JPG" alt="App service Plan - Comparison"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Maven Plug-in for Azure App Service:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Maven Plugin for Azure App Service helps Java developers to deploy Maven projects to Azure App Service. &lt;/p&gt;

&lt;p&gt;Pre-requisites before using this maven plug-in, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Azure CLI ( Refer this &lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest" rel="noopener noreferrer"&gt;link&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;Sign in to Azure Portal using below command. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk9bikdubjn0xxy75q9h7.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fk9bikdubjn0xxy75q9h7.JPG" alt="az login command"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy Spring Boot app (Java based) to Azure App service:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once above Pre-requisite steps are completed, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using IDE (Eclipse/ IntelliJ) for Spring boot maven project, add  azure maven plug-in in pom.xml file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Typical configuration for Azure Maven plug-in for Java based spring boot app is as below (You can select an existing Azure Web App or create a new one on prompt. Below snippet is for using existing App service Plan and App Service).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb97bvai0vegbb5tt619x.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fb97bvai0vegbb5tt619x.JPG" alt="Azure App Service - Maven Plugin configuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy your Java app to Azure using the following command&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsaced012tawkf5rzb8a.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnsaced012tawkf5rzb8a.JPG" alt="Azure App Service - maven deploy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Finally, Navigate to Azure Portal -&amp;gt; Resource Group -&amp;gt; App Service which was used to deploy Java application and verify the App is running. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Azure App Service provides fully managed platform for building, deploying and scaling your web apps  - Platform-as-a-Service. It greatly speeds up deployment of Spring boot based Java application to Azure App Service. &lt;/p&gt;

&lt;p&gt;Happy coding ! &lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>springboot</category>
      <category>microservices</category>
      <category>devops</category>
    </item>
    <item>
      <title>Apache Kafka - Fundamentals, Use cases and Trade-Offs</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Sat, 24 Oct 2020 02:36:42 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/apache-kafka-fundamentals-use-cases-and-trade-offs-9e4</link>
      <guid>https://dev.to/dhruvesh_patel/apache-kafka-fundamentals-use-cases-and-trade-offs-9e4</guid>
      <description>&lt;p&gt;This post will focus on open source and popular Apache kafka platform related brief fundamentals, Use Cases and Trade-offs with other popular messaging technologies. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kafka Fundamentals - Brief&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apache kafka is an event streaming platform. It provides distributed, high-throughput, low-latency, fault-tolerant platform for handling real-time data feeds - known as events.&lt;/p&gt;

&lt;p&gt;It can be used in different ways due to various capabilities combined in Kafka. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Message System - to Publish and Subscribe events&lt;/li&gt;
&lt;li&gt;Stream Processing System - to Process steams of events&lt;/li&gt;
&lt;li&gt;Storage System - to Store log of events reliably (forever, if needed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kafka has topics, partitions, producers and consumers, which are basics for any messaging system. For more details on Kafka 101, please refer this &lt;a href="https://www.confluent.io/resources/kafka-summit-2020/welcome-to-kafka-were-glad-youre-here/" rel="noopener noreferrer"&gt;link&lt;/a&gt;, where it is very nicely explained. &lt;/p&gt;

&lt;p&gt;Kafka has following message / event delivery guarantees between producer and consumer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At most once — Messages may be lost but are never redelivered.&lt;/li&gt;
&lt;li&gt;At least once — Messages are never lost but may be redelivered.&lt;/li&gt;
&lt;li&gt;Exactly once — Each message is delivered once and only once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwy1uwu0s8qrci7246gs2.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwy1uwu0s8qrci7246gs2.JPG" alt="Kafka Message Delivery Guarantees"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kafka Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For anything that deals with events and real-time data, Kafka is the way to go to process events and get insights - all in real-time. Kafka supports wide variety of use cases due to large ecosystem. Some of the example use cases are as below. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Financial Services - Real-time fraud detection and faster payments&lt;/li&gt;
&lt;li&gt;Automobile - Real-time data cluster for Anomaly detection, Alerts and Personalization for better driving experience&lt;/li&gt;
&lt;li&gt;Healthcare - Real-time health sensors data to get better insights to serve patients and save lives&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kakfa can be used as backbone to integrate various systems - be it data analytics use case or microservices communications in an event-driven architecture. Following diagram shows kafka as backbone for various systems integration. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdabxqrc0wsqm513bie50.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fdabxqrc0wsqm513bie50.JPG" alt="Kakfa - Use Cases and Systems"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kafka Trade-offs with other messaging systems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For basic, single machine, message oriented, point-to-point systems communication, classical messaging suits with RabbitMQ or ActiveMQ. &lt;/p&gt;

&lt;p&gt;But for any event-streaming, where there is event-based communication with multiple consumers and need ordered events (either same events to multiple consumers or specific events to specific consumer group), then Kafka is best suited. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiqxa5zhq4fzglaohb72r.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fiqxa5zhq4fzglaohb72r.JPG" alt="Kafka vs Legacy messaging systems"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from being messaging system, Kafka can be leveraged as stream Processing System (to Process steams of events) and Storage System (to Store log of events reliably - forever, if needed). It also has lots of other features in Kafka ecosystem, such as kafka connectors and kafka streams (please refer kafka &lt;a href="https://kafka.apache.org/documentation/#connect" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for more details). So for event-driven, real-time systems - Kafka is most matured and complete ecosystem. &lt;/p&gt;

&lt;p&gt;Enjoy building event-driven systems with Kafka ! &lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>kafka</category>
      <category>opensource</category>
      <category>architecture</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>AWS Well-Architected Framework - Best Practices to design systems in Cloud</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Fri, 23 Oct 2020 16:51:15 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/aws-well-architected-framework-best-practices-to-design-systems-in-cloud-5eik</link>
      <guid>https://dev.to/dhruvesh_patel/aws-well-architected-framework-best-practices-to-design-systems-in-cloud-5eik</guid>
      <description>&lt;p&gt;This post will talk about my key take-aways after reading and practicing AWS well-architected framework and five pillars that define how well the system architecture is? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Well-Architected Framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It defines set-of guidelines and design principles to follow while building systems in the cloud. It is a must read guide on architectural best practices and trade-offs to consider, while designing and operating reliable, secure, efficient and cost-effective systems in cloud. &lt;/p&gt;

&lt;p&gt;AWS Well-architected framework is based on 5-pillars as listed below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Performance Efficiency&lt;/li&gt;
&lt;li&gt;Cost optimization&lt;/li&gt;
&lt;li&gt;Operational Excellence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5g0f1w0uik6v3x0aebio.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5g0f1w0uik6v3x0aebio.JPG" alt="AWS Well-Architected Framework Pillars"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Security is the most important aspect of cloud-native solutions. Prevent, Detect, Respond and Remediate security aspects to implement optimum security posture for Organization and as a thumb rule, Apply security at all layers.&lt;/p&gt;

&lt;p&gt;Following are high level design principles for achieving security. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prevent - Define IAM policy based on Principle of Least privilege (AWS IAM, SSO, MFA), Ensure Data Protection using encryption - In transit &amp;amp; At Rest (AWS KMS, CloudHSM, SSE)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detect - Logging and Monitoring of services (AWS CloudTrail, AWS CloudWatch, AWS GuardDuty)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Respond - Automated incident response and recovery (AWS Config + Lamdba, AWS Systems manager &amp;amp; Automation Playbooks)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remediate - Leverage event-driven automation to remediate, where possible and secure cloud environment (AWS Security hub and Manual intervention)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Achieving reliability can be challenging in traditional on-premises environments due to single points of failure, lack of automation, and lack of elasticity.&lt;/p&gt;

&lt;p&gt;In Cloud, Architect and design solutions with mindset of "Everything fails all time". &lt;/p&gt;

&lt;p&gt;Following are high level design principles for achieving reliability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Automatically recover from failure - Monitor workload using KPIs, Trigger automated recovery process when threshold is breached. Aim to be able to Anticipate and Remediate failure before they occur.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test Recovery Procedures, Scale horizontally to avoid single point of failure (where suitable), detect failures and auto-heal itself&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deploy using Immutable infrastructure&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Efficiency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adopt data-driven approach to build high-performance architecture. Depending on use case, trade consistency, durability and space for latency to deliver higher performance. Cloud enables to embrace evolving architecture depending on data insights and usage patterns.&lt;/p&gt;

&lt;p&gt;Following are high level design principles for achieving operational excellence.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experiment often&lt;/li&gt;
&lt;li&gt;Have performance metrics in place&lt;/li&gt;
&lt;li&gt;Focus on going global as you evolve&lt;/li&gt;
&lt;li&gt;Use serverless architectures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cost optimization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cost optimization is a continual process of refinement and improvement over the span of a cloud resource. On top of having cloud budget, resource tagging and forecasts,&lt;/p&gt;

&lt;p&gt;Following are high level design principles for achieving cost optimization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create cost-aware processes and culture&lt;/li&gt;
&lt;li&gt;Purchase reserved instances and go with upfront payment where utilization is predictable&lt;/li&gt;
&lt;li&gt;Delete unattached EBS volumes &amp;amp; obsolete snapshots, release unwanted elastic IPs and choose appropriate storage tiers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Operational Excellence&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The operational excellence pillar includes how organization supports business objectives by running software systems efficiently and by gaining insight into operations, and then by continuously improving to deliver business value.&lt;/p&gt;

&lt;p&gt;Following are high level design principles for achieving operational excellence. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Perform operations as code&lt;/li&gt;
&lt;li&gt;Make frequent, small, reversible changes&lt;/li&gt;
&lt;li&gt;Refine operations procedures frequently&lt;/li&gt;
&lt;li&gt;Anticipate failure&lt;/li&gt;
&lt;li&gt;Learn from all operational failures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Well-Architected Tool&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The AWS Well-Architected Tool helps to review the state of application and compares them to the latest AWS architectural best practices. The tool is based on the AWS Well Architecture Framework developed to help cloud architects build secure, high performant, resilient, and efficient application infrastructure. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcp7v4xp7e3ioftucpbxi.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fcp7v4xp7e3ioftucpbxi.JPG" alt="AWS Well-Architected Tool"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This Framework provides a consistent approach for customers to evaluate architectures and provides guidance to help implement designs that scale with application needs over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of AWS Well-Architected Tool&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Get Free architectural guidance&lt;br&gt;
Gives access to best practices used by AWS Architects whenever you need it. Just answer series of question on your application and tool delivers step-by-step guidance on how to improve current design and architecture.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review your application consistently&lt;br&gt;
Offers single tool and consistent process to review cloud architectures across organizations. Provides potential next steps for improvement, drive architectural decision and brings architectural considerations into corporate governance. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify and Implement improvements&lt;br&gt;
Use this tool to support continuous improvements throughout lifecycle of application. Makes easy to save point in time snapshot and track changes. If you want to start all over again, just launch one more review process to ensure your architecture continues to improve over time&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://wellarchitectedlabs.com/" rel="noopener noreferrer"&gt;Well-architected Labs&lt;/a&gt; provides nice hands-on labs to try out these architectural best practices.&lt;/p&gt;

&lt;p&gt;Enjoy architecting systems in cloud and build efficient systems.&lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
    </item>
    <item>
      <title>DevOps and CI/ CD - Faster time to market</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Wed, 21 Oct 2020 22:58:36 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/devops-and-ci-cd-faster-time-to-market-4g07</link>
      <guid>https://dev.to/dhruvesh_patel/devops-and-ci-cd-faster-time-to-market-4g07</guid>
      <description>&lt;p&gt;This post will talk about DevOps and Continuous Integration / Continuous Delivery to bring new products and services faster to market. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is DevOps?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality.&lt;/p&gt;

&lt;p&gt;DevOps is intended to be cross-functional mode of working, which uses wide variety of toolset that fits into one of the below category. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Coding – code development and review, source code management tools, code merging.&lt;/li&gt;
&lt;li&gt;Building – continuous integration tools, build status.&lt;/li&gt;
&lt;li&gt;Testing – continuous testing tools that provide quick and timely feedback on business risks.&lt;/li&gt;
&lt;li&gt;Packaging – artifact repository, application pre-deployment staging.&lt;/li&gt;
&lt;li&gt;Releasing – change management, release approvals, release automation.&lt;/li&gt;
&lt;li&gt;Configuring – infrastructure configuration and management, infrastructure as code tools.&lt;/li&gt;
&lt;li&gt;Monitoring – applications performance monitoring, end-user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As we have seen in cloud-native series, cloud-native systems embrace microservices, containers, and modern system design to achieve speed and agility. But that's part of the story. How do we provision cloud environment? How do we rapidly deploy new features and updates? That's where DevOps Automation comes into picture - Infrastructure Automation and Deployment automation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure Automation&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is popularly known as Infrastructure as Code (IaC), it enables to declaratively script and provision the required cloud infrastructure.&lt;/p&gt;

&lt;p&gt;The cloud resources are parameterized and dynamic, version-controlled as an artifact with code. The parameters can change across environments such as dev, qa, staging and prod. But it allows to have consistent and repeatable infrastructure across environments. &lt;/p&gt;

&lt;p&gt;Terraform, Azure ARM and AWS Cloudformation are such IaC tools, and terraform is widely used. &lt;/p&gt;

&lt;p&gt;Following image has some basic terraform commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft40v5w6o8fbavfsckd1i.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft40v5w6o8fbavfsckd1i.JPG" alt="Basic Terraform Commands"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Automation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;12-factor app principles discussed earlier in first part of this blog series mentions about principle 5 - Each release must enforce a strict separation across the build, release and run stages. Each should be tagged with a unique ID and support the ability to roll back.&lt;/p&gt;

&lt;p&gt;Modern CI/ CD Pipelines allow to fulfill this principle. &lt;/p&gt;

&lt;p&gt;Following diagram shows typical flow for setting up CI/ CD pipelines. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa7y0hhuhb61f8y70rf21.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fa7y0hhuhb61f8y70rf21.JPG" alt="CI/ CD Pipelines"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;CI - Continuous Integration part is where the code push triggers a build stage that transforms the code into a binary artifact.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CD - Continuous Deployment part is where the release stage picks up the binary artifact, applies external application and environment configuration information, and produces an immutable release. The release is then deployed to a specified environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And finally, the released feature is run in the target execution environment. Releases are immutable meaning that any change must create a new release.&lt;/p&gt;

&lt;p&gt;Azure DevOps is one-stop solution for all DevOps and agile needs for embracing automation. All other public cloud providers offer parallel tools for DevOps and CI/ CD. &lt;/p&gt;

&lt;p&gt;Following image shows CI/ CD pipelines flow using Azure DevOps. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4vy9fxd61ygesdq0hq5v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F4vy9fxd61ygesdq0hq5v.jpg" alt="Azure DevOps - CI/ CD Pipeline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevOps Culture Adoption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By adopting DevOps culture in organizations and using automation mentioned above, Organizations have achieved significantly faster time to market. Moved from one in a quarter release to on-demand updates or at least per week / per sprint release cycle. The goal is to release frequently, gather feedback and fail-fast early in the development cycle, when it is less expensive to improvise / fix. CI/ CD practices allows better collaboration across teams and software quality, as it automates mundane, repeated tasks. DevOps adoption is key for achieving high performance across organization as it lets teams focus efforts on building important business features and bring growth. &lt;/p&gt;

&lt;p&gt;I hope you enjoyed reading this cloud-native series and learnt something new. Cloud-native application empowers digital disruption to brings better products and services to market - with quality and speed. &lt;/p&gt;

&lt;p&gt;Happy journey to cloud-native adoption and transformation ! &lt;/p&gt;

&lt;p&gt;Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>agile</category>
      <category>cloudnative</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Containers - Docker, Kubernetes and Cloud Buildpacks</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Wed, 21 Oct 2020 19:38:32 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/containers-docker-kubernetes-and-cloud-buildpacks-4o9h</link>
      <guid>https://dev.to/dhruvesh_patel/containers-docker-kubernetes-and-cloud-buildpacks-4o9h</guid>
      <description>&lt;p&gt;This post will focus on how to create containers using open source tools and technology - starting from Docker (tool designed to build, package, deploy, and run applications by using containers), Kubernetes (Container Orchestration tool) and Cloud-native Buildpacks (quickest way to turn app code into images that can run on any cloud). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Container is used to package and run an application on a shared Operating System. They are isolated from other Containers and share the resources of the underlying Operating System, allowing for efficient restart, scale-up or scale-out of applications across clouds. Containers typically contain Microservices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of using Containers&lt;/strong&gt; over traditional Virtual Machines such as,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Agility&lt;/em&gt; - Accelerate software development / deployment &amp;amp; Fast application start-up, as no OS to boot like VMs&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Portability&lt;/em&gt; - Easy moving across environments as standardized packaging for software and its dependencies &lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Security&lt;/em&gt; - Built-in security capabilities&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Cost Savings&lt;/em&gt; - Lightweight and consumes less computing resources (CPU, RAM, disk space)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following diagram shows differences between VM and Containers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftufzf9koqlkls8ptlwxc.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftufzf9koqlkls8ptlwxc.JPG" alt="VM vs Containers"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Docker?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Docker is a popular open source platform with ecosystem of products that use containers, which allows to package and run application in an isolated environment. &lt;/p&gt;

&lt;p&gt;Docker comes with eco-system of products like,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Hub - hosted repository service for finding and sharing container images &lt;/li&gt;
&lt;li&gt;Docker Engine - an open source containerization technology for building and containerizing your applications&lt;/li&gt;
&lt;li&gt;Docker Desktop - enables you to start containerizing in minutes and is the easiest way to run Docker Engine on personal laptop &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Docker collaborates with the open source ecosystem through an array of projects that continue to fuel the containerization movement, the Docker platform and other Docker products. For more details, Refer  &lt;a href="https://www.docker.com/community/open-source" rel="noopener noreferrer"&gt;https://www.docker.com/community/open-source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker commands&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fct3z64qe0db0kemzvcv3.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fct3z64qe0db0kemzvcv3.JPG" alt="Docker Build and Share Commands"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhrkuxyea7ytn4r3f7mma.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhrkuxyea7ytn4r3f7mma.JPG" alt="Docker Run Commands"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sample Dockerfile for Java based Spring Boot Application:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6knxbhivsq37ofkksp5o.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6knxbhivsq37ofkksp5o.JPG" alt="Sample Dockerfile"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes is a Container orchestration platform, which is portable, extensible, open-source platform for managing containerized workloads and services and facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. &lt;/p&gt;

&lt;p&gt;Following diagram shows different components of Kubernetes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F25thdewr98kycm8uzkhv.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F25thdewr98kycm8uzkhv.JPG" alt="Kubernetes Components"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes provides ready-to-use functionality for below management tasks. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkfajzu6hopv3pbysm2g4.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkfajzu6hopv3pbysm2g4.JPG" alt="k8s management tasks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To get hands dirty with deploying containerized apps to Kubernetes, start with minikube, it helps to deploy Kubernetes locally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud Buildpacks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud Native Buildpacks (&lt;a href="https://buildpacks.io/" rel="noopener noreferrer"&gt;https://buildpacks.io/&lt;/a&gt;) transform your application source code into images that can run on any cloud - without any hassle of knowing low level details of defining Dockerfile. &lt;/p&gt;

&lt;p&gt;The fastest way to try Cloud Native Buildpacks is via the pack CLI from buildpacks.  It helps to create a runnable app image from source code without writing Dockerfile.&lt;/p&gt;

&lt;p&gt;In order to run the build process in an isolated fashion, pack uses Docker. Run following commands to build sample Java application image. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F535yzsmem1ynul71tnw9.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F535yzsmem1ynul71tnw9.JPG" alt="Buildpacks commands"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it! You’ve now got a runnable app image called myapp available on your local Docker daemon - in just under 100 seconds. Please note, that your app was built without needing to install a JDK, run Maven, or otherwise configure a build environment. Pack and buildpacks took care of that for you.&lt;/p&gt;

&lt;p&gt;Happy coding and containerizing !! Please like, share and comment your views/ opinion.&lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>cloudnative</category>
      <category>devops</category>
      <category>microservices</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Microservices - Introduction, How to design &amp; develop? When to use?</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Wed, 21 Oct 2020 12:57:29 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/microservices-introduction-how-to-design-develop-when-to-use-2pfg</link>
      <guid>https://dev.to/dhruvesh_patel/microservices-introduction-how-to-design-develop-when-to-use-2pfg</guid>
      <description>&lt;p&gt;This article will focus on microservices architecture introduction, benefits, how to design &amp;amp; develop and when to use for this architecture pattern. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. &lt;/p&gt;

&lt;p&gt;It has following characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built around business capabilities&lt;/li&gt;
&lt;li&gt;Loosely coupled services and highly resilient, scalable services&lt;/li&gt;
&lt;li&gt;Independently deployable using automated pipelines (CI/ CD)&lt;/li&gt;
&lt;li&gt;Capable of being developed by a small team - highly maintainable &amp;amp; testable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With legacy Monolithic architecture style, which is often developed as a single process, all functionality is deployed as one large process. And it scales by replicating the monolith on multiple servers. This has limitations such as difficult to selectively scale, long term commitment to technology stack and hard to modify as monolith grows over time and long time to develop new features. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Microservices Architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evolutionary design&lt;/li&gt;
&lt;li&gt;Possible to selectively scale up and down based on volume&lt;/li&gt;
&lt;li&gt;Enables the continuous delivery and deployment - shorter time to market&lt;/li&gt;
&lt;li&gt;Easy to understand and add new team members&lt;/li&gt;
&lt;li&gt;Flexibility to choose most suitable technology stack for new business change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Following diagram by Martin Fowler summarizes comparison between monolith and microservices. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg8x19fveea86t3op2de2.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fg8x19fveea86t3op2de2.JPG" alt="Martin Fowler - Monolith and Microservices Comparison"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to decompose and develop microservices?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To design system with microservices, Domain driven design (DDD) principles are very handy. It says, develop microservices by considering high cohesion of related business functionality. &lt;/p&gt;

&lt;p&gt;DDD refers to the application’s context to solve a particular business need as the domain. A domain is consists of multiple subdomains. Each subdomain corresponds to a different part of the business.&lt;/p&gt;

&lt;p&gt;For example, Online grocery store as domain would have following sub domains. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product Catalog&lt;/li&gt;
&lt;li&gt;Order Management&lt;/li&gt;
&lt;li&gt;Delivery Management&lt;/li&gt;
&lt;li&gt;Inventory Management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This segregation of bounded context, domains and sub domains require good understanding of business and organization structure. &lt;/p&gt;

&lt;p&gt;Each microservice is built with single responsibility principle, but not too granular that a single business change affects multiple microservices and requires them to deployed together most of the time (sometimes for a big change, this is fine. But not always, otherwise it is just another monolith).  &lt;/p&gt;

&lt;p&gt;Another analogy that helps with microservices design is the design of Unix utilities such as grep, cat and find. Each utility does exactly one thing, often exceptionally well, and can be combined with other utilities using a shell script to perform complex tasks.&lt;/p&gt;

&lt;p&gt;Following diagram shows illustrative views of microservices architecture. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fagsfsiswry74df4dlsdr.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fagsfsiswry74df4dlsdr.JPG" alt="Microservices - Overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to develop microservices?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In order to achieve loose coupling, the system with microservices might have more than one/ database per service. So consider saga pattern for distributed transaction management as 2-phase commit is not an option. Each service can publish events as and when their data changes, and other services consume these events to take relevant action on their side (update their data). Consider Event sourcing design pattern. &lt;/p&gt;

&lt;p&gt;For retrieving data owned by multiple services, consider Command Query responsibility segregation (CQRS) and API Composition design pattern. &lt;/p&gt;

&lt;p&gt;It gives lots of flexibility in terms of choosing technology stack for developing microservices, but be careful to consider "hype cycle" of any technology and availability of talent pool. For example, Java is widely used and popular programming language with support of various open source framework and tools such as Spring Boot, Kafka, Swagger, to name a few. Python as well comes with lots of popular libraries such as numpy, pandas, pyTorch and talent pool. &lt;/p&gt;

&lt;p&gt;Be careful to only choose microservices architecture when you have compelling need and demanding business case. Keep in mind that microservices architecture is not silver built that applies to all business problems and use cases. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When to use microservices architecture?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When building strategic business transformation products and services, which have long future and is likely to have high volume transactions and traffic&lt;/li&gt;
&lt;li&gt;When existing monolithic application has known issues to accommodate scalability, agility, and delivery speed&lt;/li&gt;
&lt;li&gt;Availability of right tools and technological expertise within team to develop cloud-native applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most large scale web sites including Netflix, Amazon and eBay have evolved from a monolithic architecture to a microservices architecture. &lt;/p&gt;

&lt;p&gt;Happy coding and building microservices ! Please like, share and comment your views/ opinion. &lt;/p&gt;

&lt;p&gt;Disclaimer - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>agile</category>
      <category>devops</category>
      <category>cloudnative</category>
    </item>
    <item>
      <title>What is cloud-native?</title>
      <dc:creator>Dhruvesh Patel</dc:creator>
      <pubDate>Tue, 20 Oct 2020 22:44:00 +0000</pubDate>
      <link>https://dev.to/dhruvesh_patel/what-is-cloud-native-2j8e</link>
      <guid>https://dev.to/dhruvesh_patel/what-is-cloud-native-2j8e</guid>
      <description>&lt;p&gt;This post will talk about cloud-native - "what, why, how and when" cloud-native is relevant.&lt;/p&gt;

&lt;p&gt;What is cloud-native application? The application that is built to take full advantage of the underlying cloud platform. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;built in the cloud&lt;/li&gt;
&lt;li&gt;for the cloud&lt;/li&gt;
&lt;li&gt;maximizing the benefits of the cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloud-native computing foundation (CNCF) defines official definition of cloud-native as : Cloud-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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of cloud native applications:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qp4zll4jvbwe2pentkg.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6qp4zll4jvbwe2pentkg.JPG" alt="Benefits of cloud-native applications"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Speed&lt;/strong&gt; - the ability to innovate, experiment and reduce time to market to bring new products and services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Safety&lt;/strong&gt; - the ability to move rapidly but also maintain stability, availability and durability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale&lt;/strong&gt; - the ability to elastically respond to changes in demand (aka scale up / scale down - without manual intervention)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Over the years, software development industry has matured and it has evolved on all areas covering - development process, application architecture, packaging, deployment and application infrastructure. &lt;/p&gt;

&lt;p&gt;Following diagram shows evolution of software development process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx76gr87ldxvqtxyh45mm.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fx76gr87ldxvqtxyh45mm.JPG" alt="evolution of software development process"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloud-native software development offers benefits for safety, speed and scale as mentioned in above section.&lt;/p&gt;

&lt;p&gt;Now, that we know what and why of cloud-native, lets switch gears and understand how? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to design and build cloud-native applications?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The widely accepted methodology for constructing cloud-native application is &lt;a href="https://12factor.net/" rel="noopener noreferrer"&gt;12-factor application&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Following image highlights 12-factor applications methodology and beyond. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvle3nycvjaaam52ypj21.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fvle3nycvjaaam52ypj21.JPG" alt="12-factor apps &amp;amp; Beyond"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that we understand, why what and how of cloud-native application, lets look at when?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Use cases - When to consider cloud-native applications?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strategic enterprise systems that needs to constantly evolve with business need &lt;/li&gt;
&lt;li&gt;Apps that require shorter time to market&lt;/li&gt;
&lt;li&gt;Apps that require components to scale individually (and not as whole)&lt;/li&gt;
&lt;li&gt;Last but not least, team with expertise in cloud-native skillset&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a rule of thumb, Apply cost/ benefit analysis by considering cost of cloud-native development with business value of the application before jumping onto band-wagon of cloud-native application. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloud-native applications are the foundation for the modern way of software development and acts as backbone for digital transformation led growth and innovation. &lt;/p&gt;

&lt;p&gt;Enjoy building cloud-native applications !! &lt;/p&gt;

&lt;p&gt;Note - Cloud Native Computing Foundation (CNCF - &lt;a href="https://www.cncf.io/" rel="noopener noreferrer"&gt;https://www.cncf.io/&lt;/a&gt;), is an influential open-source consortium of over 300 major corporations. It's responsible for driving the adoption of cloud-native computing across technology and cloud stacks.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclaimer&lt;/em&gt; - This post is my personal opinion and does not reflect those of any of my past, present or future employers or affiliations.&lt;/p&gt;

</description>
      <category>cloudnative</category>
      <category>microservices</category>
      <category>devops</category>
      <category>agile</category>
    </item>
  </channel>
</rss>
