on-prem monolith to micro service saas based solution

27
How Microsoft migrated an on-prem monolith to a micro service SaaS- based solution

Upload: others

Post on 27-Oct-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

How Microsoft migrated an on-prem

monolith to a micro service SaaS-

based solution

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

Learning and challenges overcome

Input request

Millisecond query generation

Millisecond query generation

Request output

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

Maintain query state

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

Monitoring and alerting

Microsoft IT ShowcaseHow Microsoft does IT

Visit the websitemicrosoft.com/itshowcase