<?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>Forem: Rajkumar Balakrishnan</title>
    <description>The latest articles on Forem by Rajkumar Balakrishnan (@irajbalakrish).</description>
    <link>https://forem.com/irajbalakrish</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%2F27326%2F933ce34e-e781-4804-ae8a-520a653eaaec.jpg</url>
      <title>Forem: Rajkumar Balakrishnan</title>
      <link>https://forem.com/irajbalakrish</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/irajbalakrish"/>
    <language>en</language>
    <item>
      <title>The Six Questions of Serverless ❓🧐😎</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Fri, 01 Nov 2019 05:54:15 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/the-six-questions-of-serverless-ge1</link>
      <guid>https://forem.com/irajbalakrish/the-six-questions-of-serverless-ge1</guid>
      <description>&lt;p&gt;Few Months ago I had a chance to contribute to a Serverless Expert Check WhitePaper where I answered a bunch of interesting questions. I thought I'll extract my answers for this post 😊 You can read the whole article &lt;a href="https://serverless-architecture.io/serverless-expert-check-whitepaper-2019/"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;1.Serverless as a term is a rather controversial buzzword: Servers are still in use. In addition, everyone seems to understand something different by serverless - for example FaaS or BaaS. So first of all the question: What is serverless for you personally?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s a great question. It’s just the term “Serverless” that is overrated not the idea behind it. Come on, Everyone knows that there are big fat servers behind these services. But wait, have you considered a wireless router or a cordless phone ? There are wires and cords behind those instruments but we do agree that they are wireLESS and cordLESS devices. Buzzwords tend to evolve from views and viewpoints. The view serverless sounds about right from the viewpoint of a developer. The developer just needs to care about running a piece of code per se and not about servers, network, OS, Memory, Processor and so on. The serverless platform allows you to operate at a higher level of abstraction. When a particular technology platform ( compute,data,storage etc..,) matures right to the level where its utilization does not concern on what and how it should run, then chances are that the platform is serverless. And like you asked, It can be Functions as a Service ( FaaS ), Backend as a Service ( BaaS ), Messaging as a Service, Containers as a Service and likewise.  If we look behind the years of computing, we worked our way up from transistors, Logic Gates, Processors, Assembly Languages until today where programming a system almost feels natural and Serverless is just another evolution of computing. If you ask me What it Personally means, I’m gonna say Serverless is very similar to playing with lego blocks, you have all the pieces(Extensions, Connectors etc.) at  your disposal.You just care about what you wanna build and that’s about it. For the rest it just works.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;2.From a developer's point of view, serverless has many advantages, one of which is that you practically don't have to worry about the infrastructure anymore. In your opinion, how does Serverless change the everyday life of developers?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I believe serverless platform influences the mindset about ‘How we write code’. You don’t name a function as one and implement two. You do one thing and do it right. Serverless as a computing platform helps developers write code with a singular purpose. The focus shifts from writing big chunks of classes to simpler functions. In principle if this all adds up right then we should be delivering greater business value in doing what we are doing.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;3.Developers aren't the only ones affected by the new model, especially when you think of DevOps: What are the consequences of the serverless approach for Operators/System Administrators?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the context of SRE, running every product or service has a percentage of toil associated. Toil is usually repetitive manual work that has no significant value in the long term. A service goes down and there’s some manual cogs and wheels to be turned to bring it back again. This can be true for both developers and operators. Adapting to Serverless creates space for improving the reliability of the service. Monitoring and operations and can shift to metrics that is of more customer value than just the amount memory and CPU being consumed. So I see a potential improvement in reduction of toil and improved reliability in running services&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;4.Simon Wardley has put forward the thesis that containers and kubernetes are only a marginal phenomenon in the history of software development and could soon become obsolete, since „serverless is eating the world.“ What do you think of that?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Actually I don’t know.. But If we look at the larger picture, every piece of tech that we use tends to co-exist with another competing tech stack until one of them becomes irrelevant and obsolete. At times people simply don’t want to adopt despite the stack being very good. So it’s kinda hard to say. I hear more stories about how friends in other companies building platforms based on container stack and yea, it’s a matter of choice. I think these stacks will continue to co-exist. Whether or not one will eat the other, time has to say.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;5.Serverless is all about scalability and the associated costs: Is it still worth using your own servers today, or is the price/performance ratio of Serverless unbeatable?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An Enterprise is backed by different kinds of software products costing between millions to hundreds of thousands of Euros. Not every product mature at the same level and every product requires a different execution environment be it on prem or cloud. And the way some products are built today it cannot be billed on a serverless model. All that it means is we can’t just do away with our servers yet..In Most cases price is not the only determining factor for driving a project forward. However New Development projects can factor in serverless platforms for building reliable services amongst other stacks&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;6.Finally, a brief look into the crystal ball: What role will Serverless play in 2020&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well 2020 is few months away and I believe Serverless adoption will continue to increase. Databases, Messaging and many other components of Software building will expand to a serverless model across multiple cloud environments &amp;amp; while it already does that today, I think the pace will further accelerate. Again, the number of options to choose the components of software building will increase. This all in a way democratizes the accessibility of technology to small and medium scale businesses making it all affordable. At the end of the day its all about delivering incremental business value to customers. Let’s look forward to be part of Inclusive community of people doing great things and building a happier present and future&lt;/p&gt;




