Skip to main content

Cloud: Pret estimativ Windows Azure, Amazon, Google

Cu cateva saptamani in urma am fost la o prezentare tinuta de C. Jichici cu tema Windows Azure, iar apoi am tinut doua prezentari pe aceiasi tema. Intrebarea pe care am auzit-o cel mai des a fost: Cat costa estimativ?
Am incercat sa caut niste costuri estimative dar nu am gasit. Am realizat ca un calcul estimativ este foarte greu de facut, deoarece fiecare solutie pentru cloud( Azure, Amazon, Google) are costuri ascunse si/sau modul de calcul este foarte diferit.
O sa incerc sa fac un calcul estimativ pentru un set de cerinte pe care o sa le enumar mai jos. Vreau sa subliniez faptul ca aceste costuri sunt pur estimative, vreau sa fie doar un punct de pornire. O sa fac calcul pentru 4 variante: Azure, Amazon, Google si costul unui server propriu-zis.

Cerinte pentru o aplicatie pe perioada unei luni:

Trafic out

100Gb

Trafic in

20Gb

Spatiu de stocare

20Gb

Spatiu de stocare in db

2Gb

Numar de tranzactii total(db+fisiere stocate)

1,000,000

Compute time

62

In urma calculelor estimative pe care le-am facut am obtinut urmatoarele costuri pentru un an de zile:

Tip Resursa

Cantitate lunara

Azure

Amazon

Google

Spatiu de stocare

20Gb

36$

36$

36$

Spatiu de stocare in db

2Gb

600$

9372$

3.6$

Trafic in

20Gb

24$

24$

24$

Trafic out

100Gb

180$

180$

144$

Numar de tranzactii total(db+fisiere stocate)

1,000,000

120$

120$

278.4$

Compute time

62h

89.38$

70.68$

74.4$

Total impreuna cu db dedicat


1049.38$

9802.68$

282$

Total fata db dedicat


449.38

430.68

282$


Trebuie sa tinem cont de faptul ca:

  • Amazon ofera spatiu de stocare gratis pana 1Gb, pe un sistem de stocare propiu;
  • Google are un db implementat in modelul datelor de tip table din Windows Azure;
  • Pretul pe luna pe Azure la db pana la 1Gb este de 9.99$, iar intre 1Gb si 5Gb este 49.9$;

Din aceasta cauza am calculat datele finale si fara spatiu de stocare pentru baza de date.
Costurile estimative timp de un an in cazul in care se achiziționează un server fizic:

Server

Server HP ProLiant ML110 G6 cu procesor CoreTM2 Quad Intel® Xeon® X3430 2.40GHz, 2x2GB, 2x500GB

900$

Licenta Windows

Windows 2008 Server RC2

700

Licenta Db

Sql Server 2008

900

Curent+Chirie spatiu


200

Cost administrator


460


Total

3160

Cel mai interesant este costul unei baze de date pe Amazon, dar acest lucru nu imi este foarte clar. Am gasit referinte unde se precizeaza ca primele 25h sunt gratis, iar apoi se plateste pentru fiecare instanta in parte.

Fiecare varianta are avantaje si dezavantaje.

Windows Azure: Se poate rula orice aplicatie, nu conteaza limbajul in care a fost scris, dar se plateste fiecare lucru in parte. Esti taxat pentru orice lucru pe care il faci. Desi in prima faza poate fi vazut ca un dezavantaj, in final platesti doar ce consumi. Mi se pare ca au sisteme care sunt cele mai scalabile pe orizontala si platesti doar ce consumi si atat.

Amazon: Poti sa instalezi orice pe instante, se aseamana foarte mult cu Azure, dar ai masini virtuale, asa numitele “virtual core” care au niste valori prestabilite. Scalabilitate destul de mare, dar exista niste limitari la resurse din cauza masinilor virtuale. Nu ai de fapt instante fizice, ci instante virtuale.

Google: Ieftin, un concurent care ofera niste preturi foarte mici. Sistemul de db este unul propiu, nu zic ca nu este bun, dar se aseamana foarte mult cu table-ul din Azure. Esti limitat la Python si/sau Java. Sistemul pe care lucreaza este mult mai restrictiv decat Amazon sau Azure. Poate din cauza ca Amazon ruleaza pe Windows sau Linux, iar Azure pe Windows Azure( Stiu ca Google ruleaza pe un kernel de Linux custom).

Ce as alege eu, Amazon sau Azure?. Inclin spre Azure deoarece are un sistem de operare special pentru Cloud, bazat pe Windows 2008 Server, dar nu sunt in totalitate convins. Trebuie sa studiez putin si Amazon si sa vad cauza pentru care costul la db este atat de mare.
Si totusi de ce nu as alege Google, pretul pe care l-am obtinut este extrem de mic, chiar daca am limitari, ca si client mic as putea sa traiesc si cu aceste limitari si sa scot mai putini bani.
Fiecare solutie acopera o anumita nisa. Din punctul acesta de vedere in momentul de fata(raportat la clienti si la ceea ce ofera fiecare solutie in parte):
  • aplicatii mici si medi: Google;
  • aplicatii mici si medi care se pot scala spre aplicati mari: Azure;
  • aplicatii mari unde sunt bani din belsug: Amazon;
Dar trebuie sa tinem cont de faptul ca Azure nu este de foarte mult timp pe piata, in comparatie cu Amazon. Microsoft din cate vad respecta strategia de marketing care au avut-o cu toate produsele si vor sa prinda masa de client. Nu cauta o nisa de clienti in parte.
Nu o sa inchid acest post. Sper sa primesc un feedback din partea voastra si sa actualizez costurile estimative pe care le-am obtinut.
Stiu ca exista si alte soluti, dar va las si pe voi sa calculati.
Daca aveti timp recomand sa cititi: http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure Desi este un articol mai vechi, contine niste informații destul de interesante.
PS: O sa revin weekend-ul acesta cu o scurta prezentare: Windows Azure.

Comments

Popular posts from this blog

Windows Docker Containers can make WIN32 API calls, use COM and ASP.NET WebForms

After the last post , I received two interesting questions related to Docker and Windows. People were interested if we do Win32 API calls from a Docker container and if there is support for COM. WIN32 Support To test calls to WIN32 API, let’s try to populate SYSTEM_INFO class. [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } ... [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO pSI); ... SYSTEM_INFO pSI = new SYSTEM_INFO(

Azure AD and AWS Cognito side-by-side

In the last few weeks, I was involved in multiple opportunities on Microsoft Azure and Amazon, where we had to analyse AWS Cognito, Azure AD and other solutions that are available on the market. I decided to consolidate in one post all features and differences that I identified for both of them that we should need to take into account. Take into account that Azure AD is an identity and access management services well integrated with Microsoft stack. In comparison, AWS Cognito is just a user sign-up, sign-in and access control and nothing more. The focus is not on the main features, is more on small things that can make a difference when you want to decide where we want to store and manage our users.  This information might be useful in the future when we need to decide where we want to keep and manage our users.  Feature Azure AD (B2C, B2C) AWS Cognito Access token lifetime Default 1h – the value is configurable 1h – cannot be modified

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine: threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration: TeamCity .NET 4.51 EF 6.0.2 VS2013 It see