ownCloud Infinite Scale: Go instead of PHP, microservices instead of LAMP
ownCloud Infinite Scale: Go statt PHP, Microservices statt LAMP

          
          






  
  
      
  
    
        
        

          
            
              ownCloud Infinite Scale: Go statt PHP, Microservices statt LAMP
            

            
              
              
                
                
                  
                    Goodbye, PHP
                  
                
                
              
              
            

          

        
        
        

          
            
              Storage mit Reva
            
          

        
    

    
      
        Auf einer Seite lesen
      

    

  

    
  



          

        Im stillen Kämmerlein arbeitet ownCloud seit über einem Jahr an der neuen Version seiner Software und zeigt nun zum ersten Mal sein neues Projekt Infinite Scale – allerdings sind die Entwickler nicht langsam, sondern haben sich viel vorgenommen. Bis einschließlich ownCloud X ist die Software eine klassische LAMP-Applikation: Im Hintergrund werkelt MySQL, Apache serviert PHP-Seiten und das gesamte Konstrukt läuft üblicherweise auf einer Linux-Installation.

    
  

  
  
  
    

  
    
    
  

  
  



Im Laufe der Jahre sind die ownCloud-Entwickler allerdings an immer mehr Performance- und Skalierbarkeitsgrenzen gestoßen, deren Ursache zumeist in entsprechenden Limitierungen in PHP liegt. Wer große ownCloud-Installationen betreibt, kennt das: Je mehr Nutzer und Dateien die Instanz verwaltet, desto träger wird sie mit der Zeit. Regelmäßig sehen Admins sich zudem mit Speicherplatzmangel konfrontiert, denn bisher speichert ownCloud die Dateien seiner Nutzer lokal auf einem normalen Dateisystem ab. Wird der Platz dort knapp, ist das Problem gar nicht so leicht zu umschiffen.
Goodbye, PHP
Alle diese alten Zöpfe planen die Entwickler in ownCloud Infinite Scale endgültig abzuschneiden. Dabei handelt es sich mehr Revolution denn Evolution: Ihren alten Code treten die Entwickler fast vollständig in die Tonne und ersetzen ihn durch einen kompletten Rewrite in Go. oCIS folgt einem Modell aus drei Schichten: Die unterste Schicht kümmert sich um das Speichern von Dateien, die mittlere Schicht umfasst alle Kern-Dienste und die dritte Schicht ist das ebenfalls vollständig neu geschriebene Webinterface.





  


  
    



  
      







      
    

  
    

    Ein erster Test des neuen ownCloud Infinite Scale und des ebenfalls neuen Webinterface, geschrieben in Vue.js.
      
    




  





Der Kern von ownCloud besteht künftig aus verschiedenen Microservices, die einander per gRPC Befehle und Anweisungen zusenden. Die Entwickler bündeln die MESH-Software Traefik fest mit oCIS, um sich um Themen wie Loadbalancing und sichere Kommunikation innerhalb des Service-Netzwerks keine Gedanken machen zu müssen. Was im Umkehrschluss bedeutet: Reichen die laufenden Instanzen eines bestimmten ownCloud-Dienstes nicht mehr aus, lassen sich zusätzliche Instanzen desselben Dienstes ad hoc starten.
Architektonisch nutzt oCIS diverse Vorteile von Go zur Beschleunigung. Fordert der Nutzer künftig eine spezielle Aktion per API oder Webinterface an, kümmern die einzelnen oCIS-Microservices sich im Hintergrund darum. Der Anwender muss nicht warten, bis die jeweilige Aktion erfolgreich ausgeführt ist, bevor er den nächsten Befehl absenden kann. Der Effekt findet sich auch auf der Code-Ebene wieder, wo Go anders als PHP echte Nebenläufigkeit beherrscht und damit mehrere Operationen zur selben Zeit ausführen kann.
Obendrein reduziert der Umstieg auf Microservices den administrativen Aufwand von ownCloud. Eine externe Datenbank wie MySQL benötigt die Software künftig nicht mehr – um ihre Datenhaltung kümmern sich eigene Microservices.




        
        

        
      