Sugestie dotyczące architektury zorientowanej na usługi

Z powodów osobistych i uniwersyteckich myślę o zbudowaniu prostego CRM przy użyciu architektury zorientowanej na usługi. Ma to na celu jedynie wyjaśnienie samej architektury, a nie komercyjnego wykorzystania.

Myślałem o wdrożeniu CRM, który oferuje prostą usługę analityczną i obsługę klienta (przechowywanie użytkowników, osobiste komentarze i kilka innych rzeczy).

Architektura, którą projektuję, definiuje: - WebGUI (klient innych usług) - AnalyticsService (usługa, która odbiera dane, analizuje i zbiera je) - CustomerCareService (usługa, która używa RESTful API do stosowania operacji CRUD).

Każda usługa ma własną bazę danych, całkowicie niezależną od innych. Odsłaniają publiczny interfejs. Interfejs oczywiście musi zapewniać pewnego rodzaju uwierzytelnienie, aby odmówić nieautoryzowanym żądaniom.

Zaletami, które chciałbym wyjaśnić w tego rodzaju architekturze, jest możliwość posiadania wszystkich rzeczy niezależnych i możliwość łączenia ich w celu oferowania nowych usług (na przykład, jeśli istniała usługa OrderService do obsługi zamówień, byłoby łatwo połączyć ją z Klient korzystający z publicznych interfejsów API). Dużą zaletą jest to, że łatwo byłoby zbudować innych klientów korzystających z tych usług.

Nie wiem, jaka jest dobra metoda uwierzytelniania, która mogłaby być łatwa do zaimplementowania, nie jestem też pewien, jak tworzyć te interfejsy API (użyj XML lub zwykłych API REST z danymi GET / POST). Pracowałem z Amazon, PayPal i innymi firmowymi interfejsami API, wydaje się, że korzystają z usług REST (paypal używa brzydkiego parametru _ET GET, podczas gdy Amazon używa lepszego URI), aby wiedzieć, co robić, ale czytając coś o SOA, wydaje się, że ludzie również XML. Oczywiście muszę również wziąć pod uwagę, że interfejs sieciowy musi być w stanie rozpoznać zalogowanego użytkownika, uzyskać uprawnienia (token lub cokolwiek innego) i użyć go w usługach do wyświetlania informacji. Więc nie jestem pewien, czy SOA jest rodzajem architektury, którą naprawdę buduję ... czy to SaaS zamiast SOA? Myślę, że lepiej byłoby używać aplikacji RESTful, z JSON lub czymś podobnym do jego implementacji (nie jestem wielkim fanem XML, uważam, że jest zbyt gadatliwy).

Dla jasności wymieniam tutaj moje pytania:

Czy ten rodzaj architektury nazywa się SOA lub SaaS (lub oba)?Jaka jest dobra implementacja tego, co chcę uzyskać? (proszę wyjaśnić to bardziej szczegółowo, jak to możliwe)Jaki rodzaj uwierzytelniania jest bardziej odpowiedni dla klienta (token użytkownika vs OAuth lub podobny)Czy masz jakieś sugestie dotyczące tego rodzaju projektu?

Mam na to 3 miesiące, więc nie mogę zrobić czegoś naprawdę skomplikowanego (poza faktem, że nie byłby to realistyczny dla jednego programisty).

Znam Pythona (frameworki WSGI), Ruby on Rails, C / C ++ i inne języki (z wyłączeniem .net) i chciałbym je rozwijać w środowisku Linux (MySQL lub Postgres, a nawet NoSQL, jeśli masz jakieś sugestie właściwy wybór), mógłbym również połączyć kilka języków, które są programami niezależnymi od tych usług.

Chciałbym tutaj mieć dobry punkt widzenia i dobrą sugestię.

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion