Skip to main content

Posts

Showing posts from 2019

How to run Azure Functions on AWS and on-premises

Nowadays cloud and hybrid cloud solutions are highly demanded by companies. In this post, we will talk about a technical solution for business logic that it’s supported by multiple clouds provides and can run on-premises without any kind of issues.
The requirements for the given scenario is the following:
We need to be able to expose an API that can execute tasks that runs for 2-5 minutes each in parallel. The native platform shall be Microsoft Azure, but it should be able to run on dedicated hardware in specific countries like China and Russia. With minimal effort, it should be able to run on the AWS platform.

The current team that we had available was a .NET Core team, with good skills on ASP.NET. There are numerous services available on Azure that can run in different environments also. The most attractive ones are the ones on top of Kubernetes and microservices.
Even so, we decided to do things a little different. We had to take into considerations that an autoscaling functionalit…

How to access Power BI resources from client application (first and third party embedding)

In this post, we will talk about different ways on how we can authenticate and authorize our applications to access our Power BI Reports. Things become a little bit confusing because there are reports that can be owned by the users that access them or by another user. Additional to this there are cases when the users own the report, but not the data that are displayed.
Before jumping to the solution, we need to understand a few concepts related to how Power BI works when you use embedded functionality. The basic idea of Power BI embedded functionality is the ability to integrate an IFRAME inside your application. Inside the IFRAME we can display any content we want from reports to dashboards.
The IFRAME content is loaded directly from Power BI services using an URL and a security token. The security token can be obtained from Azure AD thought your application.
This involves two steps for authentication. The first step is happening when you call directly or indirectly the Azure AD to o…

Events and Message based system comparison

I heard very often discussion related to messaging and event systems. People are trying to compare them and decide on one solution that suits all their needs on a platform. Comparison of an Enterprise Service Bus (ESB) and an Event base messaging system it’s wrong from the beginning.

Even if both solutions are great, they resolve different problems that we might have on a platform. ESB and Events are able to transport data between two or multiple systems, but this is where the similarities end. From the way how they are design, core features and what we can achieve with each of them, we will notify that their capabilities are limited and they don’t compete between each other.

As we will discover, later on, a complex solution might need to use both approaches to offer a consistent and competitive solution.
To be able to give hands-on examples, we will use for comparison two services that Microsoft Azure is offering.

Azure Service Bus – an ESB solution hosted inside Microsoft Azure, that…

Communication Strategies on top of message base communication for outages or disasters protection

In the last post, we identified different location inside and outside a micro-service architecture where messaging base communication could be used with success. Beside this we identified that to be able to have a high-performance system, we need to use reliable messaging communication channels.
If we decide to run our micro-service solution inside Kubernetes on top of Azure Kubernetes Services (AKS), we need to take into consideration messaging and event bases communication channels like Azure Service Bus or Azure Event Hub.
Even so, this is not enough to be fully protected of any outages or disasters. Another layer of protection that we should define is at the application level. In this post, we will discuss some communication strategies that can increase our protection against outages and disasters.
The below solutions can be used in combination with any messaging system, but in this case, we will present them in combination with Azure Service Bus.

Passive Replication
This strategy …

Decouple external communication inside AKS (Azure Kubernetes Services)

In a world that it is more and more oriented to microservices, reliable asynchrony communication becomes vital for our system. In this post, we will try to identify different locations where asynchrony communication based on the messaging system could be a good fit. Let’s imagine that we have a system that is hosted inside a Kubernetes cluster (AKS). The system is a high-availability and high-performance system that shall be protected for any kind of peaks or temporary outages. Of the most important characteristics of such a system is to able to not affect other systems. This means that it shall be able to accept requests even if the internal load would not allow him to process the additional request. Beside this, internally specific groups of services shall be able to send the request to other services during temporary outages. The services shall be able to recover from this outages with minimum effort by using a simple solution.
The first location where a dedicated messaging system wo…

Kubernetes and cloud providers

In the microservices era, dominated by cloud providers the standard requirement that I receive on every strategic project is
The solution needs to independent from the hosting provider and needs to support on-premises solutions.
The standard context for this requirement is to support cloud providers - Microsoft Azure and AWS. Additional to this, with minimum effort (less than 5% of development cost), the solution shall be run on-premises.

The requirements are tricky even if at first glance you would say that Kubernetes is the solution. Two concerns need to be tackled. The first one is related to what kind of platform shall be used to host the Kubernetes solution. The second one related to how the solution shall use many native cloud services.

Kubernetes it is a powerful container-orchestration solution that allows us to scale our microservice solution. The downside of Kubernetes is that you need to install and configure many services besides Kubernetes itself if you want to have a wor…