Häufige und kurzfristige Änderungen an gesetzlichen Grundlagen, die berücksichtigt werden müssen, stellen selbst kurze Releasezyklen vor Herausforderungen. Das Team vom Covid Zertifikat zeigt, wie sie solche Herausforderungen vor allem auch von Features die deaktiviert werden, gelöst haben.
3. 20.06.2022
3
Erfahrung
− Software Engineering (11 Jahre)
− Requirements Engineering (4 Jahre)
− Business Analyse (4 Jahre)
− Projektleitung (2 Jahre)
Expertenwissen
− Kotlin, Java
− AWS (DynamoDB, Kinesis, EC2, S3,
Cognito, CloudWatch,
CloudFormation, Personalize)
− Spring, Spring Boot
− REST
− Scrum
− Hibernate, OpenJPA
− jOOQ
Branchenwissen
− Grosshandel / E-Commerce
− Öffentliche Verwaltung
− Banken / Finanzbranche
Ausbildung
− CAS in Big Data and Machine Learning (Universität Zürich)
− MSc in Business Information Systems (FHNW)
− BSc ZFH in Betriebsökonomie mit Vertiefung in
Wirtschaftsinformatik (ZHAW)
− EFZ Applikationsentwicklerin mit kaufmännischer
Berufsmaturität
Iris Hunkeler
Über mich
Lead Engineer
4. Einführung 2’
Übersicht Covid-Zertifikat 5’
Herausforderungen 3’
Feature Toggles – Was und weshalb? 5’
Feature Toggles beim Covid-Zertifikat 10’
Live Demo 5’
Fragen 10’
20.06.2022
4
Agenda
5. Schweizer Covid-Zertifikat
20.06.2022
5
− Was ist das Covid-Zertifikat?
«Das Covid-Zertifikat ist ein offizieller Nachweis, der bestätigt, dass Sie gegen
Covid-19 geimpft sind, die Erkrankung bereits durchgemacht haben oder über ein
negatives PCR-Test- bzw. Antigen-Schnelltest-Ergebnis verfügen.»
https://bag-coronavirus.ch/zertifikat/
− Das Covid-Zertifikat der Schweiz ist Open Source:
https://github.com/admin-ch
− Das Covid-Zertifikat basiert auf der PKI Infrastruktur des Bundes
− Zertifikate werden mit geheimen, sicher aufbewahrten Private Keys signiert
− Zertifikate können mit den dazugehörenden Public Keys verifiziert werden
Übersicht Covid-Zertifikat
6. EU Digital Covid Certificate
20.06.2022
6
− Die EU definierte den «EU Digital COVID Certificate» Standard, welcher
innerhalb und ausserhalb der EU von verschiedenen Ländern
umgesetzt wurde
− EU Spezifikation
https://eur-lex.europa.eu/legal-
content/EN/TXT/PDF/?uri=CELEX:32021D1073&from=EN
− Die Umsetzung des «EU Digital COVID Certificates» ist Open Source
https://github.com/eu-digital-green-certificates
− Das Schweizer Covid-Zertifikat setzt den «EU Digital COVID Certificate
Standard» um
Standards ermöglichen die internationale Zusammenarbeit
Übersicht Covid-Zertifikat
7. EU Gateway
Check App
Holder App
Nationale Antragsstelle
https://covidcertificate-form.admin.ch/
Management UI
https://www.covidcertificate.admin.ch/
20.06.2022
7
Übersicht Covid-Zertifikat / Komponenten
Manage-
ment
Service
Signing
Service
Notification
Service
Printing
Service
Verification
Service
Trans-
formation
Service
Delivery
Service
Config
Service
Holder
Config
Service
Verifier
…
PostgreSQL
HSM
Light
Certificate
Service
Recovery
Request
API
Drittsysteme
(z.B. VacMe, OneDoc)
Interop
Service
API
Gateway
Service
Ausstellung
Covid-Zertifikate
durch autorisiertes
Personal
Antragsstellung (für alle), Bestätigung
durch autorisiertes Personal
Apps sind frei
verfügbar
8. Ablauf Ausstellung eines Covid-Zertifikates
20.06.2022
8
und mit einem Private Key signiert
Übersicht Covid-Zertifikat
Medizinisches Personal
(Testzentrum, Impfzentrum,
Apotheke, Hausarztpraxis)
Management UI
Erfasst Test /
Impfung /
Genesung
Signierung
PDF
Auslieferung
HSM
Verwendung Private Key
für Signierung
Erstellung Covid-Zertifikat
Payload
(Vorname, Nachname,
Geburtsdatum, Testtyp,
Impfprodukt etc.)
Holder App
Post
Private
Key
Public
Key
Die Daten werden von medizinischem Personal erfasst
9. Covid-Zertifikat
20.06.2022
9
− Sämtliche im PDF sichtbaren Daten sind im QR Code enthalten
− Personendaten werden nicht zentral bei der Bundesverwaltung
gespeichert.
Übersicht Covid-Zertifikat
10. Check App
Ablauf Verifikation eines Covid-Zertifikates
20.06.2022
10
Die digitale Signatur macht das Covid-Zertifikat fälschungssicher
Übersicht Covid-Zertifikat
PDF
Holder App
Post
HSM
Private
Key
Public
Key
Verwendung Public Key für
Verifikation der Signatur
Public Key Datenbank
11. Einführung 2’
Übersicht Covid-Zertifikat 5’
Herausforderungen 3’
Feature Toggles – Was und weshalb? 5’
Feature Toggles beim Covid-Zertifikat 10’
Live Demo 5’
Fragen 10’
20.06.2022
11
Agenda
12. Verordnungsänderungen
20.06.2022
12
− Die rechtliche Grundlage fürs Covid-Zertifikat ist in einer
Verordnung festgehalten
− Es gab 41 Fassungen der Verordnung zwischen 04. Juni
2021 und 27. April 2022
Herausforderungen
https://www.fedlex.admin.ch/eli/cc/2021/325/de
13. Risikofaktor «Herbst 2022»
20.06.2022
13
− Entwicklung der Fallzahlen, Hospitalisationen und
Todesfälle in Zukunft unbekannt
− Ziel: Möglichst gut vorbereitet sein, falls das Covid-
Zertifikat wieder verstärkt benötigt wird
Herausforderungen
Herbst 2022
Herbst 2022
Herbst 2022
https://www.covid19.admin.ch/de/weekly-report/situation
14. Einführung 2’
Übersicht Covid-Zertifikat 5’
Herausforderungen 3’
Feature Toggles – Was und weshalb? 5’
Feature Toggles beim Covid-Zertifikat 10’
Live Demo 5’
Fragen 10’
20.06.2022
14
Agenda
15. Was sind Feature Toggles?
20.06.2022
15
“Feature Toggles (often also referred to as Feature Flags) are a
powerful technique, allowing teams to modify system behavior
without changing code.”
Feature Toggles
https://martinfowler.com/articles/feature-toggles.html
16. Einteilung von Feature Toggles
20.06.2022
16
− Dimensionen:
− Langlebigkeit: Wie lebt der Feature Toggle?
− Dynamik: Wie dynamisch ist die Toggle Entscheidung?
− Kategorien von Feature Toggles:
− Release Toggles: Separierung Code Deployment und
Feature Release («Shift right»)
− Experiment Toggles: Für A/B Tests
− Ops Toggles: «Kill Switches» für (neue) Features für den
Fall dass in Produktion Probleme auftauchen
− Permission Toggles: Freischalten von Features für
spezifische Usergruppen (Beta Users, Premium User)
Feature Toggles gibt es in unterschiedlichen Ausprägungen
Feature Toggles
Dynamik
Langlebigkeit
Änderungen mit
Deployment
Änderungen zur
Laufzeit
Änderungen bei
jedem Request
Tage
Wochen
Monate
Jahre
Release
Toggles
Ops
Toggles
Experiment
Toggles
Permission
Toggles
https://martinfowler.com/articles/feature-toggles.html
17. Einführung 2’
Übersicht Covid-Zertifikat 5’
Herausforderungen 3’
Feature Toggles – Was und weshalb? 5’
Feature Toggles beim Covid-Zertifikat 10’
Live Demo 5’
Fragen 10’
20.06.2022
17
Agenda
19. Feature Toggle für Zertifikatsarten
20.06.2022
19
Feature Toggles beim Covid-Zertifikat / Implementierung
Änderungen mit
Deployment
Änderungen zur
Laufzeit
Änderungen bei
jedem Request
Tage
Wochen
Monate
Jahre
Release
Toggles
Ops
Toggles
Experiment
Toggles
Permission
Toggles
− Anforderungen
− (temporär) nicht benötigte Zertifikatsarten ausschalten
− Bei Verordnungsänderungen Zertifikatsarten rasch
wieder einschalten
− Testen von (neuen) Zertifikatsarten von Deployment
trennen können
Covid-
Zertifikat
Dynamik
Langlebigkeit
20. Ziele der Implementierung
20.06.2022
20
− Toggle via Deployment
− Ein-/ausschalten soll alle möglichen Aufrufe abdecken:
− Manuell via UI
− CSV Upload
− API Gateway
− Die Feature Toggle sind sehr langlebig
→ Implementierung mit guter Wartbarkeit wichtig!
− «Minimal invasive» Implementierung
Feature Toggles beim Covid-Zertifikat / Implementierung
21. Implementierung der Feature Toggles
20.06.2022
21
Feature Toggles beim Covid-Zertifikat / Implementierung
Backend Frontend Weiteres
− Konfiguration (muss deployed werden)
− REST Endpunkt zum Auslesen aller
Toggles (für UI)
− Interceptor welcher sämtliche Requests
überprüft
− UI Elemente abhängig von Toggles − Dokumentation
− Automatisierte Tests
https://github.com/admin-ch/CovidCertificate-Management-Service
25. Weitere Aspekte
20.06.2022
25
− Dokumentation
z.B. https://github.com/admin-ch/CovidCertificate-Apidoc
− Automatisierte Tests: Konfiguration der erwarteten Toggles in Tests
Feature Toggles beim Covid-Zertifikat / Diverses
27. Zusammenfassung: Feature Toggles beim Covid-Zertifikat
20.06.2022
27
Zertifikatsarten können via Feature Toggle ein- und ausgeschaltet werden
Die Toggles werden über eine Konfiguration gesteuert
Eine zentrale Logik im Backend (Interceptor) verifiziert sämtliche Requests
Ein REST Endpunkt gemeinsam mit Toggle-Entscheidungen im Frontend passen das UI an
die aktuell verfügbaren Zertifikatsarten an
Damit ist das Covid-Zertifikat vorbereitet für weitere potentiell kurzfristige Anpassungen der
verfügbaren Zertifikatsarten
zeitnahe Reaktion auf Verordnungsänderungen
Abschluss
Feature Toggles für Zertifikatsarten unterstützen eine