</description>
      <category>serverless</category>
      <category>azure</category>
      <category>aws</category>
    </item>
    <item>
      <title>What if we combine the powers of Logic Apps and AzFunctions !? 😍❤✔</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sat, 28 Sep 2019 09:02:05 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/what-if-we-combine-the-power-of-logic-apps-and-azfunctions-31fl</link>
      <guid>https://forem.com/irajbalakrish/what-if-we-combine-the-power-of-logic-apps-and-azfunctions-31fl</guid>
      <description>&lt;p&gt;Azure Logic apps are awesome to build serverless workflows. Having a bunch of pre-built connectors to different systems and services, it is often easy to hack a workflow, model a PoC etc.. The visual representation helps the business to understand the implementation detail. When things fail, it is easy to know in which step did the run fail and most often it is also easy to understand the reason of failure. So the point is, I love Logic apps for their simplicity... &lt;/p&gt;

&lt;p&gt;Now What I don't find easier in this model is that, &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Parameterizing Logic Apps for CI/CD pipeline is a nightmare. Atleast, to me 🤦‍♀️&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The connectors have operational limits. When you design your solution you have to be thoroughly aware about the throttling limits of various steps inside your workflow 🚴‍♂️&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When the number of steps in the workflow increases, the visual complexity / viewing experience becomes too noisy. Think about nested foreach loops and switch cases branching off to additional workflows 🧐&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And when things go wrong inside deep nested workflows, things get harder to debug 🤨😏😣 Imagine you have a foreach loop in the logic app that ran 205 times and you are interested in one particular loop (say that was the 179th loop, but you don't know that unless you know it). Good luck clicking through the next button of the loop step &lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fu7nc4izgkauhvjyh53n0.PNG" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fu7nc4izgkauhvjyh53n0.PNG" alt="Logic App"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again there are better methods and practices to get around these problems. It just isn't simple. After all a tool is only as good as the one who is using it. But the question is, can it be any better ? Like in every other case it definitely can. In this story I would like to share what I think could be an awesome product feature on the top of AzureFunction that could address this situation&lt;/p&gt;

&lt;p&gt;Azure function helps developers focus on their code doing the thing. Now the idea is to be able to add visual representation to the methods of the code which executes a particular workflow by decorating the method. &lt;/p&gt;

&lt;p&gt;The visual representation could look to the likes of the logic app showing off the input params / output params + Trace steps to start with. By the way it is already possible to achieve something similar through #ApplicationInsights but the viewing experience is more fluid, the way logic app represents the runs.&lt;/p&gt;

