{module_data resource="blogposts" version="v3" fields="tag" subresource="tags" resourceId="977435" skip="0" limit="10" order="objectType" collection="postTags"}

What I Learned from Microsoft Build 2017 - Part 2


Containers galore

As you have seen, a lot of talk is going on around containers, containerization and everything that relates to it. Fortunately, it wasn’t the only topic covered at the conference, and I’m going to talk about the other areas worth attention.



Yes, I know what you think – heard about/use it already, so what’s new? Fortunately, the key in Cesar’s presentation was not reinventing the wheel 😊 The key is containers (what! … again?). As I have already mentioned, Microsoft focuses a lot of effort around Cloud and Service Fabric, along with Azure Functions in particular. “It works on my local machine! Why not in production?” If this sounds familiar to you, I highly recommend watching this presentation. Docker helps automate the deployment of applications as portable, self-sufficient containers that can run on any cloud (or on-premises). From a practical standpoint, the most interesting for the developers was a demonstration of sample .NET Core reference application, powered by Microsoft and based on a simplified microservices architecture and Docker containers. This reference application, demonstrated by Cesar, proposes a simplified microservice-oriented architecture implementation to introduce technologies like .NET Core with Docker containers through a comprehensive application (which is eShop - that should sound familiar to most developers).

What’s interesting about this demo app – it offers different types of microservices, meaning different Architecture pattern approaches, depending on the purpose, as shown on the schema above. According to this Architecture, EventBus works on top of RabbitMQ and can potentially be replaced with another Bus technology comes to mind, like Service Fabric, nServiceBus, MassTransit, etc. I would suggest keeping an eye on this project, as the guys might fork it in the future to target some specific microservice cluster/orchestrators, using additional cloud infrastructure (Azure Container Service and, mentioned many times already, DC/OS, Kubernetes, Docker Swarm), which is very interesting from a practical standpoint.


The project itself can be found on GitHub. Cesar also shared an eBook (Architecting & Developing series) that uncovers the details of Microservices Architecture for Containerized .NET Applications. It can be downloaded from here for free (no registration required).

You can find the link to this presentation below (“Microservices Architecture with ASP.NET Core”).


Developing on Windows Server

This is the last word about containers, I promise 😊

It was a good presentation by Taylor Brown (PM, Windows Server) and Steve Lasker (PM, Visual Studio/Containers). The goal was obviously to make developers love using Windows Server. Long story short – every (true) developer likes the creation process. Coping with outdated technology does not deliver that much pleasure, especially adding new features or maintaining it. But the reality is that many applications can’t be just simply thrown away (for many reasons). Fortunately, there is a way out, or, at least, the situation can be made easier by adding new tools and code to existing apps. How so? Containerize the existing app!


  • 1. Containerize it for portability/efficiency and reliability

2. Transform monoliths to microservices (adding new code and transforming existing one)

3. Accelerate the process (by using agile cloud native app development)

The use case is simple – with Azure Service Fabric and Windows Containers, you can push new features immediately, roll them back if necessary, and implement the new ones with greater confidence.


What is good: Visual Studio 2017 released its supported Docker (debugging and testing of the app in Docker containers, breakpoints debugging, Docker assets scaffolding etc.).


I encourage you to use mentioned patterns to cope with existing applications or greenfield developments, and watch the recorded presentation where Steve demonstrates how all that stuff works (the link, as usual, can be found at the end of this topic).


Another interesting feature worth mentioning (especially in terms of managing existing applications) is that we can now create Docker images for existing artifacts. So, roughly speaking, I can say in PowerShell – “hey, go to that machine, scavenge IIS app for me (and create an image from it)”, and it will be done with one line in PS console:

ConvertTo-Dockerfile -RemotePath \\\c$ -OtputPath c:\myDockerFile -Artifact IIS

How cool is that! 😊 This PowerShell module can be found in the PS Gallery.


In terms of containers support, Azure Service Fabric now supports Windows Server Containers and Hyper-V isolation, Image deployment and activation, volume driver, networking and DNS discovery and resources governance. Kubernetes is now providing Alpha support for Windows containers (good demonstration from RedHat to see where OpenShift runs Windows containers). It supports one container per Pod (linked containers collection that shares an IP address). The easiest way to start with Kubernetes is to use ACS. Please follow the link to documentation.


Nano Server Image. For those who don’t know what this is, it’s a container-optimized Windows Server 2016 image with an uncompressed size around 1Gb. What’s interesting about it, it lacks Windows components that are irrelevant in containers or for modern development. Optional components are layers now, so can be installed on top of the image.


Comprehensive documentation on Windows Containers.

Lastly, don’t hesitate to use MS Feedback Hub and user voice portals to get back to Microsoft teams with comments or feature requests.


