Rok temu jako podwykonawca zakodowałem pewien sajt w ASP.NET MVC, działający na bazie danych SQL Server 2005 Express. Niestety nie dostałem pozwolenia na ujawnienie nazwy, gdyż oficjalnie to nie ja go wykonywałem. Mogę mimo wszystko przedstawić kilka faktów już z życia tego projektu.
Po stronie serwera
Projekt technicznie składa się z nastepujących komponentów i technologii:
- ASP.NET MVC 1.0 (pierwsze linie kodu były oparte o wersję Beta3)
- Sooda (tak, tak, Sooda :))
- MS SQL Server 2005 Express
- IIS 6.0 na Windows 2003
Poniżej przedstawiam trochę statystyk. Na pierwszy ogień obciążenie serwera. Jak widać serwer nic nie robi, ale jak zerkniecie na kolejny obrazek zobaczycie, że w sumie ma co robić :)
Statystyki za ostatni miesiąc. W sumie miesiąc w miesiąc jest podobnie.
Ilość jednoczesnych sesji w zależności od pory dnia waha się od 240 do prawie 400. Może to nie są imponujące wyniki, więc tak naprawdę możecie powiedzieć, że nie ma się czym chwalić, ale jak widać serwer ten ma potencjał i przyjmie dużo większe obciążenie. Co za tym idzie dla aplikacji także nie będzie problemu. Średni czas procesora nie przekracza 10%.
Maszyna nie jest powalająca, bo to jeden Xeon 3,4GHz wyposażony w 2 GB RAMu i 6 dysków SATA. Dyski podzielone są na 3 dyski logiczne po dwa dyski fizyczne w mirroringu.
Po stronie przeglądarki
W tym projekcie pierwszy raz użyłem swojego moduliku do optymalizacji kontentu statycznego, który automatycznie zapewnia mi odpowiednie buforowanie cssów i jsów oraz obrazków po stronie klienta oraz robi kilka dodatkowych rzeczy. Pochwaliłem się nim na blogu Jakuba Binkowskiego. Dlatego też więcej o tym module w kolejnym poście, a tym czasem przedstawiam poniżej test YSlow.
Wynik A jest 'całkiem' zadowalający. :) Ogólnie stwierdzam, że sprawdził się (jak i przetestował i to solidnie :)). Od tamtego czasu używam go nawet do mniejszych projektów dzięki czemu klienci oszczędzają na przepustowości łącza.
Drugą sprawą jest uruchamianie projektu MVC na IIS 6.0 o czym pisał na przykład Darek Tarczyński (patrz metoda 1). Stąd poniekąd narodził się pomysł stworzenia modułu, który pracowałby jako odrębna aplikacja, a powyższe obrazki pokazują, że się da :)
Podsumowując
ASP.NET MVC mimo, że to bardzo młody projekt nie ma najmniejszych problemów z wydajnością. Jeśli należało by gdzieś szukać problemów to zaczął bym
od optymalizacji bazy danych i wykonywanych zapytań. Zazwyczaj jest
to pierwsze miejsce, gdzie powstaje wąskie gardło.
Jeśli ktoś planuje uruchomić startup na takiej platformie to nie powinien mieć żadnych obaw. Ja nawet był powiedział - użycie MVC jest wskazane ze względu na możliwość dopieszczania kodu w każdym detalu :)
PS
Oczywiście dużo lepszym przykładem działania startupa na mvc będzie stackoverflow.com. O historii i przemianach można poczytać na ich blogu. Polecam :)
Jeśli spodobał Ci się ten artykuł, to podziel się tą informacją z innymi.