ABONAMENTE VIDEO REDACȚIA
RO
EN
Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 10
Abonament PDF

Migrare website MVC 3 + DB în Azure

Dragoș Andronic
CTO
@TXTFeedback



PROGRAMARE

De curând am avut de luat o decizie - soluţia de hosting folosită de platforma noastră devenea insuficientă pentru nevoile sistemului nostru sau ale clienţilor noştri. Am avut de ales între un server dedicat mai puternic, de fapt o pereche de servere + load balancing şi de a trece pe un hosting tip cloud computing.

Cred că mai multe proiecte/businessuri se confruntă cu această alegere numărul de comentarii la acest articol îmi va dovedi dacă am dreptate sau nu aşa că vă voi prezenta:

  • Procesul decizional/factorii care au contribuit la alegerea windows Azure ca soluţie (de ce Azure şi nu altceva?)
  • Procedura de migrare propriu zisă - ce a fost uşor, ce a fost greu, ce instrumente am folosit.

Alegerea soluţiei de scalare potrivită

Fiecare arhitectură are particularităţile sale, nu căutaţi o reţetă care să se potrivească în toate scenariile, ci mai degrabă căutaţi o soluţie potrivită scenariului vostru. Doar aşa puteţi să maximizaţi ROI-ul (return on investment).

Primul pas e să definim "contextul"

Ce migram mai exact? Arhitectură ce trebuia migrata de noi constă în: un web portal dezvoltat în ASP.net MVC (3 şi 4) având în spate o bază de date ce rula pe MS SQL server ascunsă în spatele Entity Framework.

Deja se întrevăd câteva constrângeri - un SQL Server necesită o maşină ce rulează un OS Windows (Windows Server sau altceva). Pentru web, portalul în ASP.net MVC cel mai facil e să folosim un Windows cu IIS - se poate opta şi pentru un linux dacă alege să rulăm aplicaţia pe mono. Din moment ce bază de date ne obligă să alegem Windows ca OS, pentru a uşura munca de administraţie vom alege Windows/IIS ca hosting.

De ce e acest aspect important? Dacă alegem să construim/închiriem un server dedicat trebuie să instalăm Windows pe această maşină - în funcţie de furnizorul de hosting ales ar trebui să plătim pentru licenţa de Windows (costurile pot fi în jur de 10 eur/lună). De obicei, într-un serviciu de cloud (Amazon EC2, Windows Azure) putem închiria servere dedicate (maşini virtuale) ce vin cu OS-ul Windows preinstalat - nu plătim nimic pentru acest aspect.

Același lucru se aplică în cazul SQL Server: dacă alegem un server dedicat va trebui să instalăm noi SQL serverul (sau să plătim pe cineva să facă asta pentru noi) şi pentru aceasta vom avea din nou nevoie de licenţă - o licenţă de MS SQL Server Web Edition se poate închiria cu ~ 25 eur/lună.

Sumarizand: pentru un server dedicat vom plăti închirierea serverului + licentele de instalare (cumpărăm sau închiriem) - se ajunge la un cost fix, usor de previzionat.

Pentru serviciile de tip cloud tariful e variabil, în funcție de ce mașini/instante folosim și cât de mult le folosim (ore de utilizare). Daca alegem să înlocuim un SQL server cu SQL Azure atunci vom fi taxati în funcție de traficul outbound generat.

Dacă tariful mașina/per numar de ore de utilizare vi se pare greu de cuantificat - nu sunteţi singurii - deşi furnizori de cloud computing ne pun de obicei la dispoziţie "price calculators", s-ar putea să nu dispuneţi de informaţiile necesare pentru a face o estimare. Cel mai bine să faceţi un test real (în măsura posibilităţilor).

Amazon şi Azure pun la oferta dezvoltatorilor programe de trial: http://aws.amazon.com/free/ , respectiv http://www.windowsazure.com/en-us/pricing/free-trial/ ce sunt suficiente pentru a rula câteva teste de performanţă/încărcare ce ne vor ajuta să ne facem o idee asupra costurilor. Si SQL Azure se poate incerca ca trial: http://www.windowsazure.com/en-us/pricing/free-trial/

În momentul cand ati portat arhitectura pe cloud, rulati teste de load/performanta pana atingeti limitele pachetelor trial - in momentul acesta ar trebui sa aveti destule informatii pentru a putea folosi relevant calculatoarele de pret puse la dispozitie de serviciile cloud

Pe scurt: contextul (arhitectură ce trebuie migrată) are o influenţă directă asupra posibilităţilor de migrare şi asupra costurilor - pe un server dedicat costurile de hosting sunt fixe, pe o soluţie tip cloud sunt variabile (din punct de vedere managerial e mult mai uşor să previzionezi un cost fix).

