In this blog post, we discuss an application modernization approach that we refer to as “modernize-by-shifting”. This is different than a typical “lift-and-shift” app modernization approach. In essence, we take an existing application and move it to “managed” container hosting environments like Azure Kubernetes Service or Azure Service Fabric Mesh. The overarching goal of this app modernization strategy is to undertake minimal possible change to the existing application codebase.

Step One of App Modernization by Shifting

As the first step of this approach, an existing application is broken into a set of container images that include everything needed to run a portion of the application: code, runtime, system tools, system libraries, and settings. Approaches to breaking up the application in smaller parts can vary based on original architecture. For example, if we begin with multi-tier application, each tier (e.g. presentation, application, business, data access) could map to a container image. While this approach will admittedly lead to coarser grained images, compared to a puritanical microservices-based approach of light-weight images, it should be seen as the first step in modernizing the application.

Read More…

I just finished teaching my Azure Master Class for Cloud Solution Architects and wanted to provide a quick recap:

Motivation

The motivation for organizing this class was three-fold:

  1. Like many companies, AIS has many open CSA (Cloud Solution Architect) positions that we are unable to fill. So the only solution is to take folks with a strong background in non-cloud environments (on any development stack for that matter) and “rewire” their brains for cloud computing 😊
    Note – Please refer to Gartner’s cautionary note [1] about Azure (the only note of caution in what is otherwise a very positive report on Azure). Gartner claims that that lack of deep technical expertise is impacting adoption.
  2. An effective CSA needs an understanding of a broad array of key concepts. Even though new features are being added to the Azure platform every day, the key concepts of availability sets, fault and upgrade domains and managed identity don’t change that often. My goal was to discuss each of these concepts in depth along with practical tips, guidance, and pitfalls.
    Note – Please refer to the list of key concepts [2] that I covered during this class.
  3. Engender a “Cloud Thinking” mindset. Cloud thinking is a mindset that goes beyond moving an existing application to the cloud (lift-n-shift) or starting out using a cloud-native service like Functions. Cloud thinking is a solution-focused approach to building cloud applications that maximizes the benefits that the cloud has to offer, including considerations like monitoring, cost, governance, HA and of course, compliance and security.

Format

  • The class spanned three intense days.
  • No hands-on lab – I expected the attendees to fork the repo and work through the samples on their own time. I also encouraged attendees to review Azure Essentials before attending the class.
  • I focused on building a conceptual understanding of key Azure topics. I relied on concept slides combined with focused demos.

Read More…

Artificial Intelligence and cognitive technologies are already transforming the way government agencies work. From predicting fraudulent transactions and detecting criminal suspects via vision APIs, to speech recognition and language translation, cognitive capabilities are a way to “augment/assist” government workers and complement their skills.

I had the opportunity to record a video on Azure Custom Speech Service with Steve Michelotti from the AzureGov team. Steve and I talked about how Azure Custom Speech Service can overcome most common challenges in speech recognition, including speaking style, technical vocabulary, and background noise.

Please take a listen and let us know your thoughts. We strongly believe that the innovative capabilities like Azure Custom Speech Service are a real differentiator when it comes to selecting a cloud provider.

FREE APP MODERNIZATION DISCOVERY & ASSESSMENT
Transform your business into a modern enterprise that engages customers, supports innovation, and has a competitive advantage, all while cutting costs with cloud-based app modernization.

I am pleased to announce my latest Pluralsight course on PowerApps (Well…such is the nature of change in the cloud that there has already been a name change since I submitted this course for publication, only a few weeks back. The aspect of PowerApps covered in my course is now referred to as Canvas Apps.)

This course is designed for developers (both citizen and professional developers) interested in a low-code approach for building mobile applications.

Here’s some background on PowerApps, if you haven’t had a chance to play with it yet:

PowerApps is a productive low-code development platform. It allows you to very quickly build business applications that can run inside a web browser, on a phone or a tablet. PowerApps includes a web-based IDE (PowerApps Studio, a set of built-in cross-platform controls), an Excel-like expression language that also includes imperative constructs like variables and loops, and over 130 connectors to talk to any number of data sources — including SQL Server, Office 365, Salesforce, Twitter, etc. You can also use custom connectors to talk to your domain-specific data source.

Beyond the controls, language expression and connectors, PowerApps provides ALM support in the form of app versioning, app publication to various app stores, swim-lanes for development environments, authentication and authorization (via Azure AD), RBAC controls, and security polices like data loss prevention (DLP).  All in all, the PowerApps service seeks to significantly lower the bar for building and distributing cross-platform mobile applications within your enterprise.

For a concrete example of our use of PowerApps, please read how we built a cross-platform event app in less than a week. Also please check out a recent episode of DotNetRocks where we talk about PowerApps.

Finally, as part of the latest spring update, PowerApps is combining with Dynamics 365 for Sales, Marketing, and Talent applications to offer an enterprise high-productivity application platform as a service (known as Microsoft Business Applications platform). What this means for PowerApps developers is that:

  1. They can now take advantage of server-side logic
  2. They have access to a data-centric way of building declarative apps, known as model-driven apps (in contrast to canvas apps, which are built by dragging and dropping controls to a canvas).

For more information on the spring update, please refer to this blog post by Frank Weigel.

I hope you will find this course useful. Please reach out to me via this blog or Twitter if you have any questions or comments.

Virtual Service Endpoints is a new feature for securing Azure Services (like Storage and Azure SQL Database) to your VNET. In other words, traffic to these services remains limited to the Azure backbone. Before the advent of this feature, clients could access these services via the Internet (as long as they were part of the IP address range specified using the firewall rules).

However, Virtual Service Endpoints is only available to resources connected to Resource Manager VNETs. This means that classic compute resources like VMs and Cloud Services cannot take advantage of these features out of the box.  This blog post describes an approach to overcome this limitation.

As shown in the diagram below, we have a classic VM (Vnet1-VM1) connected to a classic VNET (Vnet1-ASM). We want to take advantage of Virtual Service Endpoints for Storage. More specifically, we want a program executing on Vnet1-VM1 to access the storage in a manner that the traffic is completely limited to the Azure backbone.

A diagram of a classic VM connected to a classic VNET
Read More…

Last week, I had the pleasure to be a guest on the .NET Rock podcast. I talked to Carl and Richard about the Microsoft Business Application Platform, which organizes the huge suite of tools available in Azure, along with PowerApps and PowerBI, to create a great place to build applications that run on Windows, iOS and Android.

I also talked about moving up into a higher layer of coding using Logic Apps and Azure Flow to pull together the various sources of data that already exist in your organization, including Office, SharePoint, SalesForce and so on. You already have the data, so how do you surface it in an app that your users actually like to use?

And finally, we discussed the PowerApps spring update that brings both server-side logic and model-driven apps.

Listen to the full podcast here!