&lt;p&gt;Normally Azure Function Runs will be represented like this &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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzn8n0j0sd2llbs6haelh.PNG" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzn8n0j0sd2llbs6haelh.PNG" alt="Az Function"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clicking on one of these Runs would lead you to the Invocation Details, that is the logs traced for that function run and clicking one level further would execute a kusto query drilling down to all traces,dependencies,exception and other props from ApplicationInsights tables tracked for the operation Id of that function run&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fq9xxcht8yk1j72kvhk1o.PNG" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fq9xxcht8yk1j72kvhk1o.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;it would be nice if clicking on the function run would first reveal the visual representation of the function just like the logic app .. but this time it is up to the developer to abstract the complexities of the function or NOT in order to represent the clear workflow of the function.&lt;/p&gt;

&lt;p&gt;This model could be more inclusive bringing the business closer to the dev &amp;amp; ops functions.. Well that's what i think 😊😎 &lt;/p&gt;

&lt;p&gt;So it gives the power of easy dev ( code, debug, CI/CD ) + the benefits of the visuals of Logic App and could be a new tool in the box to get the job done 😀 What do you think ?&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>azure</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Akka Cluster, Kubernetes and More</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sun, 08 Sep 2019 07:12:04 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/akka-cluster-kubernetes-and-more-4l2p</link>
      <guid>https://forem.com/irajbalakrish/akka-cluster-kubernetes-and-more-4l2p</guid>
      <description>&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3uxcuwnuwm6s6qdo1mi8.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3uxcuwnuwm6s6qdo1mi8.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F036qq87n5vtlblmr1a7j.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F036qq87n5vtlblmr1a7j.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faaaqoihwmgfurz9fay3l.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Faaaqoihwmgfurz9fay3l.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frqau9s6w6ki6dl57pv88.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Frqau9s6w6ki6dl57pv88.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1of35naido0pvofvkr17.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1of35naido0pvofvkr17.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fz7vxt6s77upa0y1qw3nm.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fz7vxt6s77upa0y1qw3nm.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo3t5zalhiup9jcimuh88.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fo3t5zalhiup9jcimuh88.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3zi68fnc371rih4fp4sz.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3zi68fnc371rih4fp4sz.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fcx44jxa94zvgdf3aovtz.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fcx44jxa94zvgdf3aovtz.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvnye0sy4m8hvnqlfmx9g.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvnye0sy4m8hvnqlfmx9g.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fez75usgvcvbdoy3crur2.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fez75usgvcvbdoy3crur2.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft5km74owj0tnt4dkxoad.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ft5km74owj0tnt4dkxoad.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fl7zvnnred6993i12rb5n.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fl7zvnnred6993i12rb5n.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxbwyuxsgqp1gmp6gajho.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fxbwyuxsgqp1gmp6gajho.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmdgup464bszyo7n1ghvt.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmdgup464bszyo7n1ghvt.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgkq3rpni0uz25amzgivt.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fgkq3rpni0uz25amzgivt.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fn661hrlqoijtasxo3ju4.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fn661hrlqoijtasxo3ju4.jpg" alt="Alt Text"&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2kj1ubc4naikzl500et1.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F2kj1ubc4naikzl500et1.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>akka</category>
      <category>actors</category>
      <category>distributedsystems</category>
    </item>
    <item>
      <title>Microservices using Azure Functions and Event Grid 👍❤️</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sun, 21 Jul 2019 07:18:28 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/microservices-using-azure-functions-and-event-grid-47jn</link>
      <guid>https://forem.com/irajbalakrish/microservices-using-azure-functions-and-event-grid-47jn</guid>
      <description>&lt;h1&gt;
  
  
  &lt;a href="https://thepracticaldev.s3.amazonaws.com/i/zzuemdqyz2q32zdvqgtd.jpeg" rel="noopener noreferrer"&gt;Page 1&lt;/a&gt;
