Interview around DevOps, Data, AI and Microsoft Fabric

A few weeks ago I did an interiview with Nagaraj Venkatesan – a good friend of mine who works for Microsoft Singapore.

You can watch video below – I talk about all things DevOps – where it relates to data, Microsoft Fabric and my thoughts on the impact of AI:
https://www.youtube.com/watch?v=jBseLdRH1FU

I hope you enjoy it as much as I did doing it.

Yip.

Goals for 2024

Way back in 2019 I set some goals…. well I wrote some goals and posted them here

2019 seems a lifetime ago…..that was the year I travelled 200,000 air kilometres (about 125,000 air miles) helping communities learn, I helped a community that was grieving here in Christchurch, ran for the PASS Board, established my first foundational client, wasn’t scared of a cough and paid my mortgage off. Oh and I was married, but that’s a whole different story.

Fast forward 5.25 years and here I am, about to write about goals again. Now that doesn’t mean that I have not had goals in that time – one of my goals of 2021 was to survive a messy divorce and live for my kids every day. My goal for 2022 was to rebuild my life and establish my new home base. My goals for 2023 were to accelerate what I was doing and go forward at a frenetic pace that is how I live life. This involved setting up my company as a Professional Services company with consultants working through it, rather than just me doing keyboard things.

In 2024 my initial vision for this year was to innovate – whilst still maintaining my life based around my children, helping mates out with work stuff, doing great community things and enjoying great food/wine.

So here are my goals for 2024 – a year that I hope will encompass diversification of what I do in industry while maintaining good stable financial outcomes (that sounds wordy doesn’t it… I used my words carefully).

My strategic goals for 2024 are around FinOps, Real-Time Analytics, DevOps, and Artificial Intelligence (AI) which I hope will significantly enhance my company’s (Morph iT Limited) efficiency, innovation, and competitive edge….. or maybe I establish an awesome start-up dedicated to all these things (more on that in another post). Why real-time analytics you might be asking…

…..well, I am a Data Platform MVP with Microsoft and data is core to everything I have done in the past 25 years.

FinOps Goals

I want to help companies realise these benefits:

  1. Cost Optimization and Transparency: Implement comprehensive monitoring and reporting mechanisms to provide real-time visibility into cloud spending across different departments and projects. Help clients get a 20% reduction in unnecessary cloud expenditures through more informed decision-making (using data) and waste elimination.
  2. Cross-Functional FinOps Team: Using my existing DevOps coaching skills to write material that will help clients establish a cross-functional FinOps team that includes finance, operations, and development leaders to ensure alignment of cloud investment with business outcomes.
  3. FinOps Training and Certification: Ensure I am certified in FinOps principles by the end of June 2024 to be able to help clients embed FinOps culture deeply within their organisation.

Real-Time Analytics Goals

  1. Speak more about a Unified Data Platform: Yip, this is about Azure Data Explorer a real-time analytics platform that consolidates data across various sources, reducing the time to insight from hours to minutes. This will be around how it integrates into the Microsoft Fabric ecosystem.

DevOps Goals

These goals are more around what areas I want to focus on in 2024, you could call them trends I foresee…
I spoke about trends in these YouTube videos:

https://youtu.be/0yR0GhDv1q8
https://youtu.be/FyLVOht7T1w
https://youtu.be/L2Cy1zu-egk
  1. Growth of AI and Machine Learning in DevOps (AIOps)
    AI and machine learning will increasingly be integrated into DevOps tools and processes, enabling more sophisticated analysis of data, predictive analytics, and automation. AIOps can help teams anticipate issues, optimize performance, and automate routine tasks, leading to more proactive and intelligent operations.
  2. Emphasis on DevSecOps
    Security will continue to be a critical focus, with an emphasis on integrating security practices throughout the development lifecycle rather than treating them as an afterthought. DevSecOps practices, which incorporate security early in the development process, will become more prevalent, driven by the need to address security challenges in a more agile and efficient manner.
  3. Serverless Architectures and Functions as a Service (FaaS)
    The move towards serverless computing and FaaS is expected to accelerate, offering teams the ability to focus on coding and deploying code without worrying about the underlying infrastructure. This shift supports more scalable, cost-effective, and efficient software development and deployment processes.
  4. Infrastructure as Code (IaC) Maturity
    As organizations seek more scalable and manageable infrastructure provisioning, the use of IaC will mature and expand. Tools like Terraform and Ansible will continue to evolve, enabling more dynamic and flexible management of infrastructure, which is particularly crucial in multi-cloud and hybrid environments.
  5. Enhanced Focus on Observability
    Observability will become even more critical as systems grow more complex. The ability to monitor, log, and trace system activities in real-time allows teams to understand the health of their applications deeply and respond quickly to issues. Enhanced observability tools and practices will become a staple in DevOps toolchains.
  6. Sustainability in DevOps
    Sustainability and green computing will start to influence DevOps practices, with an increasing focus on optimizing resource usage, reducing waste, and considering the environmental impact of software development and deployment activities.

