Industrie: Softwareentwicklung
Verwendete JetBrains-Produkte: PyCharm
Organisationsgröße: 500+
Land: International
„In Bezug auf die unterstützte Funktionalität bietet PyCharm unzählige Vorteile im Vergleich zu Texteditoren. Bei der Python-Entwicklung hebt sich PyCharm durch Features wie Remote-Debugging, Prüfungen zur Codequalität und Integrationen für Drittanbieter-Software wie Docker und Kubernetes ganz klar ab.“
— Swapnil Kulkarni, aktiver Technologie-Mitwirkender, OpenStack
Ich habe über 12 Jahre Erfahrung in der Softwareentwicklung. Ich wirke seit mehr als 4 Jahren im Containerteam der OpenStack-Community mit und habe an mehreren Anwendungsfällen mitgearbeitet, bei denen das Container-Ökosystem in OpenStack eingesetzt wird, beispielsweise dem vollständig containerisierten Deployment von OpenStack im Kolla-Projekt. Ich arbeite auch als Core-Reviewer im OpenStack-Requirements-Team.
OpenStack startete als Open-Source-Cloud-Betriebssystem; die ersten Beiträge kamen von der NASA und von Rackspace. Es bot eine dringend notwendige alternative Plattform für Unternehmen, die eine quelloffene Private Cloud benötigten. Zu Beginn gab es nur eine Compute- (Nova) und eine Object-Storage-Komponente (Swift). Seitdem sind mehr als 250 Technologiepartner mit aktivem Entwicklungspersonal hinzugekommen, die zu verschiedenen Features beigetragen haben, um das Projekt zu einer sinnvollen Alternative im Bereich Private-Cloud-Deployment zu machen.
OpenStack ist in mehr als 187 Ländern aktiv und verfügt auf allen Kontinenten sowohl über eine Entwicklergemeinde als auch eine Betreiberbasis. Die Einsatzfälle sind vielfältig und reichen von kleinen Entwicklungsclustern mit einer einstelligen Knotenzahl bis hin zu Großclustern mit Tausenden Knoten, beispielsweise für eines der größten CERN-Labore.
Die verschiedenen Projekte, Initiativen und Events im OpenStack-Ökosystem stehen unter der Leitung der OpenStack Foundation. Der im OpenDev-Repository verwaltete Quellcode wird auf GitHub gespiegelt, und für alle Reviews wird Gerrit verwendet. Die technischen Entscheidungen in Bezug auf die Projekte und die Community werden vom Technischen Komitee getroffen, das in einem Community-weiten offenen Wahlprozess aus allen aktiven Mitwirkenden gewählt wird.
Es gibt über 200 Projekte, die im Ökosystem aktiv weiterentwickelt werden. Die Projekte können in verschiedene Ströme kategorisiert werden, z. B. Compute, Storage, Netzwerk, QA, Deployment, Sicherheit, AI/ML usw. Mit Tausenden eingehenden Reviews pro Woche ist die Community auf die von Unternehmen wie Vexhost bereitgestellte Infrastruktur angewiesen, um die ständigen Integrations- und Deployment-Jobs auszuführen.
Jedes OpenStack-Projekt hat ein eigenes Kernteam. Die Größe hängt von der Anzahl der Mitwirkenden und den eingehenden Projekt-Reviews ab. Das Kernteam kann von etwa 5 Personen bis 50 oder mehr Personen bei größeren Projektgruppen reichen. Jede Projektgruppe ist Teil eines umfassenderen Entwicklungsstroms mit Zielen, die die gesamte Community umfassen. Neben den Entwicklungsteams gibt es Gruppen mit speziellen Aufgaben, zum Beispiel die Operators-Gruppe, deren Zusammenarbeit auf Anforderungen und Probleme bei OpenStack-Deployments ausgerichtet ist. Wir haben ein Benutzerkomitee, um Feedback von OpenStack-Anwender*innen zu erhalten, und ein Technisches Komitee, das als Katalysator zwischen den Bereichen Nutzung, Entwicklung, Betrieb und den Mitgliedern des Stiftungsrates fungiert.
Mehr als 95% des gesamten OpenStack-Codebestands ist in Python geschrieben. Überall, wo es um Webentwicklung geht, verwenden wir das Django-Framework.
Erstens eignet sich Python hervorragend für Rapid Development. Es ist viel schneller, eine neue Funktion in Python zu entwickeln als in irgendeiner anderen Sprache … OK, Python ist da nicht allein, aber der springende Punkt ist Deliverability, also die Fähigkeit, Software bereitzustellen. OpenStack nutzt ein sehr schnelles Entwicklungsmodell und muss häufig auf Subsysteme zurückgreifen, die eine Sprache mit umfangreichen technischen Features und robusten Bibliotheken voraussetzen. Die Sprache muss objektorientiert und dynamisch typisiert sein. Python erfüllt diese Anforderungen zu 100%. Darüber hinaus ist die Sprache übersichtlich, leicht zu lesen und zu verstehen – deshalb sind wir absolut überzeugt von ihr.
In den OpenStack-Teams findet die Python-Entwicklung in mehreren Strömen statt. Wir haben APIs für jedes Modul, die Scheduling-Algorithmen und die Komponenten, um verschiedene Hardwarekomponenten wie Hypervisoren und Speichersubsysteme nativ anzusprechen. Python wird auch für verschiedene Anforderungen bei der Web-Dashboard-Entwicklung mit dem Django-Framework verwendet.
Die Arbeit an einem großen Projekt wie OpenStack setzt Integrationspunkte für mehrere interne Projekte sowie externe Unterstützungskomponenten voraus. Dies erfordert sowohl projektweises als auch projektübergreifendes Debugging, Integration mit Git/Gerrit, Anforderungsmanagement, Echtzeit-Debugging sowie die Verwendung von Integrationen für Vagrant, Docker, Ansible oder Kubernetes – und dies sind nur einige der wichtigsten Herausforderungen. Ein Tool wie PyCharm, das Integrationspunkte oder Plugins für solche Anforderungen bereithält, hilft bei der Entwicklung definitiv, viele dieser Probleme zu überwinden.
In Bezug auf die unterstützte Funktionalität bietet PyCharm unzählige Vorteile im Vergleich zu Texteditoren. Bei der Python-Entwicklung hebt sich PyCharm durch Features wie Remote-Debugging, Prüfungen zur Codequalität und Integrationen für Drittanbieter-Software wie Docker und Kubernetes ganz klar ab. Remote-Debugging und die Docker-Integration sind die PyCharm-Features, die in meinem Team am häufigsten zum Einsatz kommen.
PyCharm funktioniert für die meisten Nutzungsfälle sehr gut. Es bietet Unterstützung für die projektweite Durchsetzung eines Codestils und für Versionsverwaltungen. Viele Entwickler*innen finden auch die Quick-Fixes sehr sinnvoll und sparen damit viel Zeit bei der Behebung von kleinen Fehlern oder bei der Neuformatierung ihres Codes. Darüber hinaus erleichtert die Debugging-Unterstützung dem Entwicklungsteam die Überprüfung der Feature-Entwicklung. Mit den Gerrit-Plugins können wir auch Code-Reviews innerhalb der IDE verwalten.
Ich wirke innerhalb von OpenStack an mehreren Projekten für die Containerisierung mit. Eine IDE mit Docker-Integration macht also meine Arbeit gleich viel leichter. Eine weitere Hilfe ist, dass ich einige zusätzliche Tests mit Containern auch bei Projekten durchführen kann, die noch nicht containerisiert sind.
Ja, ich empfehle meinen Freunden oder Kollegen immer wieder, nicht nur PyCharm, sondern je nach ihren Anforderungen das gesamte Spektrum der JetBrains-Produkte zu verwenden. Wie bereits erwähnt, helfen Features wie intelligente Code-Editoren, intelligente Code-Navigation, Integrationen mit unterstützenden Tools wie Git, Docker usw. unabhängig davon, ob man Neuling oder Profi ist. Den Mitwirkenden steht ein zuverlässiges Tool zur Verfügung, das ihnen die Unterstützung bietet, die sie für ihre Aktivitäten benötigen, und sie können sich dadurch auf die Entwicklung konzentrieren.
Swapnil Kulkarni, aktiver Technologie-Mitwirkender, OpenStack
Matt Lucas, Produktleiter, RoadBotics
Wir sind unter anderem deswegen auf WebStorm umgestiegen, weil viele der Premium-Funktionen bereits vorinstalliert sind. Dadurch können wir schnell loslegen und gleichzeitig die Abhängigkeit von weiteren Anbietern reduzieren. Außerdem lässt sich der Zugang zu unseren Entwicklungstools leichter verwalten, wenn wir alle unsere Softwarelizenzen an einem Ort konzentrieren.
Garth Gilmour, Head of Learning, Instil
Als im März 2020 die Maßnahmen zur sozialen Distanzierung eingeführt wurden, benötigten wir ein Tool, um im Rahmen von virtuellen Schulungen online mit Teilnehmer*innen zusammenzuarbeiten. Space war dabei die offensichtliche Wahl.
Ben Asher, iOS-Entwickler, Autodesk
Mit Kotlin Multiplatform können Entwickler*innen ein neues Feature umsetzen und auf einer Plattform testen. Anschließend können einfach die Datenmodelle und die Geschäftslogik an die Benutzeroberflächen der anderen Plattformen angebunden werden, wobei der größte Teil der geleisteten Grundlagenarbeit wiederverwendet werden kann. Nachdem wir jetzt eine gemeinsame Codebasis verwenden, arbeiten wir verstärkt über die verschiedenen Plattformen hinweg zusammen.