Hi,
On 05/03/2021 14:38, Stefan Engelhardt wrote:
Ich habe durch das Wirtschaftsinformatikstudium gelernt, dass ich keine Lust mehr auf selbst programmieren habe. Java und OOP ist derart merkwürdig zu programmieren, dass macht mich auf dauer krank. Wenn ich für "Hello World" einen Monat in Vollzeit brauche, ist das für jemanden der mit programmieren und OOP aufgewachsen ist eine Sache von 3 Minuten (inklusive PC hochfahren).
Bitte hole Dir externe Hilfe, Du bist mit dem Projekt überfordert. Wenn es ein Privatprojekt wäre würde ich Dir die Zeit zum lernen geben, aber bei Unternehmen geht es um Geld. Bei diesem Projekt potentiell um sehr viel Geld oder um ein Unternehmen mit überzogenen Vorstellungen - ist im Moment schwer zu sagen.
Damit beim Rest der LUG nicht der falsche Eindruck entsteht: das hat nix mit dem WI-Studium zu tun, ich bin auch ein WI und brauche den PC nicht hochzufahren um ein kleines Hello World einzutippen - der läuft schon.
On 05/03/2021 23:13, Stefan Engelhardt wrote:
So, jetzt nochmal etwas zusammengefasster.
*_Domain_* Vorhanden, IP zeigt auf Ubiquiti USG, welchen ich als Router/Firewall nutze. ! Gesetzt, keine Veränderung angestrebt.
Falsch. Veränderung wird nötig sein.
*_Router_* USG leitet alle 80/443-Anfragen an einen Reverse-Proxy in der Synology weiter. ! Gesetzt, keine Veränderung angestrebt. Reverser-Proxy notwendig.
Wenn der Traffic so hoch ist dass ein Proxy nötig ist, dann wird es Änderungen geben.
*_Webserver_* Webserserver realisierbar als:
- VM in Proxmox
- Synology DS918+ wahlweise mit Nginx oder Apache
Entscheidung ist offen
Wahrscheinlich beides falsch. Synology als Webserver ist für ein solches Projekt definitiv falsch.
Mach Dir erstmal klar was die Anwendung am Ende machen soll, Dein Dienstleister sagt Dir dann schon was Du technologisch brauchst.
Fragen:
- "Apache ist schlecht wenn Verbindungen gehalten werden müssen wie
bei einem Chat". Nextcloud habe ich auf einem Apache laufen und die hätte auch Talk mit Chat-Funktion. Geht also doch? Alternativ, was das Verbindungshalten-Problem angeht, war NodeJS. Muss ich mehrere Webserver laufen lassen, wenn ich verschiedene Funktionen brauche die jeweils nur ein Webserver kann?
Vielleicht. Du hast im Moment keine Ahnung welche Anforderungen Du an den Webserver hast. Das beantwortet sich erst wenn Du weißt welche Frameworks Du einsetzt. Nur weil eine "App" im Browser scheinbar eine Dauerverbindung zum Server hat heißt das nicht dass dem wirklich so ist - so ein System kann auch pollen oder andere Techniken einsetzen um die Illusion einer Dauerverbindung zu erzeugen.
*_Nginx oder Apache_* Mir persönlich ist es egal. Ich bin da nur Nutzer. Ich kenne keine Unterschiede und würde das nehmen, was mir gesagt wird. Apache: HTML, PHP, JavaScrip, CSS Nginx: -unbekannt- Entscheidung ist offen
Frage:
- Kann es passieren, dass ich mehrere verschiedene Webserver laufen
lassen muss um ein "Problem" abzufangen?
Unwahrscheinlich, aber möglich. Du bist noch weit davon entfernt Technologieentscheidungen zu treffen.
*_Programmiersprachen_* _Gesetzt_:
- "HTML/CSS" (...komme ich nicht drum herum...)
- PHP/SQL/Javascript ("klassisch")
Mindestens.
_Abgelehnt_: -externe Frameworks (https://www.youtube.com/watch?v=m-gVSnJmm-4 https://www.youtube.com/watch?v=m-gVSnJmm-4)
Falsch. Ohne Framework sind Deine Anforderungen nicht realistisch und nicht kosteneffizient umsetzbar.
_In Prüfung_: -HTML, HTML5, CGI-Skripte, CSS, C, C++, Go, Rust, Perl, Java, JavaScript, Rubi, Python, C#, Frameworks (React --> Facebook, Angular --> Google, Vue --> JavaScript-Framework zur Entwicklung von Single-Page-Webanwendungen, Node.js --> serverseitigen Implementierung von JavaScript, ermöglicht eine asynchrone Ausführung von Programmcode, Node-Red)
Frag' Deinen Dienstleister. Vergiss' all die Schlagworte, das entscheidet derjenige der es umsetzt.
Fragen:
- Egal ob jemand die Domain aufruft oder die Webanwendung startet, es
wird IMMER HTML(5) benötigt, oder? (index.html oder inder.php)
- Ist HTML5 nur ein HTML ohne Kindheitsprobleme oder ist es so viel
besser geworden, dass es schon eine eigene Sprache ist?
Die 5 ist eine Versionsnummer. Wenn Webentwickler HTML 5 betonen dann meinen sie dass sie weniger (problematisches) Javascript oder andere veraltete Technologien brauchen. Bei modernen interaktiven Webseiten kommst Du darum nicht herum.
- Wenn HTML5 ganz anders ist, wann brauche ich das und wann nutze ich
lieber das alte HTML?
- Rubi on rails, wird das tatsächlich benutzt? Finde ich da
tatsächlich Programmierer dafür?
Ja und Ja. Aber es sind wesentlich weniger Rubi-Spezialisten als PHP-Spezialisten auf dem Markt. Die Auswahl und Preise sind entsprechend.
- Go habe ich auch noch nie gehört. Gibt es genug Programmierer?
Wäre für Web ungewöhnlich. Die Sprache ist relativ neu.
- Frameworks sind Geschichten von Dritten, da kann man nie wissen wo
noch Lücken sind. Oder genau das verwendete Framework wird nicht mehr suportet und alles muss geändert werden oder ähnliche Probleme. Klingt überhaupt nicht sexy. Oder verstehe ich das auch falsch? Ich möchte, dass die Programmierer sich mit ihrem Code auseinander setzen und nicht einfach nur blind copy-paste machen.
Du verstehst was falsch. Du hast Dein WI-Studium nicht abgeschlossen - richtig?
Framework ist eine große Bibliothek von Funktionen, die Du brauchst um eine ganze Klasse von Problemen zu lösen.
Im Falle von Web sind Frameworks nötig, weil Du sonst selbst zu viele Lücken einbaust. Die Wahl des richtigen Frameworks macht den Profi aus. Überlass' die Wahl der Mittel bitte einem solchen.
Du musst auch planen dass eine Webapplikation ein Dauerprojekt wird. Sowas ist nicht irgendwann fertig, sondern entwickelt sich mit der Technologie, den Anforderungen und den neu entdeckten Problemen mit. Wenn Dir jemand sagt dass Dein Websystem irgendwann fertig ist und Du Dir dann nie wieder Sorgen machen musst, dann lügt er.
*_Coloboratives Arbeiten_* [cut]
Überlass die technologische Ausstattung des Entwicklerteams und die Wahl der Methode (klassisch, agil, Scrum, ...) a) dem Dienstleister der die Entwickler stellt oder b) dem internen Entwicklerteam.
ContentManagementSystem: Definition von IONOS ist, dass ich kein Programmierer sein muss um damit Webseiten erstellen zu können. Eine Webseite ist sicherlich ganz anders als eine Webanwendung, von daher habe ich das CMS jetzt nur Mal der vollständigkeit halber erwähnt. Sollte ich falsch liegen, bitte korrigieren.
Was hat IONOS jetzt damit zu tun?
Ein CMS ist eine mögliche Lösung auf die man zurückfallen kann je nachdem wie übertrieben Deine Vorstellungen waren - das ist im Moment schwer zu sagen, da Kontext fehlt.
Hint: ein CMS ist selbst eine Webanwendung, je nach Anwendungsfall und CMS kann man es auch als Framework für eigene Entwicklungen einsetzen.
VPN: Da ich ungern beliebig viele Ports öffnen möchte, würde ich einen VPN-Server integrieren, damit zumindest die Teamleiter Zugang zu dem Kanban-System oder bspw. dem Ticketsystem haben.
Du bist noch gar nicht in dem Stadium wo man sich darüber Gedanken macht.
Aber ja, Du wirst Plattformen und VPN brauchen wenn Du Leute länger daran arbeiten läßt, da auf absehbare Zeit keiner "vor Ort" arbeiten wird.
Vorsicht: im Moment hast Du ein sehr gefährliches Viertelwissen mit dem man sehr viel Schaden anrichten kann. Vergiss bitte alle die Schlagworte, die Du bereits gelernt hast, keine Anforderung ist absolut und betrachte keine Technologie als "gesetzt" - bei Web kann die falsche Vorstellung einen sehr großen Betrag kosten.
Mach' Dir Gedanken welche Anwendungsfälle Du hast (wer nutzt es, wieviele sind es, welche groben Use Cases gibt es) und diskutiere Optionen für die Umsetzung mit Leuten die sich schon auskennen. Die Vorschläge werden Dich überraschen und können von "Du denkst zu kompliziert, ein CMS aus der Dose auf einem 3-Euro Webspace tut es auch", über "miete Dir ein CRM bei Cloudanbieter X" bis zu "es wird ein Millionenprojekt mit Cluster und teurem Technologiemix" reichen - nach dem was wir bisher wissen ist es nicht abschätzbar in welche Richtung es geht.
Nochmal ganz explizit: Deine Aufgabe ist es herauszufinden welche Use Cases und Rahmenbedingungen es gibt. Die Aufgabe ist nicht die Umsetzung zu definieren oder Technologien festzulegen. Wenn in Deinem Dokument steht "und dann zieht der User Element X per Drag-and-Drop auf Y", dann kannst Du den Absatz streichen. Stattdessen steht drin "User X muss folgende Daten eingeben können: A, B, C", "User Y muss in der Lage sein diese Daten in einer übersichtlichen Form darzustellen und umzusortieren" oder "User Z braucht eine effiziente Möglichkeit mehrere tausend Datensätze vom Typ D in einem Arbeitsschritt hochzuladen". Wenn Du den Fehler machst jetzt schon Technologien festzulegen, dann wird Dich das ein Vermögen kosten. (Die bereits vorhandene Umgebung in die das Zielsystem eingebettet ist solltest Du natürlich exakt spezifizieren.)
Konrad