Kann Python eine gute Alternative zu einer Web-App sein, die sonst mit Java EE entwickelt würde? Wenn ja, welche Python Web App Framework (s) könnte eine gute Wahl sein? Bitte lesen Sie Details zur App unten. Ich habe ein paar Leute einzeln dazu befragt, die schon eine ganze Weile an Java EE und Python Web Apps gearbeitet haben und ein paar Antworten bekommen haben, die darauf hinweisen, dass Python keine gute Wahl ist, hauptsächlich aufgrund von Skalierbarkeit, die eine der Anforderungen ist. Der andere Grund war der relative Mangel an Python-Entwicklern in dem Teil der Welt, in dem die App entwickelt wird. Wir könnten vielleicht die zweite überwinden, aber nicht sicher über die erste.
Die fragliche App ist eine Finanzdomäne B2B, mit ein paar verschiedenen Arten von Benutzern (wie in: "Schauspielern" mit verschiedenen realen Rollen - z. B. Käufer, Verkäufer), einige Admin-Benutzer, verwenden ein RDBMS, wird CRUD (Create / Read / Update / Delete) plus Suchfunktionalität für Master-Tabellen, einige Arten von Transaktionen, die sowohl Master- als auch Transaktionstabellen beinhalten (mit ziemlich einfacher, nicht sehr komplexer Logik), und einige Berichte für PDF für die meisten / alle der Suchbilder (Abfragen). Etwa 80 Funktionen, bei denen die Funktionen meist auf Bildschirme in der App abgebildet werden; nicht alle. Es wird auch einige Arten von Batch-Jobs geben, für die geplant ist, sie zu Zeiten auszuführen, zu denen die Benutzer die App nicht verwenden dürfen. Wird JavaScript und AJAX am Frontend haben. Verfügt über die Funktion, E-Mails an Benutzer zu senden, nicht nur für die Anmeldung oder das Zurücksetzen von Kennwörtern, sondern auch für transaktionsbezogene Informationen. Kein programmatisches Lesen von eingehenden E-Mails obwohl.
Ziel ist es schließlich, um ein mittleres Maß an Umfang in Bezug auf die Anzahl der (zahlenden) Benutzer und Transaktionen, nicht sehr hoch, aber nicht zu klein eine Zahl - sagen im Bereich der 10.000 Benutzer, von denen 2000 kann gleichzeitig in einem Zeitrahmen von 15 bis 20 Minuten auf die App zugreifen. Es wird eine SaaS-App (Software as a Service) sein.
Ich weiß, dass die Frage sehr allgemein und offen ist und ich erwarte einige Antworten in der Form "Es kommt darauf an" :) möchte aber immer noch einige Meinungen von Leuten bekommen, die an solchen Dingen gearbeitet haben.
Fühlen Sie sich frei, weitere Fragen zu stellen, wenn nötig, um zu antworten. Ich werde sie beantworten, außer für alles, was vertraulich ist.
Danke.
Bearbeiten 1:
Schätze wirklich alle Antworten. Ich werde mir ein wenig Zeit nehmen, um über sie nachzudenken, und dann mit weiteren Fragen (Original oder als Antwort auf Antworten) oder Kommentaren, falls vorhanden, zurückkommen.
Es ist in der Tat eine sehr gute Alternative. Ihr Projekt klingt für mich so, als würde es ziemlich viele benutzerdefinierte Programme benötigen, die in der Python-Welt darauf hindeuten würden, dass Ihre Web-App auf Pylons basiert ( Ссылка ). Pylons ist hauptsächlich eine Leimschicht, und Sie werden eine Template-Engine und ORM auswählen (versuchen Sie SQLAlchemy ( Ссылка ) für maximale Leistung oder SQLObject ( Ссылка ) für eine etwas einfachere Vorgehensweise) Ebene Ihrer Wahl. Wahrscheinlich möchten Sie die PDFs mit ReporLab ( Ссылка ) erstellen. Für den E-Mail-Bereich werden Sie mit der integrierten E-Mail-Funktionalität von Python einen langen Weg einschlagen (siehe Dokumentation auf Pythons eigener Website).
Edit 1 : Das hast du fast sicher schon gedacht, aber ..: Erfolg hängt natürlich sehr von den Kompetenzen der Entwickler ab, auf die du Zugriff hast, dh wenn der Python bereits bekannt ist, oder sind eifrig und schnell zu lernen. Ich würde sagen, Python ist eine sehr gute Anfängersprache, aber es braucht ein wenig Zeit, um wirklich 'Pythonic' zu werden (grob übersetzt mit Pythons Eigenschaften, zB mit Features wie Generatoren, Listen-Comprehensions, getattr
und setattr
usw. fließend).
Edit 2 : Werfen Sie auch einen Blick auf PyPI, den Python-Paket-Index, Ссылка 'Schaufenster' für Module, die zusätzliche Funktionalität für Sie bieten. Es gibt eine Menge von ihnen.
Jede Sprache / jedes Framework ist eine gute Wahl, wenn es von kompetenten Entwicklern richtig verwendet wird. Manchmal ist die beste Wahl diejenige, mit der Ihr Team am vertrautesten ist.
In Anbetracht Ihres Kundenraums, wenn Sie jedoch in ein Framework mit "höherer Produktivität" wechseln möchten, empfehle ich Grails. Es ist in Groovy implementiert, die Java-Entwickler natürlich aufnehmen können, und verfügt über verschiedene Tools zum Generieren von Kriegen, die in Ihrem bevorzugten Servlet-Container bereitgestellt werden können. Es erfordert viel von der traditionellen J2EE-Entwicklung, solange Sie den Konventionen folgen. Es hat eine Tonne von robusten Plugins für Dinge wie Authentifizierung / Autorisierung. Es wird Ihnen eine Menge Zeit sparen.
Ich denke, Python eignet sich hervorragend für Ihre Anforderungen, und Sie werden die Entwicklung wahrscheinlich viel schneller als mit einer Java-basierten Lösung durchführen.
Es gibt mehrere ausgereifte Python-Webanwendungs-Frameworks. Django ist das beliebteste und wird wahrscheinlich viel von dem, was Sie wollen, aus der Box machen.
Leistung ist wahrscheinlich kein Problem für die Zahlen, die Sie geben - ein Engpass ist wahrscheinlich in der Datenbankzugriff, so dass die Geschwindigkeit der Sprache, die Sie verwenden, weitgehend irrelevant ist. Python ist schnell genug, um YouTube zu verwenden und sie haben um Größenordnungen mehr Nutzer als du. (Wenn Sie keine Zeit haben, die verknüpfte Präsentation anzusehen, sagt der leitende Skalierbarkeitsingenieur bei YouTube, dass 99,999% seines Anwendungscodes in Python geschrieben sind).
Skalierung ist weitgehend unabhängig von Ihrer Sprachwahl, aber ja, Python kann gut skalieren für das, was Sie beschreiben. Viele große Seiten verwenden Python, einschließlich reddit und youtube (hier ist eine kurze schreiben Sie auf, warum Reddit verwendet Python ).
Framework: Django ist ein sehr beliebtes Framework, kommt mit netten Admin-Funktionen, enthält ein ORM, das mit dem Major spricht Datenbanken, enthält viele Funktionen und hat eine lebendige Community, die ständig neue Apps und Erweiterungen hervorbringt. Wir benutzen es und mögen es.
Für deine AJAX / CRUD / Rest-Bedürfnisse schaue dir django-pub einen sauberen Weg an um restbasierte APIs zu erstellen.