Microsoft Graph

I cannot avoid mentioning Microsoft Graph (formerly known as Graph API), as right now it penetrates every MS product, and provides native ways of managing your application through REST APIs. You can use the Microsoft Graph API to interact with the data of millions of users in the Microsoft cloud. Use Microsoft Graph to build apps for organizations and consumers that connect to a wealth of resources, relationships and intelligence, all through a single endpoint:


What can you do with it? Potentially, many things, starting from MS Office management (calendars, alerting, meeting requests) and OneDrive, and ending with Skype and Azure AD management (users/groups/passwords, subscriptions), which are the most precious features, in my opinion.

One of my questions to Microsoft engineers was about extremely fast changes to some APIs and how I could keep track of them. Now you can use a changelog on MS website to be sure you won’t miss anything important. Keep an eye on it to be always up-to-date. Try a sample request in the Graph Explorer.




Microsoft Bot Framework is another technology that has a lot of buzz around it. Bots, AI and Machine Learning are the new tendencies in software development, and are steps towards self-contained AI, so everybody in the conference room was interested in it). You can build and connect intelligent bots to interact with your users naturally, wherever they are — from your website or app to Cortana, Skype, Teams, Office 365 mail, Slack, Facebook Messenger Skype for Business and more!


From my perspective, the most interesting features are Adaptive Cards and Payment Request APIs, along with voice/language recognition capabilities.

I attended a very interesting presentation by Mat Velloso and Ryan Volum (both from DX group – Developer Experience) that reveals development patterns and best practices in this regard. I highly recommend you watch it yourself, as there is a lot of cool stuff going on. 😊 Obviously, MS is adopting this technology itself, growing the expertise in this field and collecting best practices. The guys share some really cool hands-on experience in implementing bots for several customers and Bots Framework Architecture. Please find the link in the end of this topic.


Bots framework documentation.


Azure Cosmos DB

Talking about this conference, I could not avoid mentioning Cosmos DB, which is new Microsoft’s globally distributed database service designed to enable you to build planet-scale applications. At this session, Rimma Nehme (Cosmos DB Team Architect) explained how to start leveraging Cosmos DB for applications, and described some of its differentiating features (multi-model [Key-Value, Document & Graph Database], APIs [Document DB, MongoDB, Tables, Gremlin Graph]). Also, it was demonstrated how easy it is to port over existing code and data from popular open source NoSQL Databases. Azure Cosmos DB was built from the ground up with global distribution and horizontal scale at its core. It offers turn-key global distribution across any number of Azure regions by transparently scaling and replicating your data wherever your users are.

Important highlights about this DB:

1. Cosmos DB natively partitions your data for high availability and scalability. Cosmos DB offers 99.99% guarantees for availability, throughput, low latency and consistency

2. Cosmos DB has SSD-backed storage with low-latency order-of-millisecond response times

3. Cosmos DB's support for consistency levels like eventual, consistent prefix, session and bounded-staleness allows for full flexibility and a low cost-to- performance ratio. No database service offers as much flexibility as Cosmos DB in levels of consistency

4. Cosmos DB has a flexible, data-friendly pricing model that meters storage and throughput independently

5. Cosmos DB's reserved throughput model allows you to think in terms of number of reads/writes instead of CPU/memory/IOPs of the underlying hardware

6. Cosmos DB's design lets you scale to massive request volumes in the order of trillions of requests per day

7. Throughput: 100s of 100s of million requests/sec

8. Multi-homing APIs (apps don’t need to be redeployed during regional failover)

9. Automatic multi-region replication (dynamically adjusted)

10. Storage: gigabytes to petabytes

11. Guarantee millisecond latency worldwide


See the most popular HL Architectures and use cases on the official website, along with the recorded video on Channel 9 (the link is below).


There is more!

There were even more conferences I was unable to attend myself, as the rooms were overcrowded or they were running in parallel and I was able to see only part of it, but the topics really deserve to be talked about:

1. The future of C# All about recently shipped C# 7.0 and Visual Studio 2017.

2. Signal R in .NET Core –In my opinion, the guys have produced one of the most interesting and entertaining sessions on this Build. It was all about new SignalR capabilities on .NET Core platform.

3. Machine Learning for Developers – how to build even more intelligent apps and services (all of Microsoft’s offerings such as Azure Machine Learning, SQL Server R Services, Data Science Virtual Machine, Cognitive Services and Cognitive Toolkit, and Azure Data Lake Analytics).

Post has no comments.
Post a Comment

Captcha Image

Recent Posts



    follow us

    416 538-6849 ext.1

    Copyright © 2017 Dimensional Strategies Inc. All rights reserved.