Technologie Orion
Solaris 11.4
DTrace — nous avons pris l’approche de l’évier de cuisine : tous nos outils en langage de programmation dyamique s’y intègrent. Bien que bpftrace soit un bon développement récent pour Linux, le fait de faire des choses utiles dans l’espace du langage dynamique est un long chemin, c’est là que l’action est.
ZFS — mieux avec Solaris, soutenu par Oracle Support. Ne pas accepter de substituts.
Zones — offre une isolation des services et des builds de site adaptés en bac à sable.
node.js v21.6.1
- Etant donné que Editor.md est génial, nous l’avons porté vers
node.js— WYSIWYG, quel que soit le contexte du spectateur (édition dans notre IDE en ligne, ou navigation sur le site de production résultant).
Perl v5.38.2
- Maintenant w/ mod_perl v2.0.14 w/ ithreads et httpd v2.4.67 w/ event mpm.
Subversion v1.14.6
ithread-safe personnalisé
SVN : :ClientLiaisons avec des pools de mémoire par demande.liaisons python3 natives (v3.8.3).
ports python3 threadés de svnpubsub et svnwcsub — l’ensemble du kit et du caboodle pour le déploiement de site d’entreprise/CDN distribué à l’aide de Subversion.
complété le python3 affichage port. Examinera une demande d’extraction pour mes modifications en amont si le temps le permet.
Quelques remarques sur les routes pas (encore ?) Pris…
SQL
Nous sommes une boutique NoSQL pour l’ensemble de notre infrastructure de site Web, et si vous avez un point d’échec unique géant connu sous le nom de SGBDR qui gère les actifs de votre site, veuillez reconsidérer une approche plus décentralisée basée sur Jamstack et la technologie sans serveur. Même si ce n’est pas le nôtre. Merci plus tard !
Pourquoi pas Git ?
Le
git svnbridge existe déjà si vous préférez travailler avec git vous-même, au lieu d’utiliser l’IDE en ligne pour Orion ™. Vous avez des options ! Vous pouvez constater que vous obtenez encore plus de kilométrage des actions GitHub en poussant vos modifications vers GitHub (et en les lintant dans une action GitHub, ou un hook pré-commit, ou les deux, par exemple) avantgit svn dcommit- les envoyer à nos référentiels Subversion pour publication en direct. Ici est une copie git en direct et complète de l’historique des sources de ce site Web.Les arbres sources du site Web ne sont pas tout à fait comme les arbres sources du logiciel, en termes de comment vous les modifiez et les gérez. Ils sont plus alignés avec développement basé sur devops / trunk avec
gitflow. De plus, des sites gigantesques vont avoir besoin de SSI, et peut-être un peu de CGI, pour leur utilisation : à tout le moins pour éviter l’attrition massive et non vérifiable du site à partir d’un logiciel de messagerie commit tout aussi massifdiffsortie sur les deltas de l’arbre de création résultant.À l’esprit : essayer d’obtenir une implémentation SSI entièrement fonctionnelle de certains locaux “serveur web” que vous utilisez pour prévisualiser vos modifications dans un autre système de construction, est juste un peu idiot si vous arrêtez et y pensez. Avec notre Orion, il vous suffit de créer une branche en svn et hors de vous : édition, engagement, construction, navigation, et itération, instantanément, sur un site Web éphémère par branche, desservi par Apache qui est intégré dans Orion ™ Infrastructure de liaison bidirectionnelle (et de redirection de bookmarklet) de l’IDE. Sans jamais quitter votre navigateur.
Lorsqu’il est temps de migrer ces modifications vers le site de production basé sur le tronc, vous pouvez choisir de promouvoir autant, ou aussi peu, de la branche que vous le souhaitez, juste en arrière vers le tronc. Si le tronc a progressé depuis que vos modifications de branche ont finalement été prêtes pour le premier temps, cliquez simplement sur le bouton Synchronisation pour synchroniser le tronc de fusion avec votre branche. Après avoir vérifié à nouveau les résultats de votre validation post-sync-merge sur le site Web de votre branche, allez-y et cliquez sur le Promouvoir lien, suivre avec un Valider sur la même page avec un message de journal de validation raisonnable, et voilà, vous diffusez maintenant sur la version de production de trunk.
Si vous devez distribuer et traiter les arbres de construction résultant en utilisant le contrôle de version, vous n’aimerez pas git à grande échelle. Surtout lors de l’intégration d’artefacts binaires (par exemple, des versions logicielles) ou de la documentation produit (héritée) (pensez à doxygen ou javadocs), construits à l’aide de ce système ou à l’aide d’un constructeur tiers que vous utilisez localement pour simplement télécharger ces résultats de construction directement dans nos référentiels cible. Avec notre approche, vous pouvez éviter l’encombrement inutile et le gonflement dans l’arbre source de votre site, contrairement à la façon dont il fonctionnerait avec git, en utilisant des branches dans un référentiel commun à votre source et de construire des arbres.
Subversion prend en charge le contrôle d’accès de niveau fin et vous permet d’effectuer des extractions partielles/sparses de
Tête; avec Git, vous n’avez AUCUNE ACL autre que sur une dérivation de branche tout ou rien, et vous devez cloner la branche entière (qui inclut l’historique) au préalable. Si vous ne reconnaissez pas la nécessité de ces jeux de fonctionnalités uniquement svn, vous n’avez pas encore groked les remarques de l’élément précédent (voir ci-dessus).Pour l’IDE, nous aurions besoin des liaisons Perl en lecture + écriture pour
libgit2(qui n’est pas fourni par l’équipe de développement git, et est largement soutenu par des sociétés mégalithiques qui ne fournissent PAS d’IDE en ligne pour git en tant que produit SaaS comparable ; et non, GitHubn’est-ce pas) afin de correspondre au régime de gestion de la mémoire compatible httpd de svn et à la sécurité des threads POSIX (+ Perl ithreads), dans un environnement d’exécution persistant et dans plusieurs référentiels git sur disque côté serveur des arborescences de sites Web client. La maturité de cette infrastructure open source n’est pas bancable pour 2020 dans notre estimation, mais nous garderons un œil sur les développements à venir. En vous regardant,Git : :Raw!Je ne sais toujours pas comment faire une porcelaine git posix-thread-safe. La sécurité des threads dans des référentiels distincts, mais dans la RAM d’un processus commun, est le cas d’utilisation, et non la sécurité des threads dans un référentiel donné (ce qui est une demande fou).
Pourquoi pas Python ou Ruby ou Javascript ou Go ?
GIL-collé
mod_pythona encore un chemin à parcourir avant d’atteindre la maturité demod_perldans un mpm fileté. De plus, l’implémentation actuelle de notre produit est étroitement intégrée à l’API du module complet du serveur Apache HTTPd, qui nemod_perlfournit.GIL-collé
mod_rubya été largement abandonnée par la communauté Ruby pour diverses raisons de contrôle de la qualité. Portage des sources personnalisées 5K LOC Perl 5 d’Orion ™ dans un environnement de programmation différent entraînerait à peu près une Ballon de 10-100 plis du nombre de lignes de l’implémentation, et par conséquent d’une dégradation majeure des performances dans tout autre langage de programmation dynamique.
Bien sûr, voici un instantané, daté du 19 juillet 2020, de la partie SunStar Systems de l’arborescence source de production pour l’ensemble d’Orion (IDE+build). Il y a peu d’autres choses impliquées au-delà de notre Dotiac : :DTL fourchette. Tout le code lié au build a déjà été open source sur GitHub. Ce qui reste privé, ce sont les personnalisations basées sur C vers des arbres sources tiers, qui sont des différenciateurs uniques pour notre produit.
joe@zeus:/x1/Orion% wc -l */lib/SunStarSys/**/*.pm
1 build/lib/SunStarSys/ASF.pm
128 build/lib/SunStarSys/SVNUtil.pm
270 build/lib/SunStarSys/Util.pm
36 build/lib/SunStarSys/Value.pm
82 build/lib/SunStarSys/Value/Blogs.pm
61 build/lib/SunStarSys/Value/Jira.pm
77 build/lib/SunStarSys/Value/Mail.pm
70 build/lib/SunStarSys/Value/SVN.pm
106 build/lib/SunStarSys/Value/Snippet.pm
85 build/lib/SunStarSys/Value/Twitter.pm
378 build/lib/SunStarSys/View.pm
1260 webgui/lib/SunStarSys/Orion.pm
112 webgui/lib/SunStarSys/Orion/Cookie.pm
183 webgui/lib/SunStarSys/Orion/Filter.pm
90 webgui/lib/SunStarSys/Orion/MapToStorage.pm
59 webgui/lib/SunStarSys/Orion/WC.pm
194 webgui/lib/SunStarSys/Orion/WC/Add.pm
97 webgui/lib/SunStarSys/Orion/WC/Browse.pm
133 webgui/lib/SunStarSys/Orion/WC/Commit.pm
79 webgui/lib/SunStarSys/Orion/WC/Copy.pm
66 webgui/lib/SunStarSys/Orion/WC/Delete.pm
47 webgui/lib/SunStarSys/Orion/WC/Diff.pm
182 webgui/lib/SunStarSys/Orion/WC/Edit.pm
116 webgui/lib/SunStarSys/Orion/WC/Mail.pm
70 webgui/lib/SunStarSys/Orion/WC/Merge.pm
67 webgui/lib/SunStarSys/Orion/WC/Move.pm
52 webgui/lib/SunStarSys/Orion/WC/Production.pm
47 webgui/lib/SunStarSys/Orion/WC/Promote.pm
60 webgui/lib/SunStarSys/Orion/WC/Resolve.pm
64 webgui/lib/SunStarSys/Orion/WC/Revert.pm
82 webgui/lib/SunStarSys/Orion/WC/Rollback.pm
123 webgui/lib/SunStarSys/Orion/WC/Search.pm
78 webgui/lib/SunStarSys/Orion/WC/Staged.pm
24 webgui/lib/SunStarSys/Orion/WC/Static.pm
49 webgui/lib/SunStarSys/Orion/WC/Update.pm
220 webgui/lib/SunStarSys/SVN/Client.pm
4848 total
mod_jsjamais fait la coupe pour httpd v2, beaucoup moins fileté mpm.Essayer d’intégrer
GoLangdans httpd, avec des liaisons de contrôle de version natives, serait un défi amusant ; tout simplement pas pour moi personnellement. Un bon langage avec des compromis intéressants quand il s’agit de liens dynamiques, mais un certain peut-être pour une enquête future.En ce qui concerne le système de construction Perl 5, restez à l’écoute ! *Aucune raison pour laquelle il ne peut *pas être porté à un autre langage de programmation, car le système de construction est complètement isolé d’Orion ™IDE en ligne (en dehors du démon de rendu Markdown basé sur
node.js, qui est un système autonome lui-même) pour un million de raisons de sécurité / conception architecturale. Si vous avez besoin d’un teaser sur les possibilités, jetez un coup d’œil à labuild_external.plscript over dans le référentiel @SunStarSys Orion : L’ASF l’a utilisé pour toutes sortes de choses qui n’avaient pas besoin d’un système de gestion des dépendances.Oui, la trajectoire de popularité de Perl suit ironiquement celle de COBOL, ou même Common Lisp, malgré la domination d’Unix sur le marché des serveurs ; mais certaines choses vieillissent mieux que d’autres. Le solide (et unique Perl)
ithreadingénierie hors dep5p, en préparation de l’avènement de Perl 7, est une bonne nouvelle pour les développeurs mod_perl qui s’accrochent toujours à la vision originale de Doug MacEachern. Si vous trouvez que vous êtes à genoux dans plus de 100 sources LOC Perl pour obtenir ce dont vous avez besoin de notre système de construction Perl-only actuel, discutons — peut-être que nous pouvons collaborer sur quelque chose de moins complexe à utiliser pour construire votre site. Moins c’est plus avec Perl.
Pourquoi pas avec quelque chose basé sur la JVM ?
- Je viens de travailler de cette façon, compte tenu de mes 20 ans d’histoire avec la pile LAMP et de mes contributions constructives à la communauté étendue des serveurs Web Apache HTTPd. Faisable, mais encore une fois une entreprise massive avec beaucoup de problèmes d’ingénierie difficiles à résoudre en cours de route.
Index
SunStar Orion de Systems — Plateforme Wiki d’Enterprise Jamstack pour créer, gérer et fournir pages Web statiques utilisant la technologie Jamstack pour des fonctionnalités dynamiques…
Sécurité d’Orion — “La sécurité par l’obscurité n’est pas du tout une sécurité.”…
Plans Orion — Remises annuelles à l’avance disponibles (jusqu’à 20 % de réduction sur les coûts de facturation mensuels)…
Caractéristiques d’Orion — Même moteur d’affichage de code javascript dans votre navigateur et dans le script de build markdown.js (basé sur node.js)…
Politique de confidentialité d’Orion — Il s’agit d’un système de consentement conforme au RGPD. Première visite à l’Orion ™ CMS/IDE, vous serez dirigé vers une page Google vous demandant d’autoriser…
Référence Orion — Ces icônes de crayon rose chaud
en haut à droite à côté du chemin de navigation vous donnera une démonstration en direct…API Orion — Cette page indexe les API Rechercher, Editeur en ligne, Bibliothèque de modèles Django et Créer un système…