Czy podział potencjalnie monolitycznej aplikacji na kilka mniejszych pomaga zapobiegać błędom
Rzeczy w rzeczywistości rzadko są tak proste.
Podział zdecydowanie nie pomaga przede wszystkim w zapobieganiu tym błędom. Czasami może pomóc w szybszym znajdowaniu błędów. Aplikacja, która składa się z małych, izolowanych komponentów, może pozwolić na bardziej indywidualne testy (tych „jednostek” -) dla tych komponentów, co może czasem ułatwić wykrycie pierwotnej przyczyny niektórych błędów, a tym samym umożliwić ich szybsze usunięcie.
Jednak,
nawet aplikacja, która wydaje się monolityczna z zewnątrz, może składać się z wielu elementów możliwych do przetestowania w jednostce, więc testowanie jednostkowe niekoniecznie jest trudniejsze dla aplikacji monolitycznej
jak już wspomniano Ewan, interakcja kilku składników wprowadza dodatkowe ryzyko i błędy. Debugowanie systemu aplikacji ze złożoną komunikacją międzyprocesową może być znacznie trudniejsze niż debugowanie aplikacji jednoprocesowej
Zależy to również w dużej mierze od tego, jak dobrze większa aplikacja może podzielić się na komponenty, jak szerokie są interfejsy między komponentami i jak te interfejsy są używane.
Krótko mówiąc, często jest to kompromis i nic, w przypadku gdy odpowiedź „tak” lub „nie” jest ogólnie poprawna.
dlaczego programy są zwykle monolityczne
Czy oni? Rozejrzyj się wokół, są tysiące aplikacji internetowych na świecie, które nie wyglądają dla mnie zbyt monolitycznie, wręcz przeciwnie. Istnieje również wiele programów, które zapewniają model wtyczki (AFAIK nawet oprogramowanie Maya, o którym wspomniałeś, robi).
czy nie byłyby łatwiejsze w utrzymaniu
„Łatwiejsza konserwacja” często wynika z faktu, że różne części aplikacji mogą być łatwiej opracowywane przez różne zespoły, dzięki czemu lepiej rozłożone obciążenie, wyspecjalizowane zespoły z wyraźniejszym nastawieniem i dalej.
If the animation and modelling capabilities were split into their own separate application and developed separately, with files being passed between them, would they not be easier to maintain?
Nie mieszaj łatwiejsze do rozszerzenia z łatwiejszym do utrzymania modułem - jeśli nie jest wolny od komplikacji lub wątpliwych projektów. Maya może być piekłem na ziemi, a jej wtyczki nie. Lub odwrotnie.