DEV Community

Alain Airom
Alain Airom

Posted on

A Developer’s Guide to Azure: A Deep Dive into the “Azure for Developers”

One of my readings during my summer break!

Image provided by Packt Publishing

Introduction

I read a lot of technical books and articles essentially for 2 reasons;

  • I love it (reading technical books and articles 🤓),
  • To stay tuned.

During myrecent summer break, among other readings, I read the “Azure for Developers” book, a copy of which was kindly provided by Packt Publishing. While my day-to-day work at IBM centers on using our own tools and IBM Cloud ☁️ services to support clients and partners, I believe it’s essential to stay current with the offerings of competing platforms. This continuous learning is a key part of my professional development.

Now that the picture is set, let’s dig into what I learned from the book!

Synthesis of my reading

The author’s aim is to a comprehensive guide to building secure, scalable, and modern applications on the Microsoft Azure platform. This book is meant to be a resource for developers, QA engineers, and solution architects looking to build new applications or modernize existing ones on Azure.

Setting the Stage: Environment and Foundational Tools

The journey begins with providing a practical guide to setting up a local environment, choosing the right Integrated Development Environment (IDE) like IntelliJ or Visual Studio, and understanding the core command-line tools. It covers the Azure CLI and Azure PowerShell, explaining their importance and how to use them for various Azure operations. For those who prefer a web-based environment, the book introduces the Cloud Shell, a dedicated environment for all Azure accounts.

Modern Application Development-Web, Serverless, and Workflows

Exploring how to host applications using;

  • Azure App Service, covering deployment, configuration, and scalability. For lightweight, front-end projects, the book delves into
  • Azure Static Web Apps ** and **Azure Storage static websites, offering a no-infrastructure approach to hosting.

The concept of serverless computing is a major focus, with an extensive guide to

  • Azure Functions, The book teaches developers how to build event-driven services, discussing various hosting plans (Consumption, Premium, and Flex Consumption) and deployment pipelines using Azure DevOps and GitHub Actions. Additionally, it explores advanced workflow scenarios with
  • Azure Logic Apps for low-code solutions and Durable Functions for complex, stateful workflows.

Containers and Containerization

Going into Azure Container Registry to manage and publish container images. A comprehensive overview of building and managing containerized workloads using different services:

  • Azure Container Instances for ad-hoc, one-time jobs and continuous processes.
  • Azure Container Apps for building microservices with features like scalability and revision management.
  • Azure App Service for hosting containers, including single and multi-container applications.

Operations and Storage

Secure and Efficient Operations — Storage, Messaging, and Monitoring: nice chapters with good explanation. I would not go into details, but useful information.

AI, ML and MLOps

Essentially the part of the book that really interested me is where the author dives into “AI and ML”. This is where we can read about integrating applications with Azure OpenAI Service, covering fundamental concepts like prompts and tokens, as well as use cases for chatbots, content creation, and product innovation. It also explores how to leverage Azure Machine Learning to automate machine learning tasks and adopt MLOps practices.

DevOps

Finally, the book provides a comprehensive guide on building continuous integration and continuous delivery (CI/CD) pipelines using GitHub Actions, demonstrating how to automate deployments of both infrastructure and applications.

GitHub Repository

The book has also a GitHub repository with examples provided for different chapters. I didn’t try any of the codes provided (in Java, Python or .Net, Go…) so I cannot confirm the code works, but is seems to be well written.

package main

import (
 "context"
 "encoding/json"
 "fmt"
 "log"
 "os"

 "github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
 "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
)

const (
 resourceGroupName = "<resource-group-name>"
 deploymentName    = "<deployment-name>"
 templateFile      = "aci.json"
)

var (
 ctx = context.Background()
)

func readJSON(path string) (map[string]interface{}, error) {
 data, err := os.ReadFile(path)
 if err != nil {
  log.Fatalf("failed to read file: %v", err)
 }
 contents := make(map[string]interface{})
 _ = json.Unmarshal(data, &contents)
 return contents, nil
}

func main() {
 subscriptionId := os.Getenv("AZURE_SUBSCRIPTION_ID")

 cred, err := azidentity.NewDefaultAzureCredential(nil)
 if err != nil {
  log.Fatalf("failed to obtain a credential: %v", err)
 }

 template, err := readJSON(templateFile)
 if err != nil {
  return
 }

 deploymentsClient, err := armresources.NewDeploymentsClient(subscriptionId, cred, nil)
 if err != nil {
  log.Fatalf("failed to create client: %v", err)
 }
 deploy, err := deploymentsClient.BeginCreateOrUpdate(
  ctx,
  resourceGroupName,
  deploymentName,
  armresources.Deployment{
   Properties: &armresources.DeploymentProperties{
    Template:   template,
    Parameters: "{\"parCustomerId\": {\"value\": \"18363875\"}}",
    Mode:       to.Ptr(armresources.DeploymentModeIncremental),
   },
  },
  nil,
 )
 if err != nil {
  log.Fatalf("failed to deploy template: %v", err)
 }

 fmt.Println(deploy)
}

Enter fullscreen mode Exit fullscreen mode

Conclusion
Given the content and practical advice within “Azure for Developers,” I can confidently say it’s a worthwhile read. This book provides the comprehensive knowledge needed to build and manage modern applications on the Azure platform (if you’re Azure user). Its blend of foundational concepts and advanced topics makes it a good resource for developers looking to stay competitive in the fast-paced world of cloud computing.

Top comments (1)

Collapse
 
suvrajeet profile image
Suvrajeet Banerjee

Azure mastered! ☁️