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.
The first thing that was covered, was the logical architecture of Microsoft Teams. The diagram below shows how everything is connected.
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:
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:
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.
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.
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:
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:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.