使用asp.net mvc搭配windows azure建構可擴展網站

54
使使 ASP.NET MVC 使使 Windows Azure 使使使使使使使 Sky Chang 使使使使使使 Blog.sanc.idv.tw

Upload: sky-chang

Post on 24-May-2015

484 views

Category:

Technology


3 download

DESCRIPTION

2014/03/24 - 微軟技術關卡破解日 使用Asp.net mvc搭配windows azure建構可擴展網站

TRANSCRIPT

Page 1: 使用Asp.net mvc搭配windows azure建構可擴展網站

使用 ASP.NET MVC 搭配Windows Azure 建構可擴展網站

Sky Chang天空的垃圾場Blog.sanc.idv.tw

Page 2: 使用Asp.net mvc搭配windows azure建構可擴展網站

Sky ChangWindows Azure 微軟最有價值專家

天空的垃圾場blog.sanc.idv.tw

• ASP.NET MVC• ALM• Windows [email protected]

m

Page 3: 使用Asp.net mvc搭配windows azure建構可擴展網站

資料來源

Windows Azure : http://www.windowsazure.com

天空的垃圾場 : http://blog.sanc.idv.tw

Study4.TW : http://study4.tw

Windows Azure 雲端平台開發夥伴社群https://www.facebook.com/cloudexpert

Azure Taiwan User Group : https://www.facebook.com/groups/AzureTWUG/

MSDN : http://social.msdn.microsoft.com/Forums/zh-tw/home

Page 4: 使用Asp.net mvc搭配windows azure建構可擴展網站

Cloud ServiceDemo

Page 5: 使用Asp.net mvc搭配windows azure建構可擴展網站

!! 警告 !!今天沒有笑話,如過程中有任何睡意,屬於正常現象

Page 6: 使用Asp.net mvc搭配windows azure建構可擴展網站

Agenda

Cloud Service

SLA 99.95

Storage ( 程式架構 )

Scaling - Cloud Service Cache ( LB 、 Session)

Azure 架構 ( Web Role and Work Role )

Page 7: 使用Asp.net mvc搭配windows azure建構可擴展網站

Cloud Service

Page 8: 使用Asp.net mvc搭配windows azure建構可擴展網站

Your Datacenter

Virtualization

O/S

Hardware

Network

Data

Applications

Firewall

Web Sites

Applications

Data

Cloud Services

Applications

Firewall Rules

Data

Virtual Network

Virtual Machines

Virtual Network

Data

Applications

Firewall Rules

O/S

Focus on the Application

Windows Azure

Page 9: 使用Asp.net mvc搭配windows azure建構可擴展網站

What is a Cloud Service?

此容器包含了關聯的 Service Roles

Web Role Worker Role

Page 10: 使用Asp.net mvc搭配windows azure建構可擴展網站

Web Role

就是 -> IIS 7, 7.5 or IIS 8.0*ASP.NET 3.5 SP1, 4.0 or 4.5* – 64bit Hosts•Web Forms or MVC

•FastCGI applications (e.g. PHP)

Page 11: 使用Asp.net mvc搭配windows azure建構可擴展網站

Worker Role Patterns

Queue Polling Worker•Poll and Pop Messages 透過 while(true) 進行迴圈•E.g. 背景處理大量資料Listening Worker Role•建立 TCP Listener 或 WCF Service 、 Web API Host

•E.g. 執行 .NET SMTP server 或 WCF Service

External Process Worker Role•利用 OnStart 或 Run method 執行 Process.Start()

•啟動 Task 在背景工作•E.g. 執行 database server, web server, 分散式 cache

Page 13: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則一 不要想著放上雲 要想著如何放Web Role 和 Work Role 各有不同的效能,請選擇適合的家

Page 14: 使用Asp.net mvc搭配windows azure建構可擴展網站

Scaling

Page 15: 使用Asp.net mvc搭配windows azure建構可擴展網站

1保留實體

:-)

實體

共享Web Role or Work Role

Page 16: 使用Asp.net mvc搭配windows azure建構可擴展網站

2實體

:-)

實體

:-)

實體

Web Role or Work Role

Page 17: 使用Asp.net mvc搭配windows azure建構可擴展網站

2共享

實體

:-)

實體

:-):-)

:-) :-)

:-)

:-) :-)

實體

Web Role or Work Role

Page 18: 使用Asp.net mvc搭配windows azure建構可擴展網站

實體

:-)

CPU 使用率

auto-scaling

實體

:-)

實體

:-)

Page 19: 使用Asp.net mvc搭配windows azure建構可擴展網站

ScalingDemo

Page 20: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則二 架構更勝於擴充雖然可以輕易擴展,但不代表不用背負 app 的效能。

Page 21: 使用Asp.net mvc搭配windows azure建構可擴展網站

Cloud Service Cache

Page 22: 使用Asp.net mvc搭配windows azure建構可擴展網站

:-) :-) :-)

Cloud Service load balance

Page 23: 使用Asp.net mvc搭配windows azure建構可擴展網站

:-) :-) :-)

SQL Database ( Azure Cache )

Cloud Service load balance

Page 24: 使用Asp.net mvc搭配windows azure建構可擴展網站

Cache on Role co-located

Page 25: 使用Asp.net mvc搭配windows azure建構可擴展網站

Cache on Role Caching on Dedicated Role

Page 27: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則三 設計無狀態的網站天然的尚好 !!!