&lt;/h1&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzzuemdqyz2q32zdvqgtd.jpeg" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fzzuemdqyz2q32zdvqgtd.jpeg" alt="Page 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://thepracticaldev.s3.amazonaws.com/i/bp5hbdfov5fmrma8m5jo.jpeg" rel="noopener noreferrer"&gt;Page 2&lt;/a&gt;
&lt;/h1&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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbp5hbdfov5fmrma8m5jo.jpeg" 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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbp5hbdfov5fmrma8m5jo.jpeg" alt="Page 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Page 3 - to be continued
&lt;/h1&gt;

</description>
      <category>microservices</category>
      <category>azure</category>
      <category>functions</category>
      <category>eventgrid</category>
    </item>
    <item>
      <title>Resubmit Logic Apps using C# ❤❤</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sat, 20 Jul 2019 18:26:23 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/resubmit-logic-apps-using-c-55a2</link>
      <guid>https://forem.com/irajbalakrish/resubmit-logic-apps-using-c-55a2</guid>
      <description>&lt;p&gt;Ok. Straight to the point. The logic app that am supposed to monitor ( which I did not apparently, quite well ) failed a terrible 492 odd times. When I did notice the failures, it was quite late as you can Imagine.&lt;br&gt;
Ah Ok !! The Logic App had one of its API Connections misconfigured. Gotcha.. Got that fixed. Now all the failed instances of the logic app needs to be re-run&lt;br&gt;
Like everyone else I was looking for a Select All Checkbox + ReSubmit Button and found it nowhere. The only option left was to select 492 check boxes ( individually ) and then Resubmit in OMS. And am not a great fan of clicking my way out.&lt;/p&gt;

&lt;p&gt;So ended up writing a C# Console Application that can Iteratively resubmit each instance of the failed logic app.&lt;/p&gt;
&lt;h1&gt;
  
  
  There are three things to be done to accomplish in order to bulk resubmit the failed logic apps
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;GetAccessToken&lt;/li&gt;
&lt;li&gt;GetWorkflowHistoryRuns&lt;/li&gt;
&lt;li&gt;ReSubmitFailedLogicApps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you need to Know to Run this Console Application ?&lt;/p&gt;
&lt;h1&gt;
  
  
  There are few settings that needs to be configured before running the App
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;AAD TenantId&lt;/li&gt;
&lt;li&gt;Client AppId and Secret that has contributor permissions to the ResourceGroup Running the Logic App&lt;/li&gt;
&lt;li&gt;Subscription Id, Resource Group Name, Logic App Name and the trigger name of the Logic App&lt;/li&gt;
&lt;/ol&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h1&gt;
  
  
  How does it work ?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;GetAccessToken fetches the bearer token to transact with Azure Management API’s&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;GetWorkflowHistoryRuns fetches the list of failed logic app instances Iteratively&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;ReSubmitFailedLogicApps submits the list of failed logic app instances to Azure to be Re-Run&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


</description>
      <category>azure</category>
      <category>logicapps</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Continuous Integration for JSReport on Azure AppService - Part 1 😉😉</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sat, 20 Jul 2019 11:45:20 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/continuous-integration-for-jsreport-on-azure-appservice-part-1-4eg9</link>
      <guid>https://forem.com/irajbalakrish/continuous-integration-for-jsreport-on-azure-appservice-part-1-4eg9</guid>
      <description>&lt;p&gt;Recently I picked a User Story to build PDF Reports for a .NET Core Application. After trying PDFSharp I gave up due to the enormous plumbing work required to make it work for .NET Core on the top of drawing the whole PDF Design thingy in C#&lt;/p&gt;

&lt;p&gt;I started looking for an alternative and stumbled upon jsreport, a neat and elegant library / service for drawing PDF Reports using HTML and handlebars Templates. &lt;/p&gt;

&lt;p&gt;You can pick from a variety of recipes aka Algorithms to generate PDF’s using engines like PhantomPDF, Electron,Chromium,WkhtmltoPDF etc.., The service is available as a SaaS Model, with a Possibility to Host it On-Prem using various Technology Stacks ranging from MSFT Azure, AWS etc.., and of course a Client SDK.&lt;/p&gt;

&lt;p&gt;The best part of using this service is the fact that they have a Vibrant Moderating Community for this Product and Jan Blaha who i think is the maker of this service can answer questions , supply hot fixes like blazingly fast :) You have a problem., then the Turn Around for a HotFix is less than a day or two !!&lt;/p&gt;

&lt;p&gt;I tried creating my PDF Template in the jsreport Studio, Hooked up to a DotNetCore WebApi and finally letting an Angular App consuming it. And this worked like a Charm. &lt;/p&gt;

&lt;p&gt;Now I wanted to use this service for other Applications within the Team. So this needs to be Self Hosted on Multiple Environments for DevTest &amp;amp; Production + the Whole Process of Hosting to Adding New PDF Templates needs to be Automated&lt;/p&gt;

&lt;p&gt;The Platform of Choice is Azure and the method of Pulling the Image is through a Docker Hub Public Registry. This involved navigating the portal blades back and forth to create an AppServicePlan, AppService, Container Configuration,StorageAccount and AppSetting Configuration for Authentication and ConnectionStrings for Security and Template Persistence&lt;/p&gt;

&lt;h1&gt;
  
  
  In Short that’s Hell a lot of clicks to spin up a Service ..
&lt;/h1&gt;

&lt;p&gt;So First Step is to Automate the Deployment of jsreport Service to Azure using ARM Templates. Quickly wrote an ARM Template that can create a Linux Service + StorageAccount, Pull the Jsreports 2.1.0-full version build from Docker Registry and Configure Authentication and Embed All the settings required to connect to a Storage Account in order to Persist the Templates.&lt;/p&gt;

&lt;h1&gt;
  
  
  In Short, ARM Templates enables to spin up your own Azure jsreport Service Environment in less than couple of clicks
&lt;/h1&gt;

&lt;p&gt;I will commit this Template to &lt;a href="https://azure.microsoft.com/en-us/resources/templates"&gt;Azure QuickStart&lt;/a&gt; ARM Template Collection shortly. Until then you can access this template from my &lt;a href="https://github.com/irajbalakrish/JSReportsAzureDeployment"&gt;Github repository&lt;/a&gt; and deploy to your Azure Environment to get your self hosted version of jsreport up and running within minutes&lt;/p&gt;

&lt;p&gt;To Understand How to Deploy ARM Templates using Visual Studio, &lt;a href="https://docs.microsoft.com/en-us/azure/azure-resource-manager/vs-azure-tools-resource-groups-deployment-projects-create-deploy"&gt;read this article&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next part I will write about deploying this ARM Template using VSTS and methods to publish jsreport PDF Templates created in the studio to the other jsreport azure environments in a fully automated fashion&lt;/p&gt;

</description>
      <category>jsreport</category>
      <category>azure</category>
      <category>containers</category>
      <category>armtemplates</category>
    </item>
    <item>
      <title>Bob, Bank and Bitcoin-Part 1 🍔🍕🍟</title>
      <dc:creator>Rajkumar Balakrishnan</dc:creator>
      <pubDate>Sat, 01 Jun 2019 20:59:11 +0000</pubDate>
      <link>https://forem.com/irajbalakrish/bob-bank-and-bitcoin-part-1-ml8</link>
      <guid>https://forem.com/irajbalakrish/bob-bank-and-bitcoin-part-1-ml8</guid>
      <description>&lt;p&gt;Bro : Explain me Bitcoins 🧐🧐&lt;/p&gt;

&lt;p&gt;Me : Bitcoins Huh !! This is complicated 🤦‍♀️🤦‍♀️&lt;/p&gt;

&lt;p&gt;Bro : Then Simplify it for me ! Duh 😎😎&lt;/p&gt;

&lt;p&gt;Me: Alright !! 🥱&lt;/p&gt;

&lt;p&gt;Bob buys a Meal for 10 EUR from McDonald’s and Pays the Bill using his Bank Card.&lt;/p&gt;