These will be core tenants of what I want to do both in the community and for clients of my company.

Artificial Intelligence Goals

  1. AI-Driven Products and Services: Launch a new product or service offering powered by AI to address customer needs and create new revenue streams.
  2. AI for Operational Excellence: Implement AI algorithms in my own activities to improve operational efficiency, such as predictive maintenance, inventory management, and demand forecasting, targeting a 30% reduction in operational costs.
  3. Ethics and Responsibility in AI: Develop and implement a comprehensive AI ethics policy to guide responsible AI development and usage within any organisation, including transparency, privacy, and fairness considerations.
  4. Upskill in AI and Machine Learning: I want to understand all things AI and machine learning fundamentals to build my own capabilities.

By focusing on these goals, I want to leverage the transformative potential of FinOps, real-time analytics, DevOps, and AI to help the corporate and educational communities realise the benefits of driving cost efficiency, operational excellence, innovation, and sustainable growth.

Sounds like some good goals to have to help #makeStuffGo….

Yip.

DevOps: It’s About the Team, Not Just the Tech

In November 2023 I did a session at PASS Summit and one of my sessions was voted https://passdatacommunitysummit.com/about/news/have-you-watched-some-of-the-most-popular-sessions-from-summit-2023/

That session was called DevOps is about Growing People rather than using Cool Tools basically DevOps is not just about using the latest and greatest tools to automate software development & deployment processes. It is a culture that emphasizes collaboration, communication, and continuous improvement.

DevOps, a term that merges ‘development’ and ‘operations,’ often conjures images of technology, tools, and software. However, at its core, DevOps is far more about people and how they work together than the technologies they use. It represents a cultural shift, emphasizing collaboration, communication, and integration between software developers and IT operations teams.

This approach aims to create a more agile, responsive, and efficient workflow for building, testing, and releasing software.Here are some more of my thoughts around this area:

Understanding DevOps: Beyond Tools and Automation

The essence of DevOps extends beyond merely implementing the right tools or automating processes. While these elements are important, the true power of DevOps lies in its ability to transform how teams collaborate and innovate together. It challenges traditional siloed structures by fostering a culture where sharing, mutual respect, and continuous improvement are paramount. This cultural shift can lead to more effective and efficient practices, ultimately driving better outcomes for both the team and the organization.

The Human Element: Key to DevOps Success

At the heart of DevOps is the recognition that software is created by people, for people. Thus, focusing on the human aspect—how team members interact, share knowledge, and support one another—is crucial. This human-centric approach encourages a more engaged and motivated team, leading to higher quality work and innovation. It’s about creating an environment where continuous feedback, learning, and adaptation are part of the daily routine, enabling teams to respond swiftly and effectively to changes and challenges.

Building a Collaborative Culture

Adopting a DevOps culture means breaking down barriers between departments and promoting open communication. It’s about moving away from a mindset where development and operations teams have separate goals and responsibilities. Instead, DevOps advocates for shared objectives, mutual accountability, and collaboration throughout the software lifecycle. This integrated approach not only accelerates delivery times but also enhances the reliability and quality of software products.

Continuous Learning and Improvement

A pivotal component of DevOps is fostering a culture of continuous learning and improvement. This involves regular reflection on processes, outcomes, and team dynamics, followed by proactive efforts to address issues and capitalize on opportunities for growth. Encouraging experimentation and accepting failures as learning opportunities are key aspects of this mindset. By continuously seeking ways to improve, teams can adapt to evolving needs and technologies, ensuring they remain competitive and effective.

The Role of Leadership

Leaders play a critical role in driving the cultural change necessary for successful DevOps implementation. They must champion the values of collaboration, transparency, and continuous improvement, setting the tone for the entire organization. Leaders should also provide the support and resources needed for teams to experiment, learn, and grow together. By embodying the principles of DevOps in their actions and decisions, leaders can inspire their teams to embrace this transformative approach.

So remember:

DevOps is not just a set of practices or tools; it’s a philosophy that prioritizes the human elements of software development and operations. By fostering a culture of collaboration, continuous improvement, and shared responsibility, organizations can unlock the full potential of their teams. This people-centric approach to DevOps can lead to more innovative solutions, faster delivery times, and higher quality software, ultimately benefiting both the team and the wider organization.