Page 28: 使用Asp.net mvc搭配windows azure建構可擴展網站

Storage

Page 29: 使用Asp.net mvc搭配windows azure建構可擴展網站

Persistent Disks and Highly Durable

Windows Azure Storage

Windows Azure Storage (Disaster Recovery)

Virtual Machine

Page 30: 使用Asp.net mvc搭配windows azure建構可擴展網站

Persistent Disks and Highly Durable

Windows Azure Storage

Windows Azure Storage (Disaster Recovery)

Virtual Machine

Virtual Machine

Page 31: 使用Asp.net mvc搭配windows azure建構可擴展網站

洋蔥架構 應用程式係圍繞著一個獨立的物件模型

來建構。 內層定義介面,外層實作介面。 耦合的方向是朝向中央。 應用程式的所有核心程式碼可以在與基

礎建設分離的情況下正常運行。 ( By 蔡煥麟老師翻譯 )

核心 : IOC & DI

Page 32: 使用Asp.net mvc搭配windows azure建構可擴展網站

洋蔥架構

Page 34: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則四 要 Interface 化隔離…才是自保之道

Page 35: 使用Asp.net mvc搭配windows azure建構可擴展網站

SLA 99.95

Page 36: 使用Asp.net mvc搭配windows azure建構可擴展網站

Service Level Agreements

包含項目Compute Hardware 故障 (disk, cpu, memory)

Datacenter 故障 - Network 故障 , power 故障Hardware 升級 , Software 維護– Host OS 升級

不包含項目VM 容器崩潰 , 客戶 OS 自行升級

99.95% for multiple role

instances4.38 hours of downtime 每一年

Server 2

SLA 99.95

Availability set

Server 1

Page 37: 使用Asp.net mvc搭配windows azure建構可擴展網站

Fault and Update DomainsFault Domains•代表有可能一起失敗的同一組資源•例如同一個機架、同一台 Server

Update Domains•代表一起更新的同一組資源•例如 OS 更新

Page 38: 使用Asp.net mvc搭配windows azure建構可擴展網站

Fault Domain

Rack

Fault and Update DomainsFault Domain

Rack

INSTANCE

INSTANCE

INSTANCE

INSTANCE

INSTANCE

INSTANCE

INSTANCE

INSTANCE

UD #1

UD #1

UD #2

UD #2

Page 39: 使用Asp.net mvc搭配windows azure建構可擴展網站

Virtual Machine Availability SetsUpdate Domains are honored by host OS updates

Fault DomainRack

Fault DomainRack

IIS1

SQL1

IIS2

SQL2

UD #2

UD #2

UD #1

UD #1

Page 40: 使用Asp.net mvc搭配windows azure建構可擴展網站

SQL Server2

SQL Server1

End to End Highly Available SolutionRedundancy at every level

IIS Web Application

Web Role

IIS Web Application

Web Role

LB

SQ

L M

irro

ring

Internet

SQL-AVSET

IIS-AVSET

Page 41: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則五 真的需要 99.95!?事情沒有你想的那麼簡單… .

Page 42: 使用Asp.net mvc搭配windows azure建構可擴展網站

Azure 架構

Page 43: 使用Asp.net mvc搭配windows azure建構可擴展網站

Queue-Based Load Leveling Pattern

Page 44: 使用Asp.net mvc搭配windows azure建構可擴展網站

Queue-Based Load Leveling Pattern

Page 45: 使用Asp.net mvc搭配windows azure建構可擴展網站

Asynchronous Messaging

Page 47: 使用Asp.net mvc搭配windows azure建構可擴展網站

守則六 搭配雲端的架構

Page 48: 使用Asp.net mvc搭配windows azure建構可擴展網站

And then !? User Story 、 Test Case 、 BDD 、 TDD 、 Unit Test

SQL Server AlwaysOn ( HA ) Windows Azure Active Directory

Page 49: 使用Asp.net mvc搭配windows azure建構可擴展網站

天空的垃圾場

Thank You

Page 50: 使用Asp.net mvc搭配windows azure建構可擴展網站

50

提醒

上滿 4 堂課 交回問卷 問卷禮

Page 51: 使用Asp.net mvc搭配windows azure建構可擴展網站

Microsoft MVP Award報名申請 : [email protected]

參加美國微軟產品組線上會議 MVP logo

使用權

提供產品建議給微軟產品組

美國 MVP全球年會

MSDN Online combo Subscription

MVP 專屬討論區 Knowledge Base

Technical Support3 個專業資訊人員技術支援服務

MVP 專屬 live meeting account

Page 52: 使用Asp.net mvc搭配windows azure建構可擴展網站

MVA 學習資源 ( 持續更新中文課程 )• 立即上手 Windows Azure

http://aka.ms/mva-azure-overview • SQL Server 2014 線上交易記憶體內資料庫簡介

http://aka.ms/mva-sql2014 • 針對網站開發人員的 Visual Studio 使用技巧

http://aka.ms/vstips4web • Web Services 開發實戰 : 使用 ASP.NET Web API 2

http://aka.ms/mva-webapi2 • Visual Studio Online 與 Git 版本控管實戰

http://aka.ms/mva-vso-git • 使用 App Studio 快速開發 Windows Phone 應用程式

http://aka.ms/mva-appstudio

Page 53: 使用Asp.net mvc搭配windows azure建構可擴展網站
Page 54: 使用Asp.net mvc搭配windows azure建構可擴展網站

天空的垃圾場