&lt;p&gt;The Payment got through successfully because the bank authorized Bob’s transaction.&lt;/p&gt;

&lt;p&gt;Ah forgot to mention…, Bob’s Bank balance is exactly 10 EUR.&lt;/p&gt;

&lt;p&gt;Now What do you think would happen if Bob tries to buy another Meal for his friend using the same Bank Card.&lt;/p&gt;

&lt;p&gt;The transaction will be declined considering the fact that Bob’s Bank Balance is now 0 EUR.&lt;/p&gt;

&lt;p&gt;Therefore Bob cannot spend the money which he doesn’t have in the first place.&lt;/p&gt;

&lt;p&gt;So the Bank happens to be the Big Brother keeping a watch on Bob’s finance and determines the success of his transactions&lt;/p&gt;

&lt;p&gt;And the Big Brother’s watch on Bob’s and Everybody’s accounts does not come for free.&lt;/p&gt;

&lt;p&gt;The bank ends up processing Hundreds and thousands of McDonald’s like transactions every minute and sure there’s a huge cost involved in calculating Who pays Who and What remains Where.&lt;/p&gt;

&lt;p&gt;Imagine a Global System of Private Banking Networks, Equipments, Software, Security, Engineers, Bankers, etc..,involved in Who, What and Where Calculations. Quite Expensive Huh ?&lt;/p&gt;

&lt;p&gt;There’s always somebody or everybody paying the Bank for these compute costs and this further rises when the payment needs to be processed across borders.&lt;/p&gt;

&lt;p&gt;In Bob’s Story, the Bank Applies a fee to McDonald’s for every transaction made at their counter and the Merchant might factor this fee into the cost of Hamburger or elsewhere in Operations to make sure this expense is covered and runs a fair trade&lt;/p&gt;

&lt;p&gt;Note : These are Called InterChange Charges and is based on complex taxation formulas and governed differently in every Jurisdiction. Whether or not these costs can be passed on to the customer is debatable but there are no strong reasons to believe why it cannot be passed over :(&lt;/p&gt;

&lt;p&gt;In principle Bob pays his own money to use his money.. Sounds Fair ? &lt;br&gt;
Perhaps Not !!!&lt;/p&gt;

&lt;h1&gt;
  
  
  There are few economics to consider in Bob’s Story
&lt;/h1&gt;

&lt;p&gt;The value of EUR is a legal tender and mutually accepted between Bob, McDonalds and of-course the Bank.&lt;/p&gt;

&lt;p&gt;What If Bob hands out a plain paper and says that’s his new 10 EUR Bill. It would end up in a contention at the counter for obvious reasons. It takes no genius to fight Bob’s Claims.&lt;/p&gt;

&lt;p&gt;Or … What if Bob wants to give away something from his antique collection to pay for the meal. That’s still a problem even if the antique is more valuable than the Meal. The guy at the counter can simply decline since the antique is no legal tender and cannot be exchanged for anything lawfully.&lt;/p&gt;

&lt;p&gt;But if Bob presents a counterfeit 10 EUR bill, then Chances are that the other party would accept his transaction and present him with the meal he wanted.&lt;br&gt;
Bro : Now What does this story have to do anything at all with Bitcoins ?&lt;/p&gt;

&lt;p&gt;Me : It has everything to do with Bitcoins. Before getting to understand How Bitcoins Work, it’s rather better to take a closer look on How Regular Banking System Works.&lt;/p&gt;

&lt;p&gt;By the way, You gotta be aware that…&lt;/p&gt;

&lt;p&gt;Traditional Currency Notes are Printed, Coins are Minted but Bitcoins are Mined&lt;br&gt;
Bro : Mining applies to Gold, Diamond and Precious Stones, What does it have to do with Bitcoins anyways ?&lt;/p&gt;

&lt;p&gt;Me : See you in Part 2&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>bitcoin</category>
    </item>
  </channel>
</rss>