Disclaimer: ca furnizori de cloud computing noi am folosit doar Amazon şi Azure, în principal datorită notorietăţii şi a facilitaţilor oferite startupurilor. Acest lucru nu înseamnă că nu vă puteţi orienta spre altceva: Google App Engine (https://cloud.google.com/) sau furnizori regionali - un search pe un motor de căutare vă va da mai multe detalii. De asemenea, mai mulţi furnizori de servicii regionali oferă facilităţi startupurilor - dacă nu găsiţi informaţii pe site-ul furnizorului, contactaţi direct serviciul lor de vânzări - ei vă vor da toate informaţiile căutate.

Al doilea pas: know-how

Unul dintre avantajele unui server dedicat e că tu te bucuri de toată puterea oferită de acea maşină - şi, pentru moment, obţii un preţ mai bun per processing power alegând un server dedicat în locul unei soluţii cloud.

Unul dintre dezavantajele unui server dedicat e că tu trebuie să te ocupi de administrarea acelei maşini şi să te asiguri că există un plan B, C, D, s.a.m.d. în caz de crash.

Echipa noastă nu deţinea know-how-ul unui system admin/db admin - puteam externaliza aceste taskuri. Dacă doriţi să vedeţi cam cât vă poate costa externalizarea unui serviciu de sistem admin puteţi verifica serviciile oferite de livehosting - cu care noi am lucrat şi de care suntem mulţumiţi - https://www.livehosting.ro/Datacenter/Servere-Dedicate/Administrare-servere.aspx. până când aduceam în echipă un om cu cunoştinţele necesare. Nici una din variante nu ne încântă - un SLA (service level agreement) strict ne obligă să avem în echipa un system admin/db admin la un moment dat, dar nu considerăm că skill setul unui system admin/db admin erau prioritare echipei noastre în acest moment. În alte cuvinte: preferăm să devenim mai buni în ceea ce ştiam deja (dezvoltare web, mobile, linq) decât să ne dezvoltăm pe orizontală învăţând să devenim system admini/ db admini.

Promisiunea serviciilor de tip cloud e transparența scalării şi uşurinţa realizării redundanței - fără cunoştinţele unui administrator de sistem poţi configura un sistem ce respectă un SLA strict şi poate fi scalat cu uşurinţă când va fi nevoie. O astfel de promisiune a fost pe placul nostru.

Şi migrarea în cloud presupune dobândirea de know-how - familiarizarea cu termeni noi (fiecare soluţie cloud foloseşte o terminologie proprie), set de unelte de administrare noi şi mod de lucru.

Dezvoltând o soluţie bazată pe .net şi folosind Visual Studio ca IDE, Azure devine soluția cloud cea mai uşor de folosit - din punctul meu de vedere, Microsoft a făcut o treabă excelentă prin integrarea Windows Azure SDK în Visual Studio aşa că poţi face "aproape" transparent deploy în cloud-ul Azure. "Aproape" e pentru că înainte de a face deploy va trebui să migrezi proiectul. Datorită tehnologiei folosite, Windows Azure şi SQL Azure au devenit soluţiile cloud cel mai uşor de folosit pentru noi.

Când am avut de a face cu website-uri cu backend php am găsit hosting-ul celor de la Amazon a fi uşor de folosit (cât timp nu te sperie configurarea unei maşini Linux) iar modificările ulterioare au fost uşor de făcut.

Vă prezentăm mai jos ceea ce am făcut noi pentru a vedea cât de uşor și cât ne-ar costa să ne administrăm singuri maşinile virtuale față de a administra o soluţie tip cloud:

  • Ne-am documentat la un nivel superficial despre ce ar însemna să configurezi un IIS, să instalezi un load balancer, să instalezi şi să administrezi un SQL server, să pui la punct un sistem de backup/restore pe bază de date. Nu recomandăm nimic în special pe această temă, motoarele de căutare vă vor oferi toate informaţiile necesare.
  • Ne-am educat despre ce înseamnă Azure şi SQL Azure, cum se poate realiza un sistem redundant şi cât de uşor e să scalezi - aici training-urile de pe Pluralsight (www.pluralsight.com) ne-au fost de un real folos şi le recomand cu căldură.
  • Cel mai important, am discutat cu persoane cu experienţă pe administrare servere/Windows Azure - când eşti la început de drum, s-ar putea să nu ştii ce întrebări trebuie să pui - şi aici o persoană cu experienţă te poate ajuta să îţi creezi o imagine realistă legată de efortul necesar.

Notă: buzz word-ul "cloud" a fost şi el un factor în tot procesul decizional - cel puţin la nivel de marketing, pare mai eficient pe termen să adaugi skill set-ului tău abilităţile de a lucra cu o soluţie tip cloud/ a migra proiecte în cloud, decât să înveţi să administrezi servere dedicate.

Pe scurt: să administrezi un server nu e uşor - chiar dacă poţi externaliza administrarea pentru o perioadă, va trebui fie să înveţi, fie să angajezi pe cineva care să facă asta. Într-o soluţie de tip cloud vei investi timp mai mult în faza iniţială pentru setarea sistemului, iar partea de redundanţă, scalabilitate, backup & restore să o externalizezi cloud-ului. Ambele implică costuri şi tradeoff-uri - noi eram relativ fără experienţă în oricare din aceste două domenii, costurile privind acumularea de know how fiind similare. În cazul vostru, dacă aveţi deja experienţa cu una dintre aceste soluţii, decizia poate fi mai uşoară.

Din analiza noastră un server dedicat oferă performanțe mult mai bune/per euro, dacă aveţi experienţa necesară pentru a configura/adminstra un sistem voi înşivă, merită mers pe o soluţie dedicată. Cloud-ul face tranziţia mult mai uşoară pentru un programator - ascunde tot ce înseamnă configurare/administrare maşini virtuale şi procedura de scalare - rămânând că tu să te poţi concentra pe dezvoltarea soluţiei şi nu administrarea hostingului.

Note finale

Am petrecut aproximativ trei săptămâni analizând diferite opţiuni, discutând cu oamenii, participând la training-uri pe Azure şi citind despre administrarea serverelor înainte de a alege Azure. Faptul că am putut testa Azure prin intermediul Bizspark ne-a ajutat mult în a lua o decizie.

Despre cum exact am migrat baza de date pe SQL Azure, web portalul pe Windows Azure, provocările întâlnite şi tool-urile folosite în articolul din numarul viitor.

LANSAREA NUMĂRULUI 149

Marți, 26 Octombrie, ora 18:00

sediul Cognizant

Facebook Meetup StreamEvent YouTube

NUMĂRUL 147 - Automotive

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects