Warum wir es lieben, Anwendungen mit Python und dem Framework Django zu entwickeln?
Für die Eiligen: Django ist effizient, zuverlässig und ermöglicht uns Deadlines zu halten, auch wenn es mal eng wird. Im Folgenden ein paar mehr Hintergründe, warum wir Python und Django lieben.
Einige Unterschiede Python, PHP, Ruby
Es gibt in der Softwareentwicklung und auch bei Skriptsprachen stetig Veränderungen, da sich Konzepte und auch die Sprachen weiterentwickeln. Im Bereich der Webentwicklung gibt es eine große Menge unterschiedlicher Sprachen und Konzepte, die häufig einem Trend folgen oder spezielle Probleme lösen.
Einige „Klassiker“, wie PHP, Python oder Ruby sind allerdings nicht mehr wegzudenken. Sie gehören laut Statistiken zu den beliebtesten Programmiersprachen und haben sich über die Jahre als Platzhirsche etabliert, jede mit eigenen Vorzügen oder Nachteilen. Auf Udemy gab es zum Beispiel schon 2012 einen entsprechenden Vergleich. Der aktuelle Tiobe-Index vom April 2016 sieht Python inzwischen vor PHP. Das macht deutlich, es gibt nicht die eine richtige Sprache, es gibt allerdings für spezielle Anforderungen, wie beispielsweise bestimmte Anwendungsfunktionen, Systemanforderungen oder Infrastrukturen häufig einen am besten geeigneten Kandidaten.
Vorzüge von Python
Wir haben hier bei Webrunners in Köln seit 2008 sehr gute Erfahrungen mit der Entwicklung in Python gemacht, da es im Bereich von Geschäftsanwendung und Unternehmenssoftware einige Vorzüge mitbringt. Auch die Tatsache, dass Google, Youtube, das CERN, die NASA und andere große Unternehmen auf Python setzen, spricht für die Sprache.
1. Klare Syntax
Neben der klaren Syntax von Python, die sehr zur Lesbarkeit des Codes beiträgt, sprechen aus unserer Sicht noch einige weitere Aspekte für die Sprache, die in den 90er Jahren von Guido von Rossum entwickelt wurde. Es handelt sich um eine objektorientierte Sprache, sie unterstützt allerdings auch andere Programmierparadigmen, wie aspektorientierte oder funktionale Entwicklung.
2. Vielseitigkeit
Im Vergleich zu Programmiersprachen wie beispielsweise C(++) oder Java lassen sich mit Python und der Unterstützung durch Django viel schneller „erwachsene“ Anwendungen entwickeln. Python wird nicht nur zur implementieren von Webanwendungen verwendet, sondern hat sich in den letzten Jahren dank Bibliotheken wie SciPy und NumPy auch zu einer der führenden Sprachen in der Wissenschaft und Datenanlyse bzw. des datengetriebenen Maschienenlernens entwickelt. Beim Entwickeln einer webbasierten Unternehmensoftware auf Python Basis steht somit eine riesige Auswahl an kostenlosen Bibliotheken zur Datenanalyse und Weiterverabreitung zur Verfügung.
Dennoch ist es ebenso möglich, im Bereich der Server- und Systemverwaltung mittels Python als Skriptsprache Prozesse zu automatisieren.
3. Plattformunabhängigkeit
Durch diese vielseitigen Einsatzmöglichkeiten und die Tatsache, dass Python für die meisten Betriebssysteme zur Verfügung steht, ist die Integration in unterschiedlichsten Unternehmensbereichen gut möglich. Unter anderem in Linux, Unix und OS X ist es in der Regel bereits an Bord, für Windows und weitere ist es verfügbar.
4. Umfangreiche Modul-Bibliothek
Für die Lösung von „Klassikern“ in Anwendungen, gibt es bereits eine sehr umfangreiche Standardbibliothek mit vielfach bewährten Modulen. Die Nutzung von Modulen in der Entwicklung bringt einige Vorteile mit sich, sowohl für den Entwickler, als auch für den Auftraggeber.
Aus Entwicklersicht hilft das Modul, ein definiertes Problem schnell, gekapselt und sicher lösen zu können, ohne sich zwingend in einen unter Umständen völlig neuen Kontext einarbeiten zu müssen.
Für Auftraggeber, Kunden und Produktverantwortliche sind Aspekte wie Wartung, Weiterentwicklung und Betreuung von Software ein absolut relevantes Thema, das sich nicht zuletzt auch im Maintenance-Budget einer laufende Anwendung niederschlägt. Module aus Standardbibliotheken werden in der Regel aus der Community betreut und mit Sicherheitsupdates versorgt. Dadurch bleibt schon durch regelmäßige Wartung der Modul-Basis die Anwendung ohne großen Aufwand aktuell.
Einige Webframeworks
Für alle oben genante Sprachen gibt es Frameworks, die ähnlich der Standardbibliothek von Python die Entwicklung von individueller Software und Webanwendungen erheblich vereinfachen. Außerdem werden Anwendungen durch die Frameworks in der Regel robuster und die Entwicklungsdauer verkürzt sich. Dies liegt vor allem daran, dass auch hier wiederkehrende Probleme wie zum Beispiel Benutzterverwaltung und Berechtigungskonzept, Datenpersistierung und weitere Standardprobleme sauber gelöst und erprobt wurden. Durch Einsatz des etablierten Django Rest Frameworks lassen sich sehr einfach Schnittstellen in vielen Formaten bereit stellen und konsumieren, so dass sich die Anwendung schnell mit Drittsystemen verküpfen kann und auch beim Entwickeln von modernen SinglePage Applications oder nativen mobile Apps verwendet werden kann.
Was beispielsweise für PHP Symfony und für Ruby Rails, ist für Python das Framework Django. Sicher gibt es für jede der Sprachen auch andere Entwicklungsframeworks, die genannten sind aber bekannt und weit verbreitet.
Stärken von Django
Das Web Application Framework Django wird häufig häufig betitelt mit „The web framework for perfectionists with deadlines“. Diese Assoziation kommt wohl daher, dass es ursprünglich entwickelt wurde um genau dies zu erreichen – die News-Seite eines Nachrichtenportals zu verwalten und auszuliefern.
Django ist eine freie Software, das bedeutet, es fallen zum einen für die Nutzung keine Lizenzkosten an. Zum anderen wird es durch mehr als 40 Core-Entwickler und eine große und aktive Community weiterentwickelt und stetig verbessert. Somit ist dessen Zukunft nicht von einem einzelnen Unternehmen oder Team abhängig, steht aber für Verlässlichkeit, Sicherheit und eine hervorragende Qualität. Auch steht dadurch bereits eine beachtliche Auswahl von Erweiterungen für jeden erdenklichen Zweck zur Verfügung.
5. Hilfreiche Eigenschaften von Django
Da klassische Desktop-Software zunehmend von Webanwendungen ersetzt wird, hilft Django mit seinen Konventionen bei der Entwicklung professioneller Unternehmens-Anwendungen.
Unter anderem das konsequent umgesetzte MVC-Prinzip (Model-View-Controller Konzept, heißt bei Django allerdings Model-Template-View) hilft bei der sauberen Strukturierung von Projekten und der Einhaltung des DRY-Prinzips (Don’t repeat yourself ). Dies, ganz im Sinne von Python, erhöht die Lesbarkeit von Anwendungen für Entwickler und vereinfacht somit auch die Einarbeitung in fremde Projekte.
6. Hervorragende Dokumentation
Die Dokumentation ist hervorragend und es gibt gute Literatur, die den Einstieg erleichtern. Die Kombination aus sauberem Code, klaren Konventionen und guter Dokumentation bringt somit auch für Kunden und Auftraggeber einen großen Nutzen. So können mit Python Django umgesetzte Anwendungen selber oder durch andere Entwickler vergleichsweise einfach weiterentwickelt werden.
7. Geschätzt auch von den Großen
Da das Django-Framework gut skaliert, schnell und sicher ist, arbeitet es unter der Motorhaube vieler großer und bekannter Seiten. So nutzen beispielsweise Schwergewichte wie Instagram, Mozilla, Pinterest, die NASA, Rdio oder Disqus die Vorteile dieses Web-Frameworks. Das schafft das Vertrauen, dass auch wir nicht ganz falsch liegen können.
Die Eigenschaft, dass sich fast jedes Merkmal einfach erweitern lässt, ohne den Quellcode des Frameworks zu verändern, hat sicherlich ebenfalls dazu beigetragen.
8. Migrationen und andere Helfer
Für Entwickler, Administratoren oder DevOps sind Eigenschaften wie Migrationen der Datenbank eine große Erleichterung. Durch sie werden Daten auch bei Änderungen an der Datenbank-Struktur im Entwicklungsverlauf automatisch in die neue Struktur überführt. Dies vereinfacht beispielsweise neben der parallelen Entwicklung durch verschiedene Programmierer auch das Deployment von Anwendungen. Werden Anwendungen weiterentwickelt und angepasst, können durch solche Konzepte und den dadurch veringerten Aufwand regelmäßig, in kürzeren Abständen und automatisiert neue Funktionen und Änderungen in Produktivumgebungen ausgerollt werden.
Einzelne Module heißen bei Django Apps, können Funktionalitäten kapseln und aktiviert oder deaktiviert werden. Dieser modulare Ansatz ermöglicht beispielsweise in einem Geschäftsmodell mit einer Produktmatrix unterschiedliche Funktionen bei verschiedenen Kunden zu aktiveren, sofern die Apps keine Ko-Abhängigkeiten besitzen. Einmal erstellte Apps können wiederverwendet werden und miteinander kombiniert werden.
Die Abstraktion des Datenbank-Zugriffes ist eine der maßgeblichen Eigenschaften aktueller Web-Frameworks, auch Django macht hier keine Ausnahme: Durch einen ORM (Objekt-Relationen Mapper) kann die DB-Struktur als Python-Klassen definiert werden. Somit entfällt die Notwendigkeit SQL Statements zu schreiben und das verwendete DBMS (Datenbank Management System) kann prinzipiell ersetzt werden. So ist theoretisch auch ein späterer Wechsel von beispielsweise MySQL zu Oracle oder PostgreSQL möglich.
Bei Bedarf stellt Django standardmäßig ein Admin-Interface zur Verwaltung der Datenbank-Inhalte bereit, dass angepasst und erweitert werden kann. So steht beispielsweise sofort Inhaltspflege oder eine Benutzerverwaltung zur Verfügung. Die Unterstützung von Lokalisierung und Internationalisierung ist im Framework ebenso vorhanden, wie eingebautes Caching oder RSS- und Atom-Feeds.
9. Sicherheitskonzepte
Das Routing und die Erzeugung von sprechenden URLs ist durch reguläre Ausdrücke ebenso anpassbar, wie die Erweiterung von HTML-Templates mit Django-spezifischen Tags. Dabei legt Django bereits von Haus aus hohen Wert auf Sicherheit: Im Unterschied zu anderen Frameworks erwartet Django das explizite konfigurieren der URLs, wodurch unerwartete und unbefugte Zugriffe auf Dateien verhindert werden. Auch beispielsweise der standardmäßig aktivierte Schutz vor Cross Site Request Forgery härtet mit Django entwickelte Anwendungen.
Die strikte Trennung von Medien- beziehungsweise statischen Dateien und der Programmlogik ermöglichen „ganz nebenbei“ die einfache Verwendung eines CDN (Content Delivery Network) oder die Nutzung unterschiedlicher Cloud-Services innerhalb der gleichen Anwendung. Dies kann ebenfalls für eine optimierte Performance oder höhere Skalierbarkeit eingesetzt werden.
Fazit
Uns begleitet hier in Köln das Doppelpack Python und Django seit 2008. Wir haben bereits einige Anwendungen damit gebaut und können rückblickend sagen, da haben wir mit Sicherheit auf das richtige Pferd gesetzt.
Auch aus Sicht eines Projektverantwortlichen hat sich die Entwicklung, Wartung und Betreuung der Anwendungen als zuverlässig und gut planbar herausgestellt. Dies ist sowohl für unsere Kunden wichtig, als auch für uns als Dienstleister entspannt – wissen wir doch, dass Projekte und Anwendungen laufen wie geplant.