This is one of the sessions I have been looking forward to at Microsoft Ignite, and I am happy and proud to cover this session in a blog post. Mark Longton, Group Principal Program Manager for Teams at Microsoft, and Steve Saxon, Partner Software Architect for the intelligent communication services that power Teams, showed us how Microsoft Teams has been architected and what goes on behind the scenes to bring conversations, people, documents, and apps and services into one great experience.
Steve Saxon, myself, and Mark Longton
The first thing that was covered, was the logical architecture of Microsoft Teams. The diagram below shows how everything is connected.
Teams logical architecture
It is good to realise that every Team has an Office 365 Group as its underlying membership construct. The Group manages owners and members of the Team, and makes sure that every Team has a shared mailbox which is used to store channel messages in order to enable compliance on these messages. Chat messages are stored in the personal mailboxes of the chat members. In fact, both channel and chat messages are stored in Azure Storage and then journaled into Exchange, but more about that shortly. All files are stored in SharePoint (for Channels) and OneDrive (for Chats).
A nice announcement on the side, was the remark that the current limit of max 20 people in a Chat conversation is going to be moved up soon to 250 users. That’s good news!
On to more specifics about where conversations are stored. For me, here was the biggest announcement of this session, about Teams moving their storage for messages from Azure Storage, Tables, and Queues to CosmosDB. This is huge! This will have a positive impact on both reliability and performance for Teams. With CosmosDB, Microsoft will be able to store the message first and then process it, instead of processing it in memory. That means the message will still be there if something goes wrong. Great news! Even with CosmosDB, messages will still be journaled into Exchange, for compliancy reasons. Inline images and stickers in messages are stored in a dedicated media store in Azure. Ghiphys are not stored.
Then more about file storage. As already said, files in Chat conversations are stored in the OneDrive for Business of the user who added the file, and then permissions are set for the members of the Chat. Files in Team Channels are stored in SharePoint. Teams offers support for third-party cloud storage from Dropbox, Box, Citrix ShareFile, and Google Drive, but this is turned off by default. Teams admins can change this setting in the Teams Admin Center.
Here’s a great overview of what is stored where for Microsoft Teams:
Data entity storage
What is worth mentioning, is that recordings are temporarily stored in Azure on blob storage for the processing of that recording, before it is pushed out to Microsoft Stream. That storage is always for less than 24 hours. Regarding the telemetry, as stated, no customer content is sent over to Microsoft. All user data is anonymised and even channel names are scrubbed out.
Azure Active Directory sync
The following operations on Office 365 Groups are synced to Microsoft Teams:
Group property updates
Group manager changes
Group member changes
Group hard delete
User property updates
User hard delete
These changes are usually synced in less than 15 minutes, but the SLA says they have to be synced within 24 hours.
Data flows and compliancy
It is good to realise that Microsoft Teams talks to many external systems. Some only inbound, some only outbound, many both ways. Most organisations won’t have a problem with this, but there are organisations out there that have very strict compliancy rules and then it is very useful to understand which data flow exist.
Data flows through the compliance boundary
Microsoft Teams is catching up with Exchange and SharePoint on where your data is stored. The last few datacentres that do not support Teams data storage, like France and Korea, are joining soon and then Teams will stay current and on par with Exchange and SharePoint.
Teams client architecture
The Teams client architecture shares a code base between Windows and Mac, which allows Microsoft to ship updates to both platforms at the same time. Also interesting is that Microsoft is moving from Angular to React for the desktop client. Angular was their choice back in the days, because that seemed the right choice then, but moving forward a shift to React provides code share possibilities between the desktop and mobile clients.
Teams client architecture
We all know that Microsoft auto-updates the Teams clients and there is a very good reason for that. This makes sure that negotiating the media stream between clients can always assume the latest technology and optimisations available.
More building blocks explained
The next part of the presentation was a great deep dive in different building blocks of the Microsoft Teams architecture. I really encourage you to watch the recording of the session, because too much information was given to capture in a blog article like this one. Some of the points I do want to highlight:
There is a Microsoft Graph webhook coming for Teams, with which you can capture messages and then decide how to handle those messages. Perfect for DLP scenarios, both for the Microsoft DLP engine and for third-party products.
If you have already set up PSTN through Skype for Business, then Teams will lean in to that and use that same infrastructure.
With Direct Routing you can connect existing PBX / PSTN provider to Teams. When someone calls your existing number, the call will be routed to Teams.
If you want to do a meeting recording, in the background a bot is added to the meeting, who does the media negotiation, just as any other user, and then publishes a message in the meeting that recording is started and starts the recording.
That concluded this session. The session met my expectations, it was very insightful! Both from an overview and from a deep dive perspective. Thanks Mark and Steve!
I’d like to end with some interesting facts that were shared during the Q&A at the end of the session:
Shorter retention times are coming for chats, as short as one day.
Private channels coming soon. Well into the development cycle. No date confirmed. Microsoft realises this is the number 1 user voice item.
VDI support for calling and video is being worked on.
Teams team user limit will increase from 2500 to 5000 fairly soon and larger numbers will come next year.
Microsoft is working on interfaces for third party products to support things like voice journaling.