Wpis z mikrobloga

Hej, chcę stworzyć aplikację, która będzie służyć do agregacji i ujednolicenia pewnych danych z zewnętrznych systemów. Zewnętrzne systemy udostępniają dane za pomocą API. Z niektórych systemów aplikacja ma też korzystać z webhooków, ale niektóre ich nie udostępniają. Generalnie mój problem leży w tym, że chcę tą aplikację stworzyć z głową tak, aby była w miarę dobrze skalowalna. Struktura danych na pewno będzie różna w zależności od systemu, tak samo z metodami autoryzacji, niektóre systemy mogą udostępniać dane za pomocą SOAP. Problem też będzie z wersjonowaniem API tych systemów(będą mogły być używane jednocześnie różne wersje API). Chcę, żeby można było w miarę bezinwazyjnie dodawać nowe serwisy itp. Możecie podrzucić jakieś pomysły jak się do tego zabrać? Jakieś materiały o przydatnych do tego wzorcach projektowych bo jak na razie to nie mam pomysłu jak to ogarnąć. Z napisaniem tego nie miałbym problemów ale już ze zrobieniem tego jak należy to pewnie będzie problem.
Pewnie to nieistotne ale aplikacja będzie prawdopodobnie w PHP(Laravel).
#programowanie #php #wzorceprojektowe
  • 2
@cinek181992: Napisz sobie moduły do obsługi każdego z tych zewnętrznych systemów wykorzystując ten sam interfejs danych wejściowych i wyjściowych (wzorce Strategia/Adapter), w ten sposób ujednolicisz interfejs komunikacji. W głównej aplikacji wywołując konkretne metody interfejsu nie będzie Cię interesowało jak to jest dalej realizowane byle format danych się zgadzał. Nim bardziej zróżnicowane API zewnętrznych systemów tym trudniej coś takiego zrobić ale da radę.
@cinek181992: Poważnie bym się zastanowił nad pisaniem takiej aplikacji na gotowym frameworku ze sztywną architekturą i strukturą. Możesz go śmiało wykorzystać do serwisu klienckiego, ale zbieranie i ujednolicanie danych bym zorganizował jako osobny mikroserwis (który może wystawiać swoje własne API) z własną architekturą dopasowaną do twojego problemu.

Jak jest dużo wejśc lub wyjść do jakiegoś systemu to na pierwszy rzut oka pasuje tutaj Hexagonal Architecture (zwana także Ports & Adapters), możesz