Microsoft Ignite the Tour 2019 - 2020
Tens of thousands of IT pros and hundreds of jet-lagged Microsoft experts can only mean one thing – the Ignite world tour made it to London. Kicking off at ExCel with a registration queue that was typically British and stretching almost the whole length of the ExCel main lobby (600 meters long) – everyone was looking prepped to fill their bags with as much free swag as possible. Even empty pushchairs were brought in for taking maximum goods away – you can’t say IT Pros don’t come prepared.
And you’ve got to be prepared. With hundreds of sessions spread over the two days, if you don’t plan, you’ll miss what you want to see by constantly browsing the app (https://myignite.techcommunity.microsoft.com/mobileapp) to find what or where to go next. On the app, you can build up your schedule and it nicely highlights any session clashes – you’re bound to have at least one.
Day One - Microsoft Graph
Day one kicked off with Microsoft Graph Primer (MDEV-20). If you don’t know about Microsoft Graph then this was a great session to be in. MS Graph is a unified API, bringing together data from the majority of all Microsoft services to one endpoint. The key point to note is MS Graph doesn’t exist for just third-party services. It’s used extensively in all Microsoft products and services, from web, mobile and desktop apps. The same API that Outlook calls to get your address book contacts, you can call in your app. And once you see the API format – you realise it is intuitive and has thought put into designing it.
Just some of the data available from MS Graph
To make it easy to see what data you can access Microsoft has built Microsoft Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) allowing you to experiment with the different data sets straight from your browser. Want your latest email? Just call https://graph.microsoft.com/v1.0/me/messages. Want to see what Teams you are in? https://graph.microsoft.com/v1.0/me/joinedTeams. Want to see recent One Drive files – https://graph.microsoft.com/v1.0/me/drive/recent.
There are client SDK wrappers for most languages and now you can easily use it straight from PowerShell. For web developers, the Microsoft Graph Toolkit is an easy to use wrapper around all the major API calls. Need a user list lookup? No need to reinvent the wheel, just use the Javascript-based toolkit. With just a couple of lines, the user lookup list is added (see ms docs for more details https://docs.microsoft.com/en-us/graph/toolkit/overview).
<script src=”https://unpkg.com/@microsoft/mgt/dist/bundle/mgt-loader.js”></script> <mgt-mock-provider></mgt-mock-provider> <mgt-people show-max=”5”></mgt-people>
Day One - Modernising your application with containers
Back in 2000, Microsoft was releasing SQL Server and along with it, Northwind was born. A staple of MS documentation since the Northwind dataset has probably been seen by most developers and database admins alike. Announced at Ignite was new that Northwind has been bought out by Tailwind Trader – and with it, a new and updated technology stack has been implemented. The whole APPS learning path followed this technology transition.
Each learning path at Ignite has five stages – the first few of each path are high-level summaries and are accessible to all, no programming or real tech knowledge is needed. As the learning path progresses, they diver deeper into the inner workings.
Modernising your application with containers (APPS30) was the third session in the apps learning path. Focussing on Containers and how they can give a high-velocity deployment environment with simplified management for developers by removing the need to manage individual virtual machines.
It gave some interesting background on Docker and how they rose to become the main player in containerisation – by wrapping up the complexities of creating and managing containers into an easy to consume API and application set – they didn’t invent containers!
The docker file defines the ruleset for the application that is being deployed to containers by docker. The demonstrations involved multi-stage builds which are vital for reducing your docker image deployment file sizes and should be used in all live deployment environments. https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#use-multi-stage-builds.
When you’ve got your docker files then they need storing somewhere before they are deployed out to hosts – a docker registry. Microsoft provides a docker registry which can be locked down and secured to safely store your docker images and manifests.
When it comes to deploying Containers, you can use your hosts or Azure Container Instances. These offer per-second billing and are super useful for providing burst capacity for your services. https://azure.microsoft.com/en-us/services/container-instances/.
There was a great discussion on what to containerise and what not to. The focus of the “nots” was around data storage. The consensus seemed to be that managed database services are the way forward, rather than having to try and deal with persistent and shared storage between containers. Azure Cosomos DB seems to be the way to go for most storage requirements. It's pretty unique in the way that numerous different API / frameworks can interact with the same data. And multiple different data models can be selected, from key-value to documents to a full graph database.
Day One - Consolidating IO with Azure Kubernetes Service
Consolidating IO with Azure Kubernetes Service (Apps 40) nicely expanded on the container features from Apps 30. A typical assumption of those new to containers is that Kubernetes (K8s) is a requirement to use. It’s not the case at all, in fact, for small deployments, getting K8s running and keeping it that way can be more work than running the app itself. If you do want to utilise K8s, and the performance and resilience monitoring feature it brings, maybe Azure Kubernetes service is the way to go, especially for your first deployment.
Kubernetes and containerisation hosts on Azure have been extensive development by the Microsoft Xbox team to provide MS Live and MS Live Game Streaming services to customers – the result is Azure Kubernetes Services (AKS).
Scotty Coulton – a Developer advocate out of Sydney ran this excellent session, featuring heavily on live demos and with an incredible set of documentation available on GitHub https://github.com/microsoft/ignite-learning-paths-training-apps/tree/master/apps40 focussing on how to scale clusters for performance, security and reliability. He runs through the main questions that are asked of us when running a service and how Kubernetes can help us achieve that.
If you install K8s on a VM, then it will look like the diagram below.
But by using AKS, you don’t have to worry about the control plane – all you need to do is run the worker node.
This makes using Kubernetes a whole more attractive for most developers and IO people.
- AKS vs K8s on virtual machines
- Burst scaling clusters
- Securing clusters
- Resiliency and reliability of clusters
Day One - Taking your app to the next level with monitoring, performance, and scaling
The last session of day one at Ignite for me was APPS50 - Taking your app to the next level with monitoring, performance, and scaling.
Having a scalable app is well and good, but if there is a problem with code deployment you don’t want to be waiting for customers to report the problem, you need monitoring and alerting to let you know there is a problem straight away.
Azure provides a whole heap of features for both Kubernetes cluster hosted apps and standard Azure web apps. Using Azure Monitor and Application Insights helps Tailwind Traders elevate their application logs to something a bit more powerful: telemetry.
This session was very much based on how Azure can help provide the tools that can help you pre-emptively stop software issues impacting users. It used the new Tailwind Tranders company example and contained several demos, from finding failure after it happened, identifying where it happened, and how to use alerting in the future to notify if a problem is going to / has already happened.
Day Two - Whats new with Microsoft Teams
Day two – ‘International World Wide MS Teams Day’. Well, that’s what Microsoft managed to make it feel like. And to be fair there was genuine excitement from some of the crowd in the sessions.
The start of the day brought us ‘What's new with Microsoft Teams: The hub for teamwork in Microsoft 365’. Microsoft Teams is different in many ways to Skype for Business – especially when it comes to updates and new features. With the Skype for Business server, each organisation's IT admin could decide on the release cycle of both the server and client products. With Teams, the shift has been to a high release cadence, with sometimes multiple new features being available each month.
Urgent messages were a highlighted new feature coming soon. With this, the message recipient will get notified every minute for up to 20 minutes until the message is read (building of the back of Read Receipts which has just been released). Get ready for offices to be filled with a pinging alert chorus.
Probably the most requested feature I’ve heard for Teams is now just about to arrive – pop-out windows. Teams is great, but for those who work with multiple monitors, having the teams experience locked to just one screen has been a big bugbear. I want my chat windows on one screen, my main interface on another and then video and screen shares somewhere else. That’s now finally going to be possible, allowing that choice that was available with Skype for Business.
Teams sprawl is a phase that has worked its way into most organisations over the past year, both at the Teams level, channel level and in channel chats. Now with chat announcements, highlighted messages (with an optional image) and specific announcement icons allow for these announcements to stand out from general chat.
Following on with better channel visibility is the ability for messages to be posted in multiple channels at once (they can be channels in different teams too). This is a lifesaver for people who would have before had to copy and paste the same notification message into many chats to let everyone know.
Finding your core and important channels is about to get a whole lot easier too. Soon you will be able to pin individual channels to the top of the Teams list. Giving the same experience with pinning chats or contacts in the chat window.
Sharing emails to Teams, and sharing Teams content to Outlook is a neat feature which replaces the need to forward emails to a channel email address. From Outlook you can click share to Teams and the content is moved there.
Management and unification of To Do lists will be a big benefit to Teams. With the ability coming to see flagged emails, Outlook task lists, To Do app items and items assigned through Planner – all in Teams.
Day Two - Intelligent communications in Microsoft Teams
TMS20 - Intelligent communications in Microsoft Teams, was the next session on the back on the intro to new features. The focus of this session was about how Teams is becoming more intelligent in helping you use all communication features – with a focus on which devices can bring an improved meeting experience.
With Teams there are lots of ways of communicating, especially with meetings.
By keeping a common theme and a common device interaction method allows for users to not become confused with changes between how they started a meeting – it functions in the same way.
Meetings now have a unified note-taking process, whether Word or OneNote is used, with integration with Outlook, both before when planning a meeting and after.
The most talked-about Teams meetings new feature is live captions and the ability to save and search these. First in English but then other time more languages allowing for real-time translation between meeting participants.
The Teams device ecosystem is already big and is getting bigger. With devices providing new features and ever higher quality sound and slick interfaces.
A problem with Skype for Business meeting recording was that the file was saved to the local hard drive of the local user who started recording. Now in teams, the meeting recordings are saved to Microsoft stream, so no CPU busting, high-speed fan spinning on your laptop when recording meeting content!
The overall message for Teams is that Microsoft is committed to building upon a great product to make it even more usable, and to continue to add to the growing feature set. With the upcoming changes, Teams far surpasses Skype for Business functionality.
Day Two - Learning From Failure
For the end of day two, I moved back to dev-ops based sessions. The first was one I think everyone in Development and IO should be prepared to rethink – Learning from Failure (OPS30).
This session was probably the most self-questioning session for most people, as I think we are all guilty of not properly learning from our mistakes at one point or another. This session should be watched by pretty much anyone – Product Managers, Sales, Customer Services as well as Developers and Infrastructure teams.
It covered how to properly post review and incident, and what you should and should not be doing in that review, and after. It’s best explained by directly reading the presenter notes from the session PowerPoint
This session was in the middle of the OPS Learning path, and pretty much the glue that ensures the ops cycle works effectively.
The session started by discussing ‘How Complex Systems Fail’ by Richard Cook. I had not read it before – on the train home it was a great read and resonated with the Dev Ops lifecycle.
We are almost all working on complex systems – relying on hardware, software, orchestration, build tools, release tools, multiple clusters, network connectivity and user input. And they will fail. At some point, something will go wrong and it will fail a system. But building a strong foundation of how to review and how to use that to move forward.
A while ago I read Black Box Thinking by Matthew Syed. It starts with a sad story of Martin and Elaine and a routine hospital operation in 2005 that goes horribly wrong and Elaine loses her life. It shouldn’t have been that way; it could and should have been prevented. But the medical way of dealing with errors was not to challenge the decision in the first place, and afterwards not to analyse them or share failings.
On the other side is the airline industry, that over a century has had horrific accidents, but each year, the number of fatalities has dropped continuously (in 2017 there were no deaths anywhere in the world in passenger jet aircraft). (Also note that the book was written in 2015, and probably should be read and re-read by management and staff while working on 737 Max software updates.)
Recent issues aside, the book goes on to discuss how the airline industry has only got to its levels of safety through iteration but with clear review of problems with no fear of finger-pointing or blame to individuals – it is expected that people should be speaking out when there is a problem and to learn and build from mistakes, to stop them happening again. The industry developed PACE in 1978 – Probe, Alert, Challenge, Emergency – for the junior crew to have the process to communicate with the Captain, who for many years was boss and it was their way or no way. It also taught these senior crew how to listen, acknowledge and clarify ambiguity before problems spiral. This came from analysis and review of a tragic accident – but they put processes in place to stop this specific problem and other communication-based problems from happening again.
I recommend watching this video or browsing the learning material – all hosted on git hub - https://github.com/microsoft/ignite-learning-paths-training-ops/tree/master/ops30.
If you don’t get around to watching the video – next time you are discussing and outage or system failure, just remember:
AND
Day Two - Deployment Practises for greater reliability
The final session of Ignite London 2020 was a session on Deployment Practises for greater reliability (OPS40). This was a CI/CD session with emphasis on reliability through build practises, testing practises and traceability of change – by utilising Microsoft Azure DevOps services.
For anyone who is thinking of moving to Azure Dev ops, this session is worth watching. It will give a good overview of what Azure dev ops can do for you and how Agile & Ci/CD practises can improve your release quality and reduce you developers stress!
Wrap Up
Ignite is invaluable for IT Pros, especially those who spend a lot of time working in isolation or in very small teams. Even if you don’t network with many people there – just having that many great brains in a small space gives a sense that anything is possible. If you want to go but your boss/manager/etc says no – fight back, it’s worth it. The people on stage are real MS Experts, and hearing them share their knowledge and thoughts on a wide range of MS products and services is essential viewing. They may not get the same rapturous applause, whoops and cheers from Brits as they get back at home, but that didn’t mean there was no appreciation.
Sessions Attended
Thursday
MDEV2- Ms Graph Developer Primer
APPS30 - Modernizing your application with containers
APPS40 - Consolidating infrastructure with Azure Kubernetes Service
APPS50 - Taking your app to the next level with monitoring, performance, and scaling
Friday
TMS10 - Microsoft Teams: The hub for teamwork in Microsoft 365
TMS20 - Intelligent communications in Microsoft Teams
OPS30 – Learning from Failure
OPS40 - Deployment practices for greater reliability
Credits
Images taken from the MS Presentations found in the github repos above