Iteam
GitHub

SQL Azure har blivit moget för skarp drift? Del 1 av 2

Efterlängtad elastisk arkitektur

Innan jul gjorde vi vårt första skarpa test av Microsofts Azure plattform. Vi gjorde enklare tester och blev väldigt imponerade över både enkelheten och skalbarheten. För till skillnad från Amazon och deras EC2 tjänst så har Microsoft gjort det som vi längtat efter – nämligen plockat bort själva operativsystemet från ekvationen. I Amazons molntjänst och de allra flesta andra tjänsterna behöver du som sajtägare planera din arkitektur på ett sätt så att du inte har någon enskild flaskhals. När man pratar webbservrar är detta inget större problem då de redan är parallella i sin uppbyggnad från början och har därmed inget större problem med att läggas på olika fysiska eller virtuella maskiner och kan därmed enkelt skalas upp och ner när belastningen kommer och går. Databaser är däremot inte lika enkla att skala eftersom de skriver och läser till samma datakälla och kan därför inte ligga på olika fysiska maskiner utan rätt mycket licenser, hårdvara och konfiguration vilket gör det väldigt svårt och dyrbart att ta från liten /Drift till stor /Drift.

Det stora problemet med att skala arkitektur är att man oftast behöver dimensionera maskinerna till den maximala belastning som kan komma i samband med högtryck efter en lansering eller marknadssatsning, s.k. peak-hours.  

Här kommer SQL Azure in i bilden – för istället för att skapa en windowsmaskin, fjärrstyra och installera SQL Server så kan du i Microsofts moln skapa en logisk SQL server som ligger virtuellt och tilldelas minne och CPU beroende på belastning. Du behöver inte själv ta hand om upp och framför allt nedskalning av din arkitektur – det sköter sig självt. Tekniken kallas elastisk arkitektur och i dagsläget är Microsoft SQL Azure det enda alternativet för denna typ av logisk virtualisering för SQL Server.


Endast de viktigaste funktionerna finns tillgängliga

Nackdelen med att använda denna elastiska SQL lösning är att man har fått skala bort mycket av den extra funktionalitet som finns i en vanlig SQL Server installation, till exempel kan du inte använda Fulltext index eller andra mer avancerade index, inga XP_ stored procedures finns kvar, de flestsa du inte har tillgång till alla avancerade funktioner i SQL Server utan får nöja dig med det enklaste från plattformen men 99% av alla webbtjänster använder endast de enklaste funktionerna ändå.

Om ni är osäkra på vilka funktioner som finns och om er lösning går att köra i molnet så är det enklaste sättet att installera Microsoft Azure SDK som innehåller en virtuell maskin som simulerar molnets miljö lokalt i Visual Studio. Det gör att du kan utveckla, debugga och utvärdera lokalt utan att behöva ladda upp lösningen till molnet.

Vi gjorde ett test på en av våra utvecklade sajter och efter lite trial-and-error lyckades vi köra hela webbplatsen i molnet. De nackdelar vi då upplevde var:

1.      Ingen möjlighet att använda fullständiga managementverktyg för att administrera databasen

2.      För simpelt gränssnitt med bristande översikt över alla instanser, databaser osv.

3.      Dålig dokumentation

4.      Svårt att hitta rätt i djungeln mellan Microsofts tillgängliga webbplatser för Azure - portaler, azure sajter, partnersajter, osv.

5.      Ingen möjlighet till backup/restore i gränssnittet

Av ovanstående nackdelar har en hel del hänt bara den senaste månaden:

1.      Numera finns det en webbaserat verktyg som är byggt i Silverlight och fungerar utmärkt bra för databasadministration. Verktyget hittar man på adressen:https://manage-db3.sql.azure.com/

2.      För övrig administration av webbplatser, översikt av brandväggsregler, användare, connection-strings, vpn, virtuella servrar och logisk uppdelning av sql-databaser etc.https://windows.azure.com/. Lägg speciellt märke till den häftiga 3d-kuben som visar status på databasen just nu. ;)

3.      Tyvärr är dokumentationen fortfarande ganska bristfällig men blir bättre varje dag

4.      Det är fortfarande svårt att hitta rätt mellan Microsofts olika sajter men för billing och subscriptions är det denna som gäller just nu:https://mocp.microsoftonline.com och för alla övriga ärenden kan man börja medhttp://windows.azure.com

5.      Backup finns inbyggt i tjänsten men endast för hårdvarufel och fel som uppstår på grund av Microsoft, det går inte att begära en backup ”från igår” om man har klantat sig själv eller har andra manuella behov av restore. För detta behöver man sätta upp en backup-strategi som antingen innebär en synkroniserad flytt till en annan virtuell databas eller synkronisera till en egen fysisk maskin och därifrån ta backup ”som vanligt”. Läs mer om backupstrategier här:http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-backup-and-restore-strategy.aspx

Vi kommer återkomma till denna teknik i del 2 då vi avser göra test av prestanda och skalbarhet.

Christian Landgren
2011-02-23