Injustice - Developers Among Us (SciFiDevCon 2024)
Innovations of .NET and Azure (Recaps of Build 2017 selected sessions)
1.
2.
3.
4. “Samsung is embracing .NET because it is
a completely open source project.”
"ASP.NET is open source, that allows us
to contribute back to it if we have any
performance issues which Microsoft review
and together we make a better product.“
— Illyriad Games
48. public class MyEndpoint Endpoint
private readonly FormatterResolver
private readonly ILogger
public FormatterResolver ILogger MyEndpoint
public override async Task Connection
var
var await HandshakeMessage
if null
"Bad handshake attempt from {ConnectionId}"
throw new InvalidOperationException "Bad handshake"
await
MyMessage
while await MyMessage
"Message received from {ConnectionId}"
49.
50.
51.
52.
53. ASP.NET 4.6
(WebForms, MVC, Web API, Web Pages
- present but separate)
ASP.NET Core 1.0
Web API + MVC
ASP.NET Core 2.0
Web API + MVC + Razor Pages
MVC
Web APIWeb Pages
Web Forms
54. ASP.NET 4.6
(WebForms, MVC,
Web API, Web Pages)
ASP.NET Core 1.0
Web API+MVC
ASP.NET Core 2.0
Web API+MVC+Razor Pages
ASP.NET Core vNext
Web API+MVC+Razor Pages
+SignalR
73. Provision in minutes with built-in high availability
Predictable performance, inclusive pay-as-you-go pricing
Scale on the fly without application downtime
Secured to protect sensitive data at-rest and in-motion
Automatic backups and Point-In-Time-Restore for up to 35 days
Deep integration with Azure Web Apps
Managed MySQL database service for app developers
74. We’re Not Exactly “New” to MySQL
MySQL Database on Azure China
• Launched in September 2015
• No partner-based MySQL PaaS solution in China
• Among top 10 utilized Azure services in China
• Based on different managed service architecture
• New service will replace the Azure China solution
76. Azure
Azure Database
for MySQL
Logical, not bound to server instance
Connection endpoint for MySQL server.
Can create one to many user databases.
Highly available with automatic failover.
Pinned to a region
Policy scope, e.g. firewall rules, recovery,
monitoring and management.
77. Server provisioning and
management
MySQL Server
REST API
US West
Common solution for access control, identity,
deployment notifications, metrics, billing…
Azure
Resource
Manager
78. Protect data
• Built-in encryption for
application data and backups
Security built in
Control access
• Secure SSL connectivity
• Server firewall rules
Identity
• Native authentication
79. A Compute Unit is a measure of CPU processing
throughput
Pre-configured with a fixed amount of memory,
optimized for the Basic and Standard service tiers.
100 Compute Units equate to ~1 full core
Ratios may be adjusted to ensure consistent
performance across different hardware generations
Enables workloads that require high I/O performance
and lower CPU/RAM to be achieved without having
to upgrade to higher SKU
80. Storage Scale up to 1 TB Scale up to 10TB Scale up to 4 TB
IOPS NA NA Scale up to 40K IOPS
Service Tier
Intended Use Case
For workloads that scale with variable
IOPS
Compute Units 50, 100
Storage (included)
50GB
Magnetic Media
IOPS (included) Variable
Additional Options
81. Service Tier
Intended Use Case
For workloads that scale with variable
IOPS
For workloads that require on-
demand scaling optimized for high
throughput with provisioned IOPS
Compute Units 50, 100 100, 200, 400, 800,1600, 2000
Storage (included)
50GB
Magnetic Media
125GB
Remote SSD
IOPS (included) Variable
375
Scales 3:1 (IOPS:GB)
Scale up to 10 TB
Additional Options
Scale up to 10 TBStorage Scale up to 1 TB Scale up to 10 TB Scale up to 4 TB
IOPS NA Through increasing storage Scale up to 40K IOPS
82. Service Tier
Intended Use Case
For workloads that scale with variable
IOPS
For workloads that require on-
demand scaling optimized for high
throughput with provisioned IOPS
For workloads that require on-
demand scaling optimized for lowest
latency with provisioned IOPS
Compute Units 50, 100 100, 200, 400, 800,1600, 2000 100, 200, 400, 800, 1600, 2000
Storage (included)
50GB
Magnetic Media
125GB
Remote SSD
125GB
Local SSD
IOPS (included) Variable
375
Scales 3:1 (IOPS:GB)
1250
Scales 10:1 (IOPS:GB)
Additional Options
99.99% SLA | fully managed | built-in HA | online performance scaling
Storage Scale up to 1 TB Scale up to 1 TB TBD
IOPS NA Through increasing storage Provisioned Directly
83. Offers
Intended Use Case
For workloads that scale with variable
IOPS
For workloads that require on-
demand scaling optimized for high
throughput with provisioned IOPS
Workloads that require low
latency and high performance
with large number of concurrent
users or multiple databases
Compute Units 50, 100 100, 200, 400, 800,1600, 2000 100, 200, 400, 800, 1600, 2000
Storage (included)
50GB
Magnetic Media
125GB
Remote SSD
125GB
Local SSD
IOPS (included) Variable
375
Scales 3:1 (IOPS:GB)
1250
Scales 10:1 (IOPS:GB)
Additional Options
99.99% SLA | fully managed | built-in HA | online performance scaling
Scale up to 10 TBScale up to 1 TBStorage Scale up to 1 TB Scale up to 1 TB Scale up to 4 TB
IOPS NA Through increasing storage Scale up to 40K IOPS
84. AZURE DATABASE FOR MYSQL
REGION AVAILABILITY TODAY
West US, North Central US, East
US, East US2, South Central US,
West Europe, North Europe, Japan
West, Japan East, East Asia, SE Asia
More coming soon!
11
Azure regions
available today
85. Simplify and optimize with the support of all major tools, frameworks, and
languages you already use
LanguagesFrameworks
89. build faster
• Provision in minutes with built-in high availability
• Predictable performance
• Scale on the fly without application downtime
• Secured to protect sensitive data at-rest and in-motion
out-of-the-box
• Automatic backups and storage for recovery to any
point up to 35 days
• Use native tools, drivers and libraries
• Simple and inclusive pay-as-you-go pricing
90. Azure Database for PostgreSQL service tiers
100, 200,400,800,1600, 2000 100, 200,400,800,1600, 2000
125 GB -> 1 TB
(larger storage options at GA)
Small apps with
variable IOPS
Recommended for apps
requiring scalable compute
with provisioned IOPS
Recommended for apps
requiring scalable compute
with provisioned IOPS
50 GB -> 1 TB Up to 4 TB
Native PostgreSQL 9.5 and 9.6
Consistent Portal, CLI and APIs
50, 100
Programming
Surface
Manageability
Storage scaling
Compute
scaling
Intended Use
91. Available now in preview
Intended Use
Compute
scaling
Programming
Surface
Small apps with
variable IOPS
Recommended for apps
requiring scalable compute
with provisioned IOPS
50, 100
Native PostgreSQL 9.5 and 9.6
Consistent Portal, CLI and APIsManageability
Storage scaling 50 GB -> 1 TB
100, 200,400,800
125 GB -> 1 TB
92. Front-End/Back-End Web Apps
• Front-End: • Back-End:
• Handles SSO requests for
CAS/SAML
• Other services: email, pdf
rendering
• Locally cached results
100. Global distribution Elastic scale out Guaranteed low latency Comprehensive SLAs
Azure Cosmos DB
Key-Value Column-family GraphDocuments
A globally-distributed, multi-model database service
… more coming soon
SQL
Five consistency models
107. Global distribution Elastic scale out Guaranteed low latency Comprehensive SLAs
Azure Cosmos DB
Key-Value Column-family GraphDocuments
A globally-distributed, multi-model database service
… more coming soon
Five consistency models
SQL
108. Enterprise grade security
Encryption at Rest
• Always encrypted at rest and in motion
• Data, index, backups, and attachments encrypted
Encryption is enabled automatically by default
• No impact on performance, throughput or availability
• Transparent to your application
Comprehensive Azure compliance certification
• ISO 27001, ISO 27018, EUMC, HIPAA, PCI
• SOC1 and SOC2 (Audit complete, Certification in Q2 2017)
• FedRAMP, IRS 1075, UK Official (IL2) (Q2 2017)
• HITRUST (H2 2017)
109. TIMESERIES MICROSERVICE
Redis
(On-Prem)
PerformRead
Reads Should be
served directly from
storage Service.
Accept PSR process will also
Insert PSR(s) into PSRCollection
with Status as Queued.
AcceptPSR process takes a Post Sample request, Breaks it up into multiple PSRs
if
incoming PSR contains more than one Timeseriesld and inserts these PSRs into
the PSR-Eventhub.
AcceptPSR
PSR-Eventhub
RawSamples-Eventhub
(Each event contains samples for one
TimeseriesId)
(Each event contains one
sample)
DAG-Eventhub
Metrics-Eventhub
(Each event contains one “Enriched” DAG)
(Each event contains one Metric
sample)
IngestRawSamples
GenerateEventTriggerDAG
GenerateClockTriggerDAG
IngestMetrics
This process is similar to
GenerateEventTriggerDAG
except that it works on ClockTriggers (Batch
jobs).
STORAGEMICROSERVICE
The GenerateEventTriggerDAG process will take a Rawsample event
and lookup the DAG for that TimeseriesId. For each operation in the
DAG, it will determine the data window and get the required additional
data for the operation. It then compose an “enriched” DAG and pushes
this into the DAG Eventhub.
This process takes a PSR,
splits it into samples, performs
deduplication and inserts
New/Update samples into
Rawsamples eventhub.
DedupRawSamples
Uses C# and Python Execution
Engines to run operations on the DAG
and pushes result samples to Metrics
Eventhub.
C# Engine
Python
Engine
RunDAG
110.
111. Premium experience (low latency, Well-defined consistency)
Globally Distributed
Secondary Indexes for user-defined queries
Millisecond latency, Guaranteed throughput
We heard you – “Top user voice asks”
Azure Cosmos DB:
Table API
Azure Storage:
Standard Table API
Azure Storage SDKs
100% Backwards compatible, Seamless experience
Azure Cosmos DB:
Table API
Azure Storage SDKs
Coming Soon : Update for standard Tables, optimized for storage
Seamless migration