2011-04-29 14 views
16

Próbuję skupić się na procesie myślowym podczas projektowania aplikacji na dużą skalę.Jak określić architekturę rozproszoną?

Załóżmy, że mam klienta, który potrzebuje nowej witryny klienta i szacuje 40 000 zamówień dziennie z 25 000 już użytkowników. Podczas projektowania aplikacji, jak można ustalić, czy potrzebny jest rozproszony projekt architekta? Czy powinienem używać farmy internetowej? itd.

W przeszłości tworzyłem głównie aplikacje dwuwarstwowe (fizyczne) i naprawdę chcę poprawić swoje zrozumienie.

Każdy wgląd byłby świetny!

+4

Najlepsza wskazówka: zdobyć kogoś na pokładzie ze sprawdzonym doświadczeniem w terenie. W przeciwnym razie nie podejmuj żadnych głupich decyzji dotyczących projektu i nie skaluj go w razie potrzeby. Ale trudno jest poznać głupiego z rozsądku bez doświadczenia – sehe

+0

+1 na komentarz @ sehe - potrzebujesz pomocy od kogoś, kto wie, co robi – BrandonZeider

+0

Chociaż zgadzam się z wami (sehe i BrandonZeider) nie każdy ma możliwość zrobienia tego, co sugerujesz. – e36M3

Odpowiedz

2

Będzie to zależało od wielu innych czynników niż tylko liczba zamówień dziennie. Gdzie będzie obsługiwany? Jak wygląda ta fizyczna architektura? Co jeszcze robi aplikacja oprócz e-commerce? Czy musi zintegrować się z innymi aplikacjami (poza oczywiście bramami płatniczymi)? Itd.

Prosta aplikacja dwuwarstwowa w odpowiednim środowisku hostingu chmurowego (np. VMware na przykład), która może dynamicznie skalować, działałaby dobrze dla witryny e-commerce. Prosta aplikacja dwupoziomowa w lokalnym środowisku hostingowym (zrównoważona farma sieciowa) również powinna działać dobrze na stronie e-commerce. Jest to różnica między skalowaniem w górę (potencjalnie ukrytym w przypadku wirtualizacji, która kończy się jako skalowalność) i skalowaniem (dodawanie kolejnych serwerów).

Rozproszona architektura umożliwia dystrybucję obciążenia systemu (np. Przetwarzanie zamówień) na 1: M serwery (być może) za równoważnikiem obciążenia. Jest to bardzo powszechne podejście, które również sprawdzi się bardzo dobrze w przypadku witryny e-commerce.

Moim zdaniem, nie ma jednego projektu architektury lub systemu, który pasowałby do każdej formy. Najbliższa architektura pasująca do każdej formy (znowu, moim zdaniem) byłaby architekturą zorientowaną na usługi. Jeśli wszystkie procesy biznesowe i logika są usługami (i są właściwie zaprojektowane), to bez względu na to, jak zmieniają się Twoje wymagania, bez względu na to, jak wygląda twoje środowisko hostingowe lub czy się zmienia, bez względu na to, jakie masz wymagania integracji, twój system może sobie z tym poradzić lub bez zmian.

6

Załaduj Przetestuj nową aplikację od początku.

Ponieważ wykonanie dużego projektu z przodu nigdy nie przyniesie oczekiwanych rezultatów (ponad 15 lat doświadczenia), najlepszą rzeczą do zrobienia jest zaprojektowanie dla zmiany i stworzenie odpowiedniej architektury z własnych wymagań .

Biorąc pod uwagę twój opis, zastosuj zwinną metodologię dla tego projektu i wykorzystaj jego praktyki, aby poprowadzić swój projekt do sukcesu. Jedną z tych zasadniczych praktyk jest posiadanie "Definicji Zrobionego" dla całej pracy, którą wykonujesz. Wyraźnie w DoD będziesz miał przedmiot:

  • musi zdać test obciążenia (40.000 zleceń; 25,000 użytkowników dziennie).

Jak można by zacząć rozwój, jedną z pierwszych rzeczy do zrobienia jest oczywiście skonfigurowanie środowiska, aby móc przeprowadzić taki test obciążenia. Jeśli to się nigdy nie zdarza, już na wczesnym etapie projektu wiesz, że będziesz miał kłopoty. Po przeprowadzeniu testu obciążenia tyle razy, ile potrzeba (przynajmniej raz na każdy sprint), będziesz wiedział, że wymaganie skali jest/może być obsługiwane przez twoją architekturę.

HTH

1

Skalowanie można rozwiązać, przynajmniej częściowo, z równoważenia obciążenia.

Współbieżność może być Twoim prawdziwym problemem. Transakcje rozproszone są ciężkim narzędziem, ale nie rozwiążą każdego przypadku użycia bez dodatkowych przemyśleń.

Niektóre firmy finansowe mają dodatkowe wymagania bezpieczeństwa dotyczące serwerów sieciowych mających bezpośredni dostęp do bazy danych.

2

Ponieważ kodujesz .Net, umieść aplikację na platformie Azure (człowiek da cLOUD, DA CLOUD!;).

Pomoże Ci uzyskać moc obliczeniową, której będziesz potrzebować. Aplikacja będzie działać tak długo, jak długo nie popełnisz głupich błędów.

Powiązane problemy