I really enjoyed doing the session, people are core to DevOps and presenting about it and how it can positively affect your life is core to me.

Yip.

KQL Series – KQL the next query language you need to learn – a video from Data Exposed

I love KQL so much I even made a video and if you compare it to my last blog post – yeah my hair has changed a bit…
And my beard.
And my clothing…

Check out Data Exposed here – it is an AWESOME site:

https://learn.microsoft.com/en-us/shows/data-exposed/

If you want to see a longer version of a session on KQL then do visit my last blog post here

KQL Series – some DevOps things: Provisioning using ARM templates (dedicated to Scott)

I was talking to an ex-client earlier this week and he saw the drafts of my blog posts around DevOps infra-as-code spinning up Azure Data Explorer and he said – but what about ARM templates…..

Now this is a trigger. I do not like ARM templates.
But…

Some things pay the mortgage and back when we worked together I spun up their whole platform using ARM (this was before bicep was a thing).
So here it is for you Scott… you lover of ARM (and a good red wine).

Here are the steps to provision an Azure Data Explorer cluster using an ARM template.

Prerequisites:

  • An Azure subscription
  • Basic knowledge of Azure Resource Manager templates
  • Being a lover of JSON (just kidding – I have to write this…)

Step 1: Create the ARM Template The first step is to create the ARM template. The template defines the resources that will be provisioned in Azure. We’ll create a simple template that provisions an Azure Data Explorer cluster.

Here’s an example ARM template that provisions an Azure Data Explorer cluster:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Kusto/clusters",
      "apiVersion": "2021-04-01-preview",
      "name": "[variables('adxClusterName')]",
      "location": "[variables('location')]",
      "sku": {
        "name": "Standard_L16s",
        "tier": "Standard"
      },
      "properties": {
        "enableDiskEncryption": false,
        "dataRetentionTime": "365.00:00:00",
        "trustedExternalTenants": []
      }
    }
  ],
  "variables": {
    "adxClusterName": "adx-cluster",
    "location": "[resourceGroup().location]"
  }
}

This template provisions an Azure Data Explorer cluster with the name “adx-cluster” and the SKU “Standard_L16s” in the same location as the resource group.

Step 2: Deploy the ARM Template
To deploy the ARM template, we’ll use the Azure Portal. Navigate to the resource group where you want to provision the Azure Data Explorer cluster and click on “Deploy a custom template”.

Select the “Build your own template in the editor” option and paste the ARM template code into the editor. Click “Save” and then “Review + Create”.

Review the template parameters and click “Create” to deploy the Azure Data Explorer cluster.

Step 3: Verify the Deployment
After the deployment is complete, you can verify that the Azure Data Explorer cluster was provisioned successfully. You can check the status of the cluster in the Azure Portal or use the Azure CLI to run the following command:

az kusto cluster show --name adx-cluster --resource-group MyResourceGroup

This command will return information about the Azure Data Explorer cluster, including the status and SKU.

So there you have it – yes ARM templates are “relatively” easy, but they can be horrid..
Use bicep as a first go to or my favourite – terraform.

Either way – just use infrastructure as code to do any provisioning – OK??!!

(Also Scott – when I am in Seattle next – you own me a lot of red wine)

Yip.

KQL Series – Kusto Engine V3 – let’s make stuff go faster

In late March 2021 Azure Data Explorer Engine v3 was release and it is the latest version of the engine that powers Azure Data Explorer. It is designed to provide a number of key features and benefits for data analytics, including:

  1. Scalability: The Azure Data Explorer Engine v3 is designed to be highly scalable, allowing you to process and analyze large amounts of data quickly and efficiently. The engine can be scaled up or down as needed to handle varying data volumes and workloads.
  2. Performance: The Azure Data Explorer Engine v3 is highly optimized for performance, allowing you to analyze data in near real-time. The engine can perform complex queries and aggregations on large data sets quickly and efficiently.
  3. Flexibility: The Azure Data Explorer Engine v3 is designed to be highly flexible, allowing you to work with a wide range of data types and formats. The engine can handle structured, semi-structured, and unstructured data, as well as data in a variety of formats, including CSV, JSON, and more.
  4. Reliability: The Azure Data Explorer Engine v3 is designed to be highly reliable, ensuring that your data is always available and secure. The engine is built on top of Azure, providing built-in redundancy and failover capabilities to ensure high availability.

Key features of the Azure Data Explorer Engine v3 The Azure Data Explorer Engine v3 provides a number of key features that make it a powerful and flexible platform for data analytics, including:

  1. Columnstore Indexes: The Azure Data Explorer Engine v3 uses columnstore indexes to store and query data. Columnstore indexes provide high compression rates and fast query performance, allowing you to quickly analyze large amounts of data.
  2. Time Series: The Azure Data Explorer Engine v3 includes built-in support for time series data, allowing you to analyze time-based data quickly and efficiently. The engine can handle large volumes of time-series data and provide real-time insights into trends and patterns.
  3. Query Language: The Azure Data Explorer Engine v3 supports a powerful query language called Kusto Query Language (KQL). KQL provides a simple and intuitive syntax for querying data, allowing you to quickly and easily analyze large data sets. But you know this from these blog posts right?
  4. Security: The Azure Data Explorer Engine v3 provides built-in security features, including role-based access control (RBAC) and encryption, to ensure that your data is always secure.

You can read more about V3 of the engine here:
https://learn.microsoft.com/en-us/azure/data-explorer/engine-v3

KQL Series – some DevOps things: Provisioning using Powershell

If you have read any of my last few posts on provisioning Azure Data Explorer then you will probably be wondering…..

Will he write about Powershell?

Ok, I will.

Step 1: Install and configure Azure PowerShell To use PowerShell to provision Azure Data Explorer, you first need to install the Azure PowerShell module. You can install it using the following command:

Install-Module -Name Az -AllowClobber -Scope CurrentUser

Once the module is installed, you need to log in to Azure using the Connect-AzAccount command. This command will prompt you to enter your Azure credentials to authenticate with the Azure portal.

Step 2: Create an Azure Data Explorer cluster To create an ADX cluster, you can use the New-AzKustoCluster cmdlet.

Here’s an example command that creates an ADX cluster named “myadxcluster” in the “East US” region with a “D13_v2” SKU and two nodes:

New-AzKustoCluster -ResourceGroupName myResourceGroup -Name myadxcluster -Location EastUS -SkuName D13_v2 -Capacity 2

This command will create an ADX cluster with the specified name, location, SKU, and node capacity. You can customize these settings to fit your needs.

Step 3: Create an Azure Data Explorer database After creating an ADX cluster, you can create a database within the cluster using the New-AzKustoDatabase cmdlet. Here’s an example command that creates a database named “myadxdatabase” within the “myadxcluster” cluster:

New-AzKustoDatabase -ClusterName myadxcluster -Name myadxdatabase

This command will create a new database with the specified name within the ADX cluster.

Step 4: Configure data ingestion Once you have created a database, you can configure data ingestion using the Azure Data Explorer management portal or PowerShell. To use PowerShell, you can create a data ingestion rule using the New-AzKustoDataIngestionMapping cmdlet.

Here’s an example command that creates a data ingestion rule for a CSV file – we will use a file that Microsoft has provided for learning KQL and also Azure Data Explorer ( https://kustosamples.blob.core.windows.net/samplefiles/StormEvents.csv ):

$mapping = @"
col1:string
col2:int
col3:datetime
"@

New-AzKustoDataIngestionMapping -ClusterName myadxcluster -DatabaseName myadxdatabase -Name mydataingestionrule -Format csv -IgnoreFirstRecord $true -FlushImmediately $true -Mapping $mapping -DataSource @"
https://kustosamples.blob.core.windows.net/samplefiles/StormEvents.csv
"@

This command will create a data ingestion rule named “mydataingestionrule” for a CSV file named “StormEvents.csv” within the specified ADX cluster and database. The data ingestion rule specifies the file format, data mapping, and ingestion behavior.

Step 5: Verify your deployment.
Once you have completed the above steps, you can verify your Azure Data Explorer deployment by running queries and analyzing data in the ADX cluster. You can use tools like Azure Data Studio, which provides a graphical user interface for querying and analyzing data in ADX.

Using Powershell is fairly easy – personally I prefer terraform – but that’s only because I am a fully cloud person on all the clouds…

But that could be another blog post

Yip.

KQL Series – some DevOps things: Provisioning using Azure CLI

I can’t really write about provisioning anything in Azure without mentioning Azure CLI.
My last two posts were about using

terraform and bicep

Here we will be using the Azure CLI.

Step 1: Install and configure the Azure CLI To use the Azure CLI, you first need to install it on your local machine. The Azure CLI can be installed on Windows, macOS, or Linux, and detailed instructions can be found in the Azure documentation.

Once the Azure CLI is installed, you need to log in using the az login command. This command will prompt you to enter your Azure credentials to authenticate with the Azure portal.

Step 2: Create an Azure Data Explorer cluster To create an ADX cluster, you can use the az kusto cluster create command. Here’s an example command that creates an ADX cluster named “myadxcluster” in the “East US” region with a “D13_v2” SKU and two nodes:

az kusto cluster create --name myadxcluster --location eastus --sku D13_v2 --capacity 2

This command will create an ADX cluster with the specified name, location, SKU, and node capacity. You can customize these settings to fit your needs.

Step 3: Create an Azure Data Explorer database After creating an ADX cluster, you can create a database within the cluster using the az kusto database create command.

Here’s an example command that creates a database named “myadxdatabase” within the “myadxcluster” cluster:

az kusto database create –cluster-name myadxcluster –name myadxdatabase

This command will create a new database with the specified name within the ADX cluster.

Step 4: Configure data ingestion Once you have created a database, you can configure data ingestion using the Azure Data Explorer management portal or the Azure CLI. To use the Azure CLI, you can create a data ingestion rule using the az kusto data-ingestion-rule create command.

Here’s an example command that creates a data ingestion rule for a CSV file:

az kusto data-ingestion-rule create --cluster-name myadxcluster --database-name myadxdatabase --name mydataingestionrule --data-source @'./mydata.csv' --format csv --ignore-first-record --flush-immediately --mapping 'col1:string,col2:int,col3:datetime'

This command will create a data ingestion rule named “mydataingestionrule” for a CSV file named “mydata.csv” within the specified ADX cluster and database. The data ingestion rule specifies the file format, data mapping, and ingestion behavior.

Step 5: Verify your deployment Once you have completed the above steps, you can verify your Azure Data Explorer deployment by running queries and analyzing data in the ADX cluster. You can use tools like Azure Data Studio, which provides a graphical user interface for querying and analyzing data in ADX.

Provisioning Azure Data Explorer using the Azure CLI is a pretty simple and straightforward process.

Yip.

KQL Series – some DevOps things: Provisioning using bicep

So in my last post I wrote about how to provision Azure Data Explorer using terraform .

In this post I will use bicep to provision Azure Data Explorer.

Steps:

Step 1: Set up your environment Before you can begin using Bicep to provision Azure Data Explorer, you need to set up your environment. This involves installing the Azure CLI and Bicep. You’ll also need to create an Azure account and set up authentication.

Step 2: Define your infrastructure as code Once you have your environment set up, you can begin defining your infrastructure as code using Bicep. This involves writing code that defines the resources you want to provision, such as Azure Data Explorer clusters, databases, and data ingestion rules.

Here’s an example of a Bicep file that provisions an Azure Data Explorer cluster and database:

param resourceGroupName string
param location string
param clusterName string
param capacity int

resource cluster 'Microsoft.Kusto/clusters@2022-01-01-preview' = {
  name: clusterName
  location: location
  sku: {
    name: 'D13_v2'
    capacity: capacity
  }
}

resource db 'Microsoft.Kusto/clusters/databases@2022-01-01-preview' = {
  name: 'my-kusto-database'
  parent: cluster
  dependsOn: [cluster]
}

In this code, we declare four parameters: the resource group name, the location, the cluster name, and the cluster capacity. We then define an Azure Data Explorer cluster using the Microsoft.Kusto/clusters resource, specifying the name, location, SKU, and capacity. Finally, we define a database using the Microsoft.Kusto/clusters/databases resource, specifying the name and the parent cluster.

Step 3: Deploy your infrastructure. Now that you have defined your infrastructure as code, you can deploy it using the Azure CLI. First, run the az login command to authenticate with Azure. Then, run the following commands to create a new resource group, build the Bicep file, and deploy the infrastructure:

az group create --name my-resource-group --location westus2
az deployment group create --resource-group my-resource-group --template-file main.bicep --parameters resourceGroupName=my-resource-group location=westus2 clusterName=my-kusto-cluster capacity=2

This will create a new resource group, build the Bicep file, and deploy the Azure Data Explorer cluster and database.

Step 4: Test and monitor your deployment Once your infrastructure is deployed, you should test and monitor it to ensure it is working as expected. This may involve running queries on your Azure Data Explorer cluster, monitoring data ingestion rates, and analyzing performance metrics.

Using Bicep to provision Azure Data Explorer offers many benefits, including faster deployment times, greater reliability, and improved scalability. By automating the provisioning process, you can focus on more important tasks, such as analyzing your data and gaining insights into your business.

Bicep is a powerful tool that can simplify the process of provisioning Azure Data Explorer. By following the steps outlined in this blog post, you can quickly and easily set up a Azure Data Explorer.

Yip.