Post on 27-Oct-2021
What we’ll cover todayWhat is MSRA?
Demo of the Application
Current monolith architecture
Current pain points
Approach to split monolith
Learns and challenges overcome
Monitoring and alerting
Microservice design
What is MSRA?
Reporting tool
• Business intelligence
• Metadata driven
• Secure access control
o Row level
o Column level
Capabilities
• Ad hoc reporting
o Run, queue, schedule
• Support different fabric types
o SQL, cubes
Our customers
MSSales
MSPeople
MSSpend
MSPlanCast
OneSOE
Mercury
Karnak
Procurement BI
MBP Financial Reporting
BWB
RE&F
FINCO
OneTax
Tax
Current architectureMSRA Users
MSRA Excel
VSTO Add-in
AppInfo Server
AppInfo
Database
SyncJob
Metadata Server
Metadata
Database
Reporting Server - Node 1
Datamart
SQL CLR
Reporting Server - Node 2
Datamart
SQL Results Database
SQL CLR
Analysis Service OLAP
(Query Node 1
Analysis Service OLAP
(Query Node 1)
Analysis Services Load Balancer
RBP
SQL Results Database
Current pain points
• Onboarding process taking a month or more
• Application release process alignment with LOB’s release
• On-premise server patching
• Troubleshooting and monitoring challenges
• Cost and infrastructure maintenance
• Scale up, no scale-out
IdentifyMinimumViableProduct
AppInfo DB Metadata DB
Feature List Lines of Code Number of Tables Weighted % of whole
Query Generation 10915 33 360195 30.98182437
Schedule 13320 24 319680 27.49696586
UI Display 11146 15 167190 14.38068607
Security 4863 25 121575 10.45715598
Telemetry 3438 20 68760 5.914324863
Query Execution 12966 5 64830 5.576289716
Load Balancing 4984 4 19936 1.714775749
Cube Query Generation 2009 8 16072 1.382417528
Notification 1784 6 10704 0.920694202
PowerQuery 2094 2 4188 0.360226767
PBI 1688 1 1688 0.145191687
Util 1647 1 1647 0.141665111
Query Reuse 721 2 1442 0.124032235
SystemOutput 1264 1 1264 0.108721737
DrillDown 1258 1 1258 0.108205653
Key Ring 524 2 1048 0.090142706
Config 667 1 667 0.05737136
StandardReporting 457 1 457 0.039308413
75745 152 1162601
Approach to
decompose
monolith
IdentifyMinimumViableProduct
Feature List Lines of Code Number of Tables Weighted % of whole
Query Generation 10915 33 360195 30.98182437
Schedule 13320 24 319680 27.49696586
UI Display 11146 15 167190 14.38068607
Security 4863 25 121575 10.45715598
Telemetry 3438 20 68760 5.914324863
Query Execution 12966 5 64830 5.576289716
Load Balancing 4984 4 19936 1.714775749
Cube Query Generation 2009 8 16072 1.382417528Notification 1784 6 10704 0.920694202
PowerQuery 2094 2 4188 0.360226767
PBI 1688 1 1688 0.145191687
Util 1647 1 1647 0.141665111
Query Reuse 721 2 1442 0.124032235
SystemOutput 1264 1 1264 0.108721737
DrillDown 1258 1 1258 0.108205653
Key Ring 524 2 1048 0.090142706
Config 667 1 667 0.05737136
StandardReporting 457 1 457 0.039308413
75745 152 1162601
AppInfo DB Metadata DB
Identify minimum
viable product
▪ Remove external dependencies
▪ Fast deployment times
▪ High-density hosting
▪ Distributed application management
▪ Highly available services
▪ Scalable services
▪ Auto patching
Node
Node Node
Node
Node
Technology assessment
Stateful worker service
Service fabric clusterOperational
insights
Blob storage
Azure LoadBalancer
Stateless service
Stateful web service
Stateful cache service
Stateful worker service
Stateful queue service
Stateful worker service
Stateful queue service
▪ Highly available services
▪ Scalable services
▪ Patching service
▪ Remove external dependencies
▪ Fast deployment times
▪ High-density hosting
▪ Distributed programming model
▪ Core Azure Services runs on Service Fabric
Stateful web serviceStateful cache service
Microservice design
MSRA APIApplication service
Security service
Metadata service
Query manager service
Load balancer service
Reporting server collection service
Validates
Application ID and
gets application
details
Resolves user
security
Generates query
API layer that
routes the user
request to
different services
1. Query is put in the queue
2. Call load balancer service
for a reporting server
3. Call execution service
Reliable Queue
1. Go through the set
of available
reporting servers
2. Return the best
server for the
query to execute
Retrieves user profile
User profile service
Query telemetry service
Cleanup Service
Reliable queue
Reliable queue
Execution Service
1. Collect stats from
reporting servers
1. Executes the query in the
reporting server
2. Give a call back to query
manager service Tenant servers
Input request
Millisecond
query generation
MSRA API
Application service
Security service
Metadata service
Validates
Application ID and
gets application
details
Resolves user
security
Generates
query
API layer that
routes the user
request to
different services
Standard
S0:10
DTUs
Standard
S0:10
DTUs
Standard
S0:10
DTUs
Took ~10 seconds
Joins around 10 tables
MSRA API
Application service
Security service
Metadata service
Validates
Application ID and
gets application
details
Resolves user
security
Generates
query
API layer which
routes the user
request to
different service
Standard
S0:10
DTUs
Standard
S0:10
DTUs
Standard
S0:10
DTUs
Millisecond
query generation
Input request
Took 200 milliseconds
Maintain query state
MSRA APIApplication service
Security service
Metadata service
Query manager service
Load balancer service
Reporting server collection service
Validates
Application ID and
gets application
details
Resolves user
security
Generates query
API layer that routes
the user request to
different services
1. Query is put in the queue
2. Call Load balancer service
for a reporting server
3. Call execution Service
Reliable queue
1. Go through the set
of available
reporting servers
2. Return the best
server for the
query to execute
Retrieves user
profile
User profile service
Query telemetry service
Cleanup service
Reliable dictionary
Reliable dictionary
Execution service
1. Collect stats from
reporting servers
1. Executes the query in the
reporting server
2. Give a call back to Query
manager service Tenant servers
Application service
Security service
Metadata service
Query manager service
Execution service
Query telemetry service
500 milliseconds
Maintain query state
10 milliseconds
Cleanup service
Reliable dictionary
Captures query telemetry
More retrieved
telemetry to
Azure table
storage
Query Telemetry Service
Maintain query state
Application service
Security service
Metadata service
Query manager service
Execution service
Reliable dictionary
Cost-optimized design
Application
Shared Infrastructure
MSRA API
Application service
Execution service
MSRA services
Load balancer
User profile
User profile service
Security service
Metadata service
Query manager service
Tenant services/
New customer
Load balancer service
Reporting server
collection service
Cleanup service
Query telemetry
service
Security service
Metadata service
Query manager service
Tenant services/
MSSales
Load balancer service
Reporting server
collection service
Cleanup service
Query telemetry
service
Security service
Metadata service
Query manager service
Tenant services/
Mercury
Load balancer service
Reporting server
collection service
Cleanup service
Query telemetry
service
Add new LOB entry
Add query server
Tenant onboarding and deployment strategy
Application
Shared Infrastructure
MSRA API
Application service
Execution service
MSRA services/Ring0
Load balancer
User profile
User profile service
Tenant services/
MSSales
Reporting server
collection service
Metadata service
Query telemetry
service
Add new LOB entry
Add query server
MSRA API
Application service
Execution service
MSRA services/Ring1
User profile service
Security service
Load balancer service
Query manager service
Tenant services/
LOB
Reporting server
collection service
Metadata service
Query telemetry
service
Security service
Load balancer service
Query manager service
Tenant services/
Mercury
Reporting server
collection service
Metadata service
Query telemetry
service
Security service
Load balancer service
Query manager service
Each application will be mapped to Ring. MSRA App will be Ring0
Continuous
integration
Ring0
deploymentFull Test
Pass
Ring1
deploymentRing2
deployment
Ring2 App
deployment
Production
Ring1 App
deployment
Ring0 App
deploymentRing2
Ring1
Ring0
(MSRA)
Approval
Deployment strategy
ResourcesAccess all IT Showcase resources at microsoft.com/ITShowcase
• Designing a modern service architecture for the cloud
• How one Microsoft leader sparked an engineering team’s
transformation
• Azure Service Fabric
Microsoft IT ShowcaseHow Microsoft does IT
Visit the websitemicrosoft.com/itshowcase