Die Herausforderung: DevSecOps in einer Microservices-Architektur skalieren
Coveo, ein SaaS-Unternehmen für Unternehmenssoftware, ist ein Pionier im Bereich KI-gestützte Suche und Empfehlungen. Die Cloud-First-Plattform unterstützt Unternehmen dabei, ihren Kunden umfassende personalisierte Erlebnisse zu bieten, indem sie in jeder Phase der Customer Journey relevante Informationen bereitstellt. Da sich digitale Erlebnisse stetig weiterentwickeln, hat Coveo seine Entwicklungsteams rasch vergrößert, um der steigenden Nachfrage gerecht zu werden.
Die innovative Plattform von Coveo besteht aus mehr als 49 Microservices, die jeweils mit unterschiedlichen Technologien entwickelt wurden. Dieser vielfältige Technologie-Stack macht es schwierig, die Anwendungssicherheit unternehmensweit umzusetzen. Coveo wollte seine Plattform nicht nur ohne Abstriche bei der Sicherheit skalieren, sondern auch die Entwicklungsgeschwindigkeit weiter steigern, um mit den Erwartungen der Kunden Schritt zu halten. Dafür musste das Unternehmen Sicherheit direkt in seinen Continuous-Integration- und Continuous-Delivery-Prozess (CI/CD) integrieren.
„Wir haben große Ziele, wenn es um unseren Deployment-Prozess und unser Produkt geht“, erklärte Alex Emery, Cloud Platform Product Manager bei Coveo. „Die wichtigsten Grundsätze, die wir stets im Blick behalten, sind die Skalierung entsprechend der Nachfrage und eine höhere Entwicklungsgeschwindigkeit – bei gleichzeitig möglichst wenigen Produktionsproblemen und gewährleisteter Sicherheit.“
Die Lösung: Sicherheit in die Deployment-Pipeline integrieren
Da Coveo mit einem sehr vielfältigen Technologie-Stack arbeitet, beruhen die Deployments auf zahlreichen voneinander unabhängigen Komponenten, etwa Artefakten, Infrastrukturprüfungen und Datenbankrevisionen. Deshalb entwickelte Coveo eine optimierte Deployment-Pipeline, die sich an verschiedene Microservices anpassen lässt – ganz gleich, ob sie mit Java, TypeScript, Go, Python oder einer anderen Technologie erstellt wurden. Für die Continuous Integration kommt Jenkins zum Einsatz.
„Wir bei Coveo glauben nicht, dass ein Technologie-Stack besser ist als ein anderer“, so Jean-Alexandre Beaumont, Security Engineer bei Coveo. „Um diesen Gedanken umzusetzen, müssen wir flexibel sein. Jedes Entwicklungsteam soll den Stack seiner Wahl verwenden und trotzdem dieselbe Deployment-Pipeline nutzen können.“
Sobald neuer Code zusammengeführt wird, führt Jenkins automatisch Code-Tests, Snyk-Sicherheitsscans, Build und Paketierung aus. Über die Snyk CLI wird jedes Paket einer Snyk-Organisation zugeordnet und auf die Einhaltung von Open-Source-Lizenzen sowie auf Sicherheitslücken geprüft. So werden Probleme erkannt und behoben, sobald neuer Code eingespielt wird – noch bevor Pakete in der Produktion bereitgestellt werden. Außerdem wird für jedes Paket ein Monitoring eingerichtet, damit Coveo über neu entdeckte Sicherheitslücken informiert wird.
„Bei der Bereitstellung von Software greifen viele Prozesse ineinander“, erklärte Emery. „Wenn Sie alles manuell erledigen, ist das zeitaufwendig, mühsam und fehleranfällig – und Sie werden es nicht oft tun wollen. Deshalb war uns klar, dass wir alles automatisieren mussten, auch die Sicherheit, und dafür Snyk einsetzen.“
Snyk unternehmensweit skalieren
Bei mehr als 175 Engineers in 26 Entwicklungsteams erforderte die Einführung von Snyk eine nahtlose Integration in verschiedene Technologien und CI/CD-Pipelines, um die Akzeptanz sicherzustellen. Durch die konsequente Automatisierung entfallen in der neuen Deployment-Pipeline manuelle Qualitätssicherungstests, Freigaben, Sicherheitsscans und weitere Aufgaben, die die bisherigen Continuous-Deployment-Bemühungen des Unternehmens erheblich verlangsamt hatten.
Außerdem abstrahiert die Deployment-Pipeline einige der zugrunde liegenden Prozesse. Entwickler müssen daher nicht alle Details kennen, die für die sichere Bereitstellung ihrer Codeänderungen erforderlich sind. Die praktische integrierte Pipeline und entwicklerfreundliche Tools wie Snyk erleichterten die Einführung und ermöglichten DevSecOps im gesamten Unternehmen.
„Zunächst entwickelte ein kleines Team die Deployment-Pipeline, später wurde sie allen Entwicklern zur Verfügung gestellt“, berichtete Beaumont. „Wegen der vielen Vorteile für Sicherheit und Benutzerfreundlichkeit mussten wir kein Entwicklungsteam erst von der neuen Pipeline überzeugen. Der Übergang erfolgte ganz natürlich.“
Die Auswirkungen: Mehr als 1.000 Releases in 3 Monaten sicher bereitgestellt
Mit der neuen Deployment-Pipeline konnte Coveo die Entwicklungsarbeit beschleunigen und zugleich die Anwendungssicherheit mithilfe von Automatisierung im gesamten Unternehmen skalieren. Innerhalb von nur drei Monaten stellte das Unternehmen mehr als 1.000 Code-Releases bereit. Coveo kann neue Releases nicht nur häufiger und sicher bereitstellen, sondern verzeichnete auch bei mehr als 1.500 Kundenumgebungen keinerlei Ausfallzeiten. DevSecOps im großen Maßstab.