Welcome to the ScaleIT Platform documentation!¶
Note
- Warum ScaleIT?
- Schauen Sie sich unsere Value Proposition an!
- Was ist ScaleIT?
- Lernen Sie was ScaleIT ist
Note
Click here for the technical getting started (GitHub)
Click here for the architecture documentation and white paper
What is ScaleIT?¶
ScaleIT is a solution to bring advanced IT technologies to manufacturing companies. We bring the necessary software and hardware infrastructure to the manufacturing shop floor of small and medium companies and help people work better by introducing modern Industrial Grade Apps.
It is a work in progress created within the ScaleIT Project funded by the BMBF (Fkz.: 02P14B180ff).
Note
- ScaleIT Value Proposition
- Ich möchte jetzt erfahren wie mir ScaleIT auf dem Hallenboden hilft!
There are three main components to the ScaleIT solution the ScaleIT Software Platform, ScaleIT Hardware and the ScaleIT Community, as seen in the figure below.
- ScaleIT Software Platform
In IT, a platform is any hardware or software used to host an application or service. An application platform, for example, consists of hardware, an operating system and coordinating programs that use the instruction set for a particular processor or microprocessor [1].
Have a deeper look at the software architecture here.
- ScaleIT Hardware
- WIP, coming soon
- ScaleIT Partner and the ScaleIT Community
- Meet the people of ScaleIT
- ScaleIT is Open Source
When a project is open source, it means anybody can view, use, modify, and distribute your project for any purpose. These permissions are enforced through an open source license.
Learn why this is important OSS for German Manufacturing
ScaleIT is being published with an MIT license and are provided as is.
If you need professional solutions, our partners are building industry grade ScaleIT Systems and are happy to help. Mail us at info@scale-it.org or e-mail a partner directly.
Todo
Better image with ScaleIT Eco System, ScaleIT Software Platform, ScaleIT Hardware
Footnotes
[1] | https://searchservervirtualization.techtarget.com/definition/platform |
[2] | https://commons.wikimedia.org/wiki/File:Ab-test.jpg |
Get Started¶
Technical Getting Started¶
Click here for the technical getting started (GitHub)
Click here for the architecture documentation and white paper
Understanding the Shop Floor¶
IoT Aspects of the Shop Floor
Wo befinden wir uns wenn wir vom betrieblichen Hallenboden reden?
Production ready IoT systems require a sophisticated and robust infrastructure. There are a multitude of services and open source technologies that allow the realisation of such systems with minimal effort. In practice however, and especially in the manufacturing domain, it proves difficult to bring these technologies into production and as a result the shop floor cannot benefit from the advantages of the IoT. Working in close cooperation with small and medium sized manufacturers, we have identified several key issues they face when dropping the monolithic approach and adopting IoT technologies and an IoT mindset:

The manufacturing shop floor where people, machine and sensors interact not just physically but also virtually through software.
- The shop floor systems are isolated from the Internet.
- System landscapes are dominated by unconnected silos or monoliths (Enterprise Service Bus, ERP Systems, large central data warehouses). These are difficult to evolve and do not fit with the distributed nature of the shop floor.
- Technology choices are limited to only a handful of in-house-approved stacks due to restricting corporate IT policies (e.g. Windows only world).
- It is hard to iterate through software versions due to difficult development and deployment and divergent infrastructure.
- Slow, low risk approach to potential game changer technologies due to a (justified) high risk aversion regarding the control software for the production lines.
- Difficult testing and simulation using realistic or real data as it is either non existent or not easily reusable.
- It is generally hard to create a distributed interconnected environment having only a limited workforce consisting of small IT teams and no dedicated ecosystem software engineers.
By incorporating key software engineering concepts (versioning, containerisation, continuous integration, continuous deployment, App runtime environment) the proposed architecture aims at giving manufacturers a ready to use infrastructure with the ingredients for a healthy and flexible software eco-system on the shop floor. We believe that the design principles listed below are central to a shop floor architecture that supports IIoT applications:
- Support silo centerd architecture
- Resilience first design
- Rapid deployment
ScaleIT System Landscape¶
Using ScaleIT, you imbue the IT landscape on your manufacturing shop floor with the best practices from modern software development and can harness benefits such as faster innovation cycles, lower risk and increased productivity by using better tools.
References
Value Proposition¶
- Schnell installierbar
- Integration in Firmen-IT
- Semantische Daten
- Hohe Integrierbarkeit durch Web-Technologien
- Kein Internet notwendig
Digitalisierung durch Apps¶

Apps bieten Nutzern einen hohen Wert durch die Einfachheit der Installation und Bedienung, sowie der optimierten nutzefreundlichkeit (UX).

Zusätzlich zu der Bedienungsfreundlichkeit von Smartphone-Apps, bieten die Industriellen Apps von ScaleIT weitere Vorteile und können im betrieblichen Kontext eingesetzt werden.
Note
- ScaleIT success stories hier!
- Sehen sie wie ScaleIT unseren Partneunternehmen geholfen hat.
ScaleIT Digitalisierungsstrategie¶

Digitalisierungschritte durch ScaleIT: von der Strategie hin zu den konkreten Maßnahmen.
Anforderungsanalyse¶
If you wish to analyse your requirements regarding Apps, visit our ScaleIT App Workshop Kit: https://github.com/ScaleIT-Org/workshop-app-prototyping
Prozesse¶
Die Verbesserung von Prozessen auf dem betrieblichen Hallenboden ist eines der Hauptziele von ScaleIT. Unser Ansatz heißt Die richtige Software für den richtigen Job einsetzen.
Software auf dem Hallenboden risikolos ausprobieren¶
Durch das Vereinen von Development und Operations (Entwicklung und Inbetriebnahme) wird es Experten ermöglicht Software leicht auf den Hallenboden einzusetzen oder zurückzurollen. Da Apps Seiten-Effekt frei sind, können nach dem Baukastenprinzip Apps entfernt werden.
A/B Testing¶
Durch die Vereinfachung der Installation von Software durch ScaleIT, wird es mittelständischen Betrieben ermöglicht unterschiedliche Apps auszuprobieren und dann die geeignetste App zu behalten.
Sucht ein Unternehmen beispielhaft ein Projektmanagementwerkzeug, dann kann es die Redmine-App, die Gitlab-App oder eine andere App aus dem Katalog installieren und diese parallele betreiben und ausprobieren.
Die Entscheidung wird so durch reelen Einsatz der Software im betrieblichen Alltag unterstützt.

A-B Test Beispiel [1]

A-B Test Beispiel [2]
Footnotes
[1] | https://commons.wikimedia.org/wiki/File:A-B_testing_example.png |
[2] | https://commons.wikimedia.org/wiki/File:Ab-test.jpg |
Guiding Principles of the ScaleIT Eco-System¶
Driving I4.0 in KMUs
Mit Serviceaspekt starten -> Use Cases -> Generalisieren -> Technologie Ableiten
Smart Service definieren Cloud + Edge + Sensor verheiraten “Crypto| Technologien
Durchstich shopfloor von 2 seiten die sich in der Edge treffen -> shop floor architecture konzept (Ring Edge, Mensch im Mittelpunkt)
Avoid pilot purgatory in 7 steps: #. Secure CEO support. IoT projects that scale positively have a CEO leading the push. Support from the CEO shepherds a project past the bumpy spots and defends it throughout the organization. #. Start simple, execute relentlessly. #. Ponder outcome vs. technology. Rather than becoming enamored by technology, ask more nuanced questions around the business model before choosing a pilot: ##. Value proposition: What is the offering? What user needs does it address? Why is it better? How does it create customer value? ##. Delivery model: What is the go-to-market model? What parts of the value chain and functions must change? Which ecosystem partners must unite to deliver this? ##. Economic element #. During the pilot stage, testing the business model and the technical viability will improve confidence in delivering value. #. Focus on people. #. Treat data as a transformational asset. #. Bring clarity around your technology stack. #. Build an ecosystem of tech providers, not a logo collection. (https://www.mckinsey.com/business-functions/organization/our-insights/the-organization-blog/avoid-pilot-purgatory-in-7-steps)
1 Seite Killeridee 1 Seite Abgrenzung aber aufbau aus ScaleIT
IOTA weil Deutsch Bezahlen Audit Smart Contracts
Geschäftsmodelle
Introduction Smart Service Definition Aufbau auf Scaleit
Werden so zu smart services
Teile im Intranet, Teile im Internet
Mithilfe der ScaleIT Technologien können Apps zu einem Verbund geschlossen werden, der mit modernen Technologien (z.B. der Blockchain) zu einer Geschäftsprozessabwickelnden Einheit zusammengeführt wird und somit zu Smart Service wird. Dank der in ScaleIT entwickelten Architektur der Apps können iterativ Erneuerungen und Technologieeinflüße in die Apps und damit in dies Smart Services gelangen. Somit entstehen Progressive Smart Services, die sich der ständigen Entwicklung in Markt und Technik anpassen können.
Mittelständler werden abgeschüttelt
Smart Services benötigen Vernetzung
- Regelwerk und Workflows (IFTTT) für die produzierende Industrie
- Zentralisierte vertrauenswürdige Aktivitäten im Audit-Log speichern für Nachvollziehbarkeit
- API Metriken/USB Stick Lizenzen ich kann messen was verbraucht wurden (FaaS)
- Eingebaute Vertragsüberprüfung
- Smart Services dienen auch zur digitalen Veredelung bei der Auslieferung von Waren
Organisatorische Meta Ebene? * Partner * Wer schreibt was * Maziar ist stärker engagiert
Wer koordiniert
Lernmaterial - Die Quelle für das essentielle Wissen in ScaleIT¶
bla
Die Säulen des Wissens¶
Note
- ScaleIT success stories hier!
- Sehen sie wie ScaleIT unseren Partneunternehmen geholfen hat.
XXXXXXXXXXXXXXXXXXX¶
AAAAA¶
rastarst
BBBB¶
rstrast .. “Don’t trim your toe-nails with a lawn mower”. XX ###################################################
Durch das Vereinen von Development und Operations (Entwicklung und Inbetriebnahme) wird es Experten ermöglicht Software leicht auf den Hallenboden einzusetzen oder zurückzurollen. Da Apps Seiten-Effekt frei sind, können nach dem Baukastenprinzip Apps entfernt werden.
Footnotes
[1] | https://commons.wikimedia.org/wiki/File:A-B_testing_example.png |
[2] | https://commons.wikimedia.org/wiki/File:Ab-test.jpg |
Skalierung innerhalb ScaleIT¶
Liste der Skalierungs-KPIs für die ScaleIT Plattform und das ScaleIT-Ökosystem.
Skalierung auf der Firmen-Ebene¶
Plattform Skalierung¶
Die hier vorgestellten theoretischen Skalierungsebenen der Plattform dienen als Grundlage für die organisation und das Ausrollen der ScaleIT-Plattform-Lösung bei Firmen von unterschiedlichen Größen und IT-Kompetenzen.
Die Skalierungsdimensionen sind (a) das Level an Plattformfunktionalität (Iaas-SaaS), (b) die verantwortlichen Entitäten für das Vorantreiben der Entwicklung (Forschung, Entwicklung, Systemhäuser, Kunden), (c) die Komplexität der Lösung mit Hinblick auf die vollständige Integration in die Unternehmenslandschaft (Libraries, Engineering Tools, einheitliche Sicht).
Architekturell-technische Skalierung¶
Die technische Skalierung weist eine hohe intrinsische Komplexität auf. Das Ziel der ScaleIT-Architektur ist es die extrinsischen Faktoren zu minimieren. Der Mensch muss weiterhin als kreatives Element einbezogen werden, um logisch sinvolle Anwendungsnetzwerke und vernetzte Dienste zu ermöglichen. Die von ScaleIT bereitgestellten Technologien, Konzepte und Paradigmen bieten hohe gestalterische Möglichkeiten ohne Nutzer und Entwickler unnötig zu belasten.
- Software-Technisch/Architekturell
- Microservices
- Die Software-Organisation von ScaleIT beruht auf den Prinzipien der Microservice Architektur (die moderne Reinkarnation der SOA - Service Oriented Architecture). Dadurch bietet sich die flexible Organisation und Reorganisation der Software auf den betrieblichen Hallenboden.
- Lambda
- Innerhalb der ScaleIT-Architektur kann eine Lambda-Architektur abgeblidet werden. Die Apps müssen ledliglich in die jeweiligen Batch und Speed Layer eingeordnet werden. Hier bietet sich die Option an, die Layer der Lambda-Architektur auf unterschiedliche Hosts aufzuspalten. Alternativ kann ein System wie z.B. Spark direkt als App laufen (dabei ist jedoch zu beachten, dass solch komplexe Apps am besten auf einem separaten Host mit ausreichend Ressourcen und Monitoring ausgefürt werden).
- Kappa
- Die Kappa-Architektur ist die von ScaleIT empfohlene Software-Organisation für Szenarien die auf Datenerhebung und -analyse zielen. Besonders bei Implementierungen mit digitallen Zwillingen kann durch die lokale Speicherung der Daten von der jeweiligen Maschinen-App eine einfache und robuste Implementierung realisiert werden.
- FaaS - Function as a Service
- Wenn es um das Ausrollen von kleinen in sich geschlossenen Funktionalitäten geht, so bietet sich innerhalb der ScaleIT-Architektur die Option eine FaaS-App einzuseten. Dies ist besonders sinnvol, um eine automatische Skalierung bei wiederholten Aufrufen einer einfachen ausführbaren Logik (wie z.B. das Auswerten eines ML-Modells auf Anfrage über eine HTTP/REST Schnittstelle). Das Erstellen multipler Apps für solch kleine Funktionen ist nicht zielführend und wirkt sich negativ auf die Wartung der Instanz.
- Programmiersprachen
- Polyglote Stacks sind in ScaleIT möglich und dienen auch der Funktionsskalierung und der horizontalen sowie auch der vertikalen Vernetzung. Ein zu breites Spektrum an Technologie-Stacks sollte aber vermieden werden, um den Wartungsaufwand klein zu halten (siehe auch Microservice Best Practices).
- Kommunikation
- Datentransfer über Web-Technologien
Kommunikationsmechanismen die in ScaleIT App eingesetzt werden können sind folgende:
- REST/HTTP (Empfohlen)
- Request Reply und Polling über HTTP Methods (GET, POST, PUT, DELETE)
- Streams über Server Sent Events (SSE)
- GraphQL (Experimentell)
- Graphbasierte abfragen über das Web mit Pagination Support
- MQTT
- QoS gesicherte Streams
- WebSockets
- Payload-agnostisches Protokoll ohne Transfersemantik
- RTC
- Real Time Web Kommunikation (z.B. Kamera-Streams)
- gRPC/Protocol Buffers
- Hocheffiziente Remote Procedure Calls über das Web (z.B. auch über Captain Proto)
- Stream vs Poll vs Batch
- Durch die unterschiedlich unterstützten Kommunikationsmechanismen ist es möglich eine für den Anwendungsfall optimale Lösung zu finden. Für Datengetriebene Anwendungen werden bei ScaleIT Streams über SSE und für Polling(Request/Reply) HTTP empfohlen. Zu beachten ist, dass HTTP schon eine Semantik mitbringt, MQTT und WebSockets nicht. MQTT eignet sich aber sehr gut, um den Nachrichtenaustausch bezüglich der Zustellung zu sichern und bietet dazu 3 Level an Quality of Service (QoS).
- Payload Skalierung
- In ScaleIT ist das empfohlene Datenformat der Payload eine semantische Darstellung in JSON-LD. Es können jedoch auch andere Formate genutzt werden (wie z.B. JSON, Protocol Buffers, proprietäre Formate etc.). Dies ermöglicht eine Skalierung bezüglich der datengetriebenen Interaktion zwischen Apps, vorausgesetzt die Apps unterstützen diese Datenformate. Nutzt man eine semantische Darstellung, dann wird. Durch JSON-LD(und auch JSON) können auch inkomplette Nachrichten verschickt werden, ohne das Anwendungen abstürzen und diese auch nur Teilverarbeitung ermöglichen.
- Migration auf andere technische Plattformen
- Durch die Containerisierung der ScaleIT Apps und des dazügehörigen Infrastructure as Code (IaC) Paradigmas ist die Migration von ScaleIT Software auf andere Plattformen sehr effizient. Der Kern der App Architektur bildet das Prinzip des Platform as a Sidecar, so dass Apps mit einer minimalen Konfigurationsänderung auf einer anderen Instanz laufen können oder ein Wechsel weg von ScaleIT (z.B. auf öffentliche oder private Clouds) möglich ist. Durch die Lokalität der Daten innerhalb der Apps, sind bei korrekten Implementierungen der Plattform keine Datenmigrationen notwendig. Auch aus diesem Grund ist keine zentrale Datenhaltung empfohlen (außer Backup und Archivierung).
- Funktionalität von Dritten
- Da KMUs meistens keine eigene Software-Entwicklung betreiben erlaubt es die modulare ScaleIT-Architektur Software (Apps) von Drittanbietern und Dienstleistern einzubinden. Durch das technologieagnostische Design können auch unterschiedliche Dienstleister Software für dieselbe Firma aktiv werden.
Dokumentation
Daten
- Funktionsskalierung
- Die in der ScaleIT-Architektur unterstützen Paradigmen Container, Microservices und FaaS erlauben ein Reibungsloses Klonen von schon vorhandenen oder die Integration von neuen Funktionalitäten.
Egineering(Tools)
- Management
- Ein zentralisiertes Management ist möglich in der ScaleIT-Architektur und in größeren Instanzen empfohlen. Durch das installieren der passenden Apps (Kubernetes) kann z.B. das Container-Managment automatisiert werden.
- Monitoring & Logging
- Ein zentralisiertes Management ist möglich in der ScaleIT-Architektur und in größeren Instanzen empfohlen. Durch das installieren der passenden Apps (ELK Stack) kann z.B. das Logging zentralisiert und durch Dashboards auch für den Nutzer zusammengeführt werden.
- Nutzeröberflächen
- Die in ScaleIT genutzten Web-Technologien erlauben Responsive Design und Adaptive Design anzuwenden, um die Oberflächen der Apps auf unterschiedliche Geräte zu skalieren. Z.B. kommt das in der Open Source Referenzimplementierung empfohlene Ionic-Framework mit Responsive Design out-of-the-box.
- Rollen
- Die Mitarbeiterrollen in einem Unternehmen sind ein wichtiger Aspekt der organisationellen Kultur. Die ScaleIT-Architektur erlaubt es Apps (u.a. auch Open Source Apps) zu nutzen, um unterschiedlichen Unternehmensgrößen und Bedarfe zu decken. Gekoppelt mit dem Singel-Sign-On Mechanismus (SSO Manager + SSO Sidecars) werden die Rolleninformationen allen Apps die damit umgehen können bereitgestellt. Auch kann dieser Mechanismus nachgerüstet werden und muss nicht in der Intialinstanz vorhanden sein.
- Development & Operations & Agilität
- Die ScaleIT-Architektur ist für alle modernen Arbeits- und Entwicklungsprozesse ausgelegt. Durch das installieren der passenden Apps können z.B. auch DevOps oder DevSecOps Anwendung auf den betrieblichen Hallenboden finden.
ScaleIT Success Stories¶
Todo
Publish success stories.
Shopfloor Monitoring bei der SICK AG¶
Todo
Upload KIT + SICK poster
Involved partners: Ondics GmbH, Worldline, SICK AG, KIT
Results: Better understanding of live data and optimization potential
Electronic manufacturing is a sensitive process in which humidity and temperature, for example, play an important role. To ensure quality, optical inspection steps are performed on every printed circuit board (PCB).
However, under certain conditions, issues with the PCBs may still arise. Therefore, to improve the quality and throughput, the shop floor has to be continually upgraded with new capabilities that allow employees to promptly react and reduce errors.
First, employees need to visualize the quality inspection data, both on large screens and their smartphone. This in turn allows them make timely and more informed decisions. Second, temperature and humidity sensors need to be installed in order to monitor the production environment. In case some sensors use different units (˚C vs. ˚F), they still need to present meaningful data to workers or other machines. Third, inspection, temperature and humidity data need to be aggregated for both workers and data analysts. The latter need to be able to use the data in order to train machine learning models for predictive maintenance.
The fourth and final step, is the deployment of the machine learning algorithm into production and associating the predictions with machine location and PCB meta-data. This scenario requires physical devices and software from different vendors that need to interoperate to achieve the desired outcome. While the predictive analytics step is still in development, the mashup is explained in greater detail in the following section.
The proof of concept mashup shown in the figure above, consists of apps that are implemented as stand-alone Docker containers with functionality restricted to a small, business value generating subset. Every app is uniquely identifiable and addressable within the web by its URL and RESTful interactions are possible.
The apps have been developed independently and we have relied on common semantics to allow their interoperation. The App Hub (lower left) is a simple app store. It manages each app’s life cycle by generating Docker-Compose files according to which apps are part of requested mashups. SIWIAT3 is an embedded gateway-as-a-box with internal apps developed by the authors and targeted at the industrial shop floor. Its role is to wrap legacy or non-web-capable sensors, annotate the measured values and make them available via a REST interface.
MOSCITO4 is a semantic middleware developed by Worldline based on OSGI, Apache Jena, and the RDF4J framework. It provides a set of functionality for the management of semantically linked data accessible through RESTful Web Services, such as ontology and rule management, and, moreover, SPARQLEndpoints as well as triple store connections and data integration from heterogeneous data sources. MOSCITO acts as a shop floor semantics engine and a visualizing tool that collects and connects related data form heterogeneous data sources but also manages ontologies and rules.
Machine 1 and 2 are automatic optical inspection (AOI) machines. Inspection data is available via publish/subscribe through the data app (using server-sent events). Adding another machine to the mashup requires just the installation of the data app for the corresponding machine from the store.
The inspection data is visualized inside a web app that uses a responsive design. By leveraging the semantic annotations in the payload this visualization app can also associate the different input data from the inspection machines with the aggregated temperature data from MOSCITO. Both SIWIAT and MOSCITO do not need to rely on a common predefined data model for exploring, visualizing or processing data. Therefore, the integration of shop floor data into business processes can be performed using semantics-driven. These apps may even proxy the interaction to enterprise resource planning (ERP) or manufacturing execution system (MES) systems.
Das Publizierte Paper über den Use-Case ist in der ACM digital library zu finden, eine kostenfreie Variante kann man über den Authorizer-Link der Author-Website beziehen.
Ondics GmbH¶
ScaleIT App Design-Prinzipien¶
In diesem Kapitel werden Design-Prinzipien vorgestellt die dazu dienen eine saubere Implementierung der Software unterstützen. Diese Entwicklungsprinzipien sind eine Sammlung von Best-Practices aus der modernen Software-Entwicklung und fokussieren sich auf die Bedürfnisse des betrieblichen Hallenbodens.
Eine App ist ein logische Konstrukt, dass der verbesserung der User-Experience (UX) dient.
Die konkrete softwaretechnische Architektur der ScaleIT Plattform wird in Kapitel `ScaleIT Architektur`_ beschrieben.
Die App Compliance Level werden im Kapitel `Compliance Level`_ beschrieben.
App Software-Design-Prinzipien¶
ScaleIT Apps are a model of the pattern of multiple cooperating processes which form a cohesive unit of service. They simplify application deployment and management by providing a higher-level abstraction than the set of their constituent applications. Apps serve as unit of deployment, horizontal scaling, and replication. Colocation (co-scheduling), shared fate (e.g. termination), coordinated replication, resource sharing, and dependency management should be handled automatically for containers in a app.
The applications in an App all use the same network namespace (same IP and port space), and can thus “find” each other and communicate using localhost. Because of this, applications in an App must coordinate their usage of ports. Each App has an IP address in a flat shared networking space that has full communication with other physical computers and Apps across the network. (Adapted from Kubernetes Pods).
Leveraging Bounded Contexts¶
Zum Zweck der Modularisierung von Software eignet sich das Prinzip des Bounded Context [DDDEvans] [FowlerBoundedContext].
Bounded Context is a central pattern in Domain-Driven Design1. It is the focus of DDD’s strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of the underlying domain. As you try to model a larger domain however, it gets progressively harder to build a single unified model. Different groups of people will use subtly different vocabularies in different parts of a large organization. So instead DDD divides up a large system into Bounded Contexts, each of which can have a unified model - essentially a way of structuring the domain into multiple canonical models [FowlerMultipleCanonicalModels].
Bounded Contexts use the principle of Shared- and Hidden Models [NewmanMicroservices], where each Bounded Context exposes an explicit interface to the outside world, the Shared Model, while the Hidden Models are irrelevant to other Bounded Contexts and therefore kept encapsulated privately.

Shared Model showing two bounded contexts
A Bounded Context is a unit of function with business value, that has high cohesion and reprensents a part of the domain (subdomain) or in other words it is a specific responsibility enforced by explicit boundaries [BoundedContextExplained]. Examples: Billing, Machine Control Interface
Todo
App Richtlinien aus der Wiki hinzufügen
App User Interface Design¶
UX Principles
Nielsen’s 10 Heuristics for Good UX¶
These 10 Heuristics help building user friendlier apps and identifying usability issues [Nielsen10].
- Visibility of system status
- The system should always keep users informed about what is going on, through appropriate feedback within reasonable time.
- Match between system and the real world
- The system should speak the users’ language, with words, phrases and concepts familiar to the user, rather than system-oriented terms. Follow real-world conventions, making information appear in a natural and logical order.
- User control and freedom
- Users often choose system functions by mistake and will need a clearly marked “emergency exit” to leave the unwanted state without having to go through an extended dialogue. Support undo and redo.
- Consistency and standards
- Users should not have to wonder whether different words, situations, or actions mean the same thing. Follow platform conventions.
- Error prevention
- Even better than good error messages is a careful design which prevents a problem from occurring in the first place. Either eliminate error-prone conditions or check for them and present users with a confirmation option before they commit to the action.
- Recognition rather than recall
- Minimize the user’s memory load by making objects, actions, and options visible. The user should not have to remember information from one part of the dialogue to another. Instructions for use of the system should be visible or easily retrievable whenever appropriate.
- Flexibility and efficiency of use
- Accelerators — unseen by the novice user — may often speed up the interaction for the expert user such that the system can cater to both inexperienced and experienced users. Allow users to tailor frequent actions.
- Aesthetic and minimalist design
- Dialogues should not contain information which is irrelevant or rarely needed. Every extra unit of information in a dialogue competes with the relevant units of information and diminishes their relative visibility.
- Help users recognize, diagnose, and recover from errors
- Error messages should be expressed in plain language (no codes), precisely indicate the problem, and constructively suggest a solution.
- Help and documentation
- Even though it is better if the system can be used without documentation, it may be necessary to provide help and documentation. Any such information should be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large.
Note
- Useful Tools:
UX Check, http://www.uxcheck.co
Treejack, https://www.optimalworkshop.com/treejack
Bibliography¶
[DDDEvans] |
|
[FowlerMicroservices] |
|
[NewmanMicroservices] |
|
[FowlerBoundedContext] | “BoundedContext @ martinfowler.com.” [Online]. Available: http://martinfowler.com/bliki/BoundedContext.html. |
[FowlerMicroservicePrerequisites] | “MicroservicePrerequisites @ martinfowler.com.” [Online]. Available: http://martinfowler.com/bliki/MicroservicePrerequisites.html. |
6 “Microservices Resource Guide @ martinfowler.com.” [Online]. Available: http://martinfowler.com/microservices/.
7 C. van den Thillart, G. Vermaas, M. van der Linden, and J. Vermeir, “microservices-principles @ blog.xebia.com.” [Online]. Available: http://blog. xebia.com/tag/microservices-principles/.
[FowlerMultipleCanonicalModels] | 8 “MultipleCanonicalModels @ martinfowler.com.” [Online]. Available: http://martinfowler.com/bliki/MultipleCanonicalModels.html. |
9 “streamprocessing @ cloud.google.com.” [Online]. Available: https://cloud.google.com/solutions/architecture/streamprocessing.
10 “Unix_philosophy @ en.wikipedia.org.” [Online]. Available: https://en.wikipedia.org/wiki/Unix_philosophy#Eric_Raymond.E2.80.99s_17_Unix_Rules.
11 A. Wiggins, The Twelve-Factor App. 2012.
12 “Software Architecture @ Msdn.Microsoft.Com.” [Online]. Available: https://msdn.microsoft.com/en-us/library/ee658124.aspx.
[BoundedContextExplained] | “DDD - The Bounded Context Explained.” [Online]. Available: http://blog.sapiensworks.com/post/2012/04/17/DDD-The-Bounded-Context-Explained.aspx. |
14 The 6 Traits of Reactive Microservices: Isolated, Asynchronous, Autonomous and more [Online]. Available: https://www.lightbend.com/blog/the-6-traits-of-reactive-microservices-isolated-asynchronous-autonomous
15 Richardson Maturity Model (REST), http://martinfowler.com/articles/richardsonMaturityModel.html
16 Rubber Duck Debugging, https://en.wikipedia.org/wiki/Rubber_duck_debugging
[Nielsen10] | Jakob Nielsen, Ten Usability Heuristics, January 1, 1995, online: https://www.nngroup.com/articles/ten-usability-heuristics/ |
ScaleIT Architektur¶
Don’t forget to look at the App Design Richtlinien to build a better understanding of what a good App is.
App Readiness Checklisten hier
Ebenen der Architektur¶
The ScaleIT architecture allows teams or organisations to manage their own IoT landscape and innovate in their own pace using a parallel IT landscape. This landscape is usually called a shadow IT. This niche for the shadow IT arises from the dichotomous relation between shop floor software engineers and the company wide IT. While shop floor software engineers are enabled to have full control of their deployment environment, the company IT hosts these virtual environments isolated inside the company network. A shadow IT allows the shop floor teams to move independently to the central IT operations.
In this layered architecture, layers below provide software side control for the layers above (bottom up). The top down interaction is facilitated mainly by using pre-built platform services as sidecars. These sidecars are deployed bundled with the Apps (Fig. 3). The figure below illustrates the abstracted planes of responsibility, each housing a different set of Apps:
- Domain-Apps
- Apps that implement business cases reside on the domain App plane. It is the abstraction level at which business case applications are deployed (visualisation Apps or HMIs, machine learning Apps etc.). This is the plane where the process managers (Prozessleiter) would pick click-to-install Apps from an App store in support of the business processes. Workers come in contact with theses apps in their day to day work. Shop floor IT engineers deploy in-house App on this plane. Shop floor software innovation can thus be realized by adding a new or updated set of Apps.
- Business-Essentials
- The business essentials plane houses Apps that are rele- vant to the stability of the domain apps and therefore the business. This is also the plane where the IT team of the company would maintain their backup solutions, audit logs
- Platform-Essentials
- The platform essentials plane houses Apps that are re- quired to run the shop floor eco-system at an App level (App registry, App monitoring, routing, logging, App traces). This is the plane where a business would not need to do software lifecycle specific tasks as it will be comprised as open source, open platform distribution. Adapting the Apps on this plane is done through configuration via Web interfaces.
- Container Manager
- The container manager is responsible for the App lifecycle (start, stop, restart, update, replication) and provides an overview of the shop floor eco-system at a container level.
- Host System
- The host system is mainly a operating system running on hardware that is sufficient for the Apps deployed on it. The host system only requires a runtime engine for a con- tainer system (e.g. Docker). All subsequent software is in- stalled henceforth (bottom to top) as containers. Because all software runs inside containers, the host system can be ei- ther physically co-located with the shop floor or somewhere within the company or public cloud. Furthermore, addi- tional host systems may be Raspberry Pi-like devices where only an agent of the container manager is run.
By employing Web-based microservices, continuous deliv- ery, containerization, infrastructure as code and a DevOps culture, we believe that manufacturers can start building IoT solutions and scale them easily with their evolving busi- nesses, especially leveraging the ubiquity of modern Web technologies.
Given an open source reference implementation of the Platform-Essentials plane and corresponding side cars, a manufacturing company can spin up an entire software eco- system and deploy basic applications on it, even when staff capacity is limited. The use case implementation section details a scenario where a manufacturer managed to bring their new application into production in a faster and safer manner.
Shopfloor Roles Supported by ScaleIT¶
Viewing from the manufacturing perspective, there are several key roles held by the actors within an Industrial IoT system. Each of these actors is working with different levels of domain abstraction:
- Workers
- Despite a high automation degree, workers are central to the execution of shop floor processes. They need to receive information about the relevant states of the system and use apps as aid in their tasks.
- Process manager
- The design and controlling of shop floor processes lies in the responsibility of the process manager. This actor will usually search for productivity improvements while ensuring that the quality standards are met. By working data driven, the process manager is on the lookout for new applications that can bring benefits to the manufacturing process (dashboards, worker information applications).
- Shop floor IT Engineers
- Employees with software engineering experience, usually in small teams, are tasked with keeping the automation technology or the machine software running. They use their limited capacity to bring innovation through domain specific software onto the shop floor (usually triggered by the process manager).
- Company IT
- The Company IT is responsible for the security and reliability of the company networks and company wide software distributions (Office suite, CAX engineering software). In contrast to the other actors, the company IT very seldomly comes into contact with shop floor applications.
- Independent vendors
- Vendors are 3rd party software distributors and software component providers across all actors. Companies usually incorporate 3rd party software for the entire automation pyramid. However, most of the time, system integration is done manually in an ad-hoc manner by employees.
The above roles are a generalisation and the responsibilities may be be split between several persons. However, these roles are central to the continuous functioning and evolution of the shop floor.
App Anatomy¶

Eine ScaleIT-App besteht aus der Nutz-Software, die einer direkten Werstschöpfung dient, sowie der Plattformkomponenten die über das Sidecar-Pattern eingebunden werden.

Nach dem Prinzip des 1-Prozess/Container, wird die Software innerhalb eine ScaleIT App in mehrere unterschiedliche Container verpackt, die gemeinsam die gesamtfunktionalität abdecken.
Sidecar Pattern¶
Industry 4.0 Digital Readiness¶
App X-Readiness¶
The App E(x)ecution Readiness Checklist helps you create a ScaleIT App that is technically ready to be executed on any ScaleIT platform instance. It builds the basis for the other checklists.
DockerCompose is the chosen aggregation unit for an App. However, it can be replaced with Kubernetes Pods or Rancherfiles without changing the logical construction of an App.
Todo
Work in progress
App Containers (Docker Subsystem)¶
Git repository conforms to ScaleIT template (Domain Apps, Sidecars folders)
<app_name>
├── docker-compose.yml
├── dc.build.yml [optional]
├── .env.default
├── .env.test.default [optional]
├── .env.staging.default [optional]
├── .env.production.default [optional]
├── README
├── Resources/
| ├── Documentation/
| ├── Rancher/
| | ├── catalogIcon-<app1>.svg //jpg,png or other format ok
| | ├── appHubIcon-<app1>.svg //jpg,png or other format ok
| | ├── config.yml // meta-data about the app
| | └── Screenshots/ // App Screenshots
| | | └── 1.jpg
| | └── Versions/
| | . └── 0/
| | . . └── docker-compose.yml // compose version 2 due to compatibility reasons
| | . . └── rancher-compose.yml
| └── Documentation/
| └── README
├── Domain Software/
| ├── DomainContainer1/
| | ├── Dockerfile
| | └── <some other files>
| └── DomainContainer2/
| └── Dockerfile
└── Platform Sidecars/ [optional]
. ├── SidecarContainer1/
. | ├── Dockerfile
. | └── <some other files>
. └── SidecarContainer2/
. . └── Dockerfile
Dockerfile -> Docker Build -> Image: includes all needed Dependencies (Self Contained-ness/in sich geschlossen)
Docker Compose declares all needed Services (no other services will be started within the app)
The App can be started with a single “click” (docker-compose up)
Docker Compose declares all needed Volumes (Data Volume + Log Volume)
The App can be stopped and restarted without domain data loss or (docker-compose stop/restart)
The App containers can be deleted without domain data loss (docker-compose down)
The App containers can be replaced by new containers without domain data loss or corruption (docker-compose down + build + up)
The timezone set for the container is UTC. See Time Zone Details, Why UTC?
Data Migration check may be necessary
The created containers shut down properly (no PID 1 zombies)
Adhere to the Dockerfile best practices
App Interfaces¶
Sinn dieser Interfaces: “Eine Web-UI zu haben um Administration und Datensicht auf die App und das was sie macht zu erlauben”.
Administration Endpoint /admin
- admin/config
- admin/doc
- admin/log
- admin/status
User Endpoint /user
- user/doc
- user/status
Developer Endpoint /dev
- dev/doc
- dev/rest
- dev/swagger.yaml
Todo
Insert Link to Spec as Swagger file
App Catalog Entry¶
A separate git repository contains the meta-data from the Resources/Store directory
in a Rancher-compatible directory structure
Auto-generated entries for this repository (e.g. git post commit hooks that push
meta-data to this app-store repository)
-- templates
|-- <app1>
| |-- 0 // App1-Version 0
| | |-- docker-compose.yml
| | |-- rancher-compose.yml
| | |-- answers.txt //environment variables for rancher-compose
| | |-- README.md
| |-- 1 // App-Version 1
| | |-- docker-compose.yml
| | |-- rancher-compose.yml
| | |-- README.md
| |-- catalogIcon-<app1>.svg //jpg or other format ok
| |-- appHubIcon-<app1>.svg //jpg or other format ok
| |-- config.yml // meta-data about the app
| |-- README.md
|-- <app2>
| |-- 0 // App2-Version 0
...
Contents of the config.yml
name: # Name of the Catalog Entry
description: |
# Description of the Catalog Entry
version: # Version of the Catalog to be used
category: # Category to be used for searching catalog entries
maintainer: # The maintainer of the catalog entry
license: # The license
projectURL: # A URL related to the catalog entry
This information is strongly inspired by the Rancher Catalog system: [http://rancher.com/docs/rancher/v1.2/en/catalog/private-catalog/](http://rancher.com/docs/rancher/v1.2/en/catalog/private-catalog/)
A catalog entry generator can be found here: [https://github.com/slashgear/generator-rancher-catalog](https://github.com/slashgear/generator-rancher-catalog)
App Documentation¶
Readme states the purpose of the App
Readme lists the services and describes them shortly
Playbook includes App Lifecycle commands (pull, start, stop, upgrade)
Architecture Diagramm (eg. UML Deployment Diagramm)
Readme includes logo and screenshots
App Requirements (RAM, CPU, HDD)
### ScaleIT App Compliance Level
App has the networking information included (routing address)
Time Zone Details, Why UTC?¶
Why Not {PST, GMT, PDT, etc}? [2]
- UTC has no Daylight Savings
- Uniform time across all sites, factories and offices
- Decreases data corruption chances due to inconsistent time zones
- Standardized time across all our Apps will ensure logs, databases and all components relying on the time will function in a predictibale and interoperable way.
Note
- This will move the problem up into the UI layer. We recommend working with UTC inside the App logic and converting UTC to local time only on the user interface.
- Tech Tip: Using the angular DatePipe in the UI will help you achieve this easily [3]. Look in the programming language of your choice to find similar useful features.

UTC in a glance [1]
[1] | UTC in a glance, https://www.timeanddate.com/worldclock/timezone/utc |
[2] | An argument for UTC, http://yellerapp.com/posts/2015-01-12-the-worst-server-setup-you-can-make.html |
[3] | Angular DatePipe, https://angular.io/api/common/DatePipe |
App Engineering Readiness¶
This Readiness list includes proper features of a well maintainable and extensible software application. While this is optional, it is highly recommended for ensuring a proper App Eco System as it includes Software Engineering best practices.
Software Engineering¶
Reactive Design (App Richtlinien)
[https://projects.teco.edu/projects/scaleit-ap2/wiki/Richtlinien_App-Entwicklung](
https://projects.teco.edu/projects/scaleit-ap2/wiki/Richtlinien_App-Entwicklung)
Development Process¶
Maintenance¶
- Verification scripts for data base format upgrades
Testing¶
- CI compatibility
- Container level test suite
- BDD Testing
Production Readiness Checklist¶
The Production Readiness Checklist and Microservice Evaluation is an advanced list for ensuring the microservices have a level of production readiness comparable to those of companies such as Uber, Netflix, Google etc [4].
A. Production-Readiness Checklist¶
Production-Ready Service is …
- Stable and Reliable
- Scalable and Performant
- Fault Tolerant and Prepared for Any Catastrophe
- Properly Monitored
- Documented and Understood
B. Evaluate Your Microservice¶
- Stability and Reliability
- The Development Cycle
- The Deployment Pipeline
- Dependencies
- Routing and Discovery
- Deprecation and Decommissioning
- Scalability and Performance
- Knowing the Growth Scale
- Efficient Use of Resources
- Resource Awareness
- Capacity Planning
- Dependency Scaling
- Traffic Management
- Task Handling and Processing
- Scalable Data Storage
- Fault Tolerance and Catastrophe-Preparedness
- Avoiding Single Points of Failure
- Catastrophes and Failure Scenarios
- Resiliency Testing
- Failure Detection and Remediation
- Monitoring
- Key Metrics
- Logging
- Dashboards
- Alerting
- On-Call Rotations
- Documentation and Understanding
- Microservice Documentation
- Microservice Understanding
[4] | Susan J. Fowler Production-Ready Microservices, https://www.safaribooksonline.com/library/view/production-ready-microservices/9781491965962/ |
App ECO-Readiness¶
The App ECO-Readiness is a list of capabilities that an App can use within the ScaleIT Eco System. Based on the capabilities fulfilled, the App receives a Compatiblity Readiness Level (0-4).
General Capabilities¶
Compliance Level 0¶
An app must …
- Meet the X-Readiness Checklist
- Be uniquely identifiable and by a URL or IP(v4/v6) Adress
- Have a human readable Web UI at its adress
- Support at least HTTP/1.1
- Works standalone with a minimal feature set.
- Communicates Errors to the user
Compliance Level Max¶
- Must follow the Engineering Readiness list
Networking¶
An app must …
Level 0¶
- Have an open TCP/IP network pathway to the Web-UI (IP+Port/URL).
Level 1¶
- Reverse Proxy Support with static (per deploy) qualified domain names
- Able to receive HTTPS requests
Level 2¶
- Able to send and receive MQTT messages
Level 3¶
Data Handling Capabilities¶
Level 0¶
- Supports JSON Syntax for data exchanges.
- Parse errors or data handling exception do not cause the app to crash
Level 1¶
- Supports JSON Syntax for data exchanges and returns parsing error information
Level 2¶
Level 3¶
Level 4 (Semantic Enabled)¶
- Expose RDF-structured data with semantic annotations.
- JSON-LD as recommended syntax format for data exchange
- Vanilla JSON for backwards compatibility
- Self-describing API (eg. using the Hydra vocabulary).
have a root resource accessible via an HTTP URL. * expose a REST API. * accord to the highest level of maturity in the RMM. * fulfill all four Linked Data principles. * implement passive communication. use JSON or
over a human-facing HTML representation or user-interface. be stateless. * explicitly declare its dependencies, instead of relying on system-wide packages
Future Readiness, ensure the app… * Has HTTP2 support and can be upgraded to HTTP2 * …
Eco System Readiness - Platform¶
The Eco System Readiness describes the capabilities the underlying App Execution Environent and Platform Essentials provided.
General Capabilities¶
Compliance Level 0¶
- TCP/IP Networking layer
- HTTP and HTTPS Communication layer (Open ports 80 and 443 in Firewall)
- Container (Docker) runtime
Compliance Level 1¶
- Additional Communication Buses (MQTT, Autobahn etc.)
- Container (Docker) Registry
- HTTP Routing Capabilities
Compliance Level 2¶
- HTTPS support in central Routing (enables secure privacy sensitive features for HTML5 such as cameras)
- Routing Side Car
- Single Sign On
Compliance Level 3¶
- App Store
- License Management
- Data Safety (eg. Automatic Backups)
- Data Security (eg. Encryption)
- Identity Manager
- Role Manager
- Corporate Design Manager
Compliance Level 4¶
Compliance level 4 may only be relevant to large (>50 Apps) deployments as well as for high resiliance and minimal downtime scenarios (<1s). May be attained with more complex runtimes such as Kubernetes (Vanilla K8s, Openshift etc.).
- Auto Scaling
- Cross Server Replication
- Distributed storage interface (eg. CEPH)
- Cluster Resource Monitoring
INSERT SCALEIT PLATFORM DESCRIPTION HERE
Also: https://projects.teco.edu/projects/scaleit-ap2/wiki/ScaleIT_App_Compliance_Level
Networking¶
Port-Vergabe¶
Network Ports für Apps¶
Als Konvention werden Ports innerhalb der Plattform zwischen den dynamischen Ports 49,152 und 65,535 vergeben.
- Port range 49500 through 49599 for platform components
- Port range 49600 through 49699 for business essentials components
- Port range 49700 and above for apps
Port ranges are assigned for companies, e.g. 49700-49900 for Ondics Apps
Tabelle der Port-Konventionen in ScaleIT:
Port | Komponente | Organisation | |
---|---|---|---|
80 | ScaleIT Proxy | ScaleIT-Org | |
49500-50000 | ScaleIT-Org
|
||
49500 | Rancher Server | ||
49501 | App Registry | ||
49502 | Identity Management | ||
49503 | MQTT Broker | ||
ScaleIT Entwicklungs-Partner | |||
50000-50500 | ATOS
|
||
50500-51000 | Fraunhofer
|
||
51000-51500 | KIT
|
||
51500-52000 | ondics
|
||
52000-52500 | SICK
|
||
53000-53500 | SmartHMI
|
||
54000-54500 | ZEISS
|
||
ScaleIT Anwendungs-Partner | |||
54500-54600 | digiraster
|
||
54600-54700 | Feinmetall
|
||
54700-54800 | microTEC Südwest
|
||
54800-54900 | Rood Microtec
|
||
59000-55000 | Universität Stuttgart
|
||
Externe Partner | |||
55000-55100 | ITstrategen
|
||
55100-55200 | YUMA technologies
|
||
55200-55300 | Ingenieurbüro Teichgräber
|
||
55300-55400 | HS Esslingen
|
||
55400-65536 | Frei
|
Funktionen der Plattform Essentials (Zentrale Services)¶
App Registry¶
In der Referenzplattform durch ETCD implementiert.
- kann von jeder app als key-value store genutzt werden
- der top-node muss der fqdn-name der app sein (z.b.
/pacman_1.host_1.scaleit)
weitere regeln dazu: - jede app sollte nur die einträge der eigenen app lesen - die zentralen apps haben spezielle root-nodes, z.b.
/apphub
- wenn eine app gelöscht wird kann der node gelöscht werden
(z.b. von einem registry-cleaner-prozess)
- die apps dürfen den etcd nicht als massendatenspeicher
nutzen
- systemweite einstellungen finden sich unter /scaleit,
z.b. /scaleit/language oder /scaleit/brand/company-name… alle apps solten das berücksichtigen
Fragen zu den Anforderungen and das Networking in ScaleIT¶
- Der Zugang nach außen soll möglich sein (z.B. “ping google.de”)
- Wie werden zentrale Services aus einem Container angesprochen?
- Ideal wäre sowas wie “ping apphub.coreservice.scaleit”?
- Wie werden andere Container angesprochen? Achtung: Apps können mehrfach instantiiert werden oder auf verschiedenen Hosts laufen!
- Ideal wäre “ping pacman_1.host_1.scaleit”
- Wie können Services von außen angesprochen werden?
- Hierzu sollte im Firmennetz *.scaleit.company.com an die ScaleIT-Plattform weitergeleitet werden
- Der DNS-Name pacman_1.host_1.scaleit.company.com würde dann zur App führen
- Was muss in den docker-compose stehen?
- Springe zu Docker Compose network configuration
- Was muss auf Docker-Ebene passieren (sollen wir ein eigenes Docker-Netzwerk definieren?)
- Ja, auf Docker (Container) Ebene wird es mehrere Netzwerke geben. Siehe ScaleIT App Networking
Docker Compose hier!
ScaleIT App Networking¶
Ein logischer Server mit zentralen Diensten, die nur einmalig im System vorkommen können:
- Rancher
- App-Hub
- Licence Manager
- Yellow Pages (ETCD)
- LDAP / OAuth-Server
Ein oder mehrere Hosts, auf dem Apps laufen.
Diagrams inspired by _1Backend
Internet Firmen-Intranet
/------------------------------\ /--------------------------------------------------------------------------------------\
ScaleIT-Netz
/---------------------------------------------------------\
client request client request client request
to service A to service A to service A
( ) -----------------> |----------| -----------------> |-----------------------| -----------------> |------------|
( client ) | Firewall | | ScaleIT Reverse Proxy | | Apps |
( ) <----------------- |----------| <----------------- |-----------------------| <----------------- |------------|
service A response service A response service A response
to client to client to client
^
|
|---- place of instrumentation and other magic
HTTP Request Headers¶
Copy from Github repo
Kommunikation auf der ScaleIT Plattform¶
Die Kommunikation auf der ScaleIT Plattform
Es wird unterschieden zwischen
Meldungen die an eine einzige Entität gehen
an eine einzige Instanz oder
Kommunikation zwischen Apps (App-2-App)¶
1:1 Kommunikation (Peer2Peer,Resourcenanfragen)¶
1:n Kommunikation 9¶
Kommunikation zwischen Apps und der Plattform (App-2-Platform)¶
Die Kommunikation zwischen Apps und der Plattform (App-2-Platform) wird über den Sidecar-Mechanismus realisiert. Entwickler binden die Platform-Sidecars ein und nutzen die standardisierten HTTP APIs, um darauf zuzugreifen. Dabei ist zu beachten, dass die Sidecars im internen Netzwerk der App mit ihren docker-compose Service Namen angesprochen werden können.
Requests die durch das Routing Sidecar an die App gegeben werden enthalten je nach ausbaustufe der Plattform Informationen zu Identität, Authorisierung, Lizenz etc. - z.B. als HTTP Header. Dadurch, dass der Entwickler dem Sidecar vertraut können diese in der App genutzt werden ohne die zentralen Instanzen anzusprechen. Dadurch wird die Abhängigkeit zu einer bestimmten Plattforminstanz reduziert.
Die Sidecars melden den zentralen Plattformkomponenten (Platform-Essentials?) und Business Essentials wenn es Änderungen gibt. Z.B. HTTP API.
Weil sich hinter diesen zentralisierten Komponenten meist ein Cluster von Anwendungen verbirgt, … Master-Komponenten und Slave Komponenten… They tie the whole system together.
Kommunikation mit der App Registry¶
Kommunikation mit dem Identity-Manager¶
Kommunikation mit dem License-Manager¶
ScaleIT Lifecycle Section¶
The lifecycles of different aspects of the ScaleIT ecosystem are presented in this chapter.
From Idea to App¶
App Store Lifecycle¶
- Review Process
- etc.
Deploy Lifecycle¶
also look into googling: circle ci lifecycle
The stages through which an App goes until it reaches
- The pull request runs tests and is marked as good to merge into master
- The engineer merges the PR and tests are again run against master
- That commit of master deploys to our centralized staging server
- Sanity checks run automatically on the staging server
- That commit then deploys to production
- Sanity checks run on production
- Success and failure notifications are sent via Slack at every step
- Rollback possible for several weeks (depending on the storage settings)
Warning
Don’t forget to create release notes and bump the necessary versions.
In the event of a rollback, an engineer must manually deploy from their machine to cause the latest release status to change and implicitly “re-activate” continuous deployment.
There should be checks with kill switches along the way (e.g. for every environment and one final manual approval from shop floor process owners).
Important people (on call) should get notified of deployments statuses
Sicherheit (Security) auf der ScaleIT Plattform¶
Für Entwickler¶
- Gegen wen und gegen welche Angriffe schützen wir unsere ScaleIT Instanz?
- Externe Angreifer:
- Im Falle einer horizontalen Vernetzung oder Erreichbarkeit der Infrastruktur aus dem Internet oder durch ungesicherte WLAN Access-Points.
- Interne Angreifer:
- Interne Angreifer sind immer ein hohes Risiko. ScaleIT bietet durch den App-Aufbau aber Mechanismen, die den Zugriff limitieren, wie z.B. separate Netzwerke für sensible Komponenten innerhalb eine App oder Rollenbasierte API-Zugriffskontrolle.
- Schlechte Software:
- Eine Software kann wissentlich oder unwissentlich Schaden verursachen. Ein Beispiel dafür ist die Ressourcennutzung (PIDs, CPU etc.) oder der Zugriff auf das root Filesystem. Einstellungen die die Angriffsfläche mindern sind in dem ScaleIT SDK eingebaut. Es wird den Entwicklern empfohlen die Standardwerte zu nutzen. Der Review-Prozess im offiziellen ScaleIT-App-Store verifiziert (automatisch) jede neue App, um solche Szenarien zu vermeiden.
Todo
- Welche innerhalb und außerhalb von Docker liegenden sicherheitsrisiken gibt es und was tun wir dagegen?
- Beantworten
- Wenn das “ScaleIT System” nicht auf Kommandozeilenebene zugänglich ist, fallen damit wesentliche risiken weg?
- Nein, solange Container im privilegiertem Modus, mit dem Docker Socket arbeiten oder auf das root Filesystem Zugriff haben, kann man das nicht pauschal sagen.
Todo
- Wie organisieren wir das ssl-zertifikat management?
- Brauchen wir eine eigene certificate authority, um an die apps zertifikate auszustellen bzw. diese zu überprüfen?
- Beantworten
- Wie gehen wir mit ablaufenden zertifikaten um?
- Beantworten
Todo
- Welchen Bezug gibt es zu den standards, die auf dem hallenboden und im betrieblichen umfeld gelten (bsi, …)?
- Beantworten
iIch bin der Architekt im ScaleIT Projekt.
Für IT-Safety (Data Safety) gibt es Ansätze, aber diese sind im Protoypenstadium. Backups sollen in der komerziellen Version von der Firma Ondics bereitgestellt werden. Fingerprinting, Checksum-Verifikation, Blockchain-Audit oder andere Mechanismen höchstwahrscheinlich nicht. Kritische Apps sollten in separaten VMs laufen damit ein Kernel-Panic nicht das gesamte System mitnimmt. Apps die den maximalen Data Safety App-Level implementieren müssen migrationsskripte und daten-checks mitliefern sowie bei Ausfällen wieder von alleine auf Konsistenz kommen.
Zum Punkt IT-Security an:
Das gesamte System basiert auf Virtualisierung mit Docker und kann zusätzlich auf mehreren physischen oder virtuellen Maschinen installiert werden, je nach dem wie kritisch bestimmte Daten sind und wie stark eine Isolierung erwünscht ist.
Verschlüßelung der Daten innerhalb der Container ist noch experimentell aber prinzipiell leicht zu erreichen, in dem man mit virtuellen Platten und verschlüßelten Dateisystemen arbeitet. RAM Verschlüßelung ist soweit mein Wissensstand ist, auch in der Wissenschaft noch nicht richtig gelöst (oder über spezielle CPUs und Betriebssysteme). Intel SGX may be a solution or TPMs or homomorphic encryption schemes?
Da die Apps komponentenbasiert aufgebaut sind, ist die interne Kommunikation nicht nach außen sichtbar, und nur zugelassene Kommunikation darf nach außen (wenn die passenden Sidecars in der App konfiguriert sind - InApp-Firewall). Den Austausch der Sidecars innerhalb der Apps durch sicherere Komponenten ist eine Operation die sehr wenig Ressourcen in Anspruch nimmt.
Kommunikationsverschlüßelung geht über die gängigen Standards wie HTTPS und MQTTS.
Eine Zugriffskontrolle über Single-Sign-On (OAuth2) ist bald auch komerziell verfügbar, um die Nutzerauthentifizierung zu Erlauben. Über denselben Mechanismus sind dann auch API-Zugriffe implementierbar (wir haben aber diesen Fall noch nicht implementiert - die Konfiguration der Schnittstelle muss noch gemacht werden).
Theoretisch funktionieren alle Sicherheitsmechanismen die in Docker, Cloud-Systemen und dem Web zum Einsatz kommen.
Nutzt man komerzielle Docker-Registries (wie z.B. die Firma SICK), dann gibt es die Möglichkeit für die App-Betriebssysteme und installierten libraries einen automatischen Security Check durchzuführen. (https://coreos.com/quay-enterprise/docs/latest/security-scanning.html)
Unsere Dokumentation ist noch im entstehen, aber Sie können immer den aktuellen Stand hier aufrufen: https://github.com/ScaleIT-Org/documentation
Blockchain integration and potential use cases¶
Blockchain/Tangle-basierte Identifikation, Nachverfolgbarkeit und Smart Contracts Das verteilte Buchführungssystem kann die Bezahlung von Daten quittieren, aber auch Daten ge-gen Veränderungen schützen. Hierdurch ist jederzeit eine vollständige Nachvollziehbarkeit und Trans-parenz für alle Beteiligten gewährleistet. • Lokal verteilte Registrierung von Daten und Diensten bei lokaler aber nicht globaler Transpa-renz • Lokale Bezahlung von Daten und Dienste/Transaktionen und Erstellung von Smart Contracts • Manipulationsgeschützte Nachvollziehbarkeit von Daten, beweisbare Prozesse • Leichtgewichtige Absicherung der Daten-Integrität und -Vertrauenswürdigkeit im Edge (lokalen) Data Lake, ohne die Notwendigkeit der ständigen Synchronisation mit externen Systemen • „Offene Daten”, also Daten, die – innerhalb der Plattform – nicht verschlüsselt werden und dessen Integrität und Authentizität trotzdem sichergestellt werden kann. • Aspekte zu Identität, Rollen und Rechten, die sowohl humane Akteure als auch Maschinen betreffen, die am Gesamtsystem beteiligt sind.
Apps als ereignisbasierter Microservices in einem Kafka basierten Data Lake Grundlage sind ereignisbasierte Microservices, die die zustandslose Komposition von Apps zulassen. Diese können Daten zentral beim Betreiber der Anlage ablegen. Dies ermöglicht selbst dem kleinsten Sensor, die Erfassung langer Historien. Der Betreiber selbst muss erst einmal selbst keinen Zugang zu den Daten des ScaleITsmart Data Lake haben (ausgenommen „offene Daten“). Im Zusammenspiel mit dem Marktplatz kann er sie aber ausschnittsweise von den Maschinen, die diesen zentralen Spei-cher nutzen, erwerben. Hierzu werden zeit- und objektbezogene Krypto-Schlüssel genutzt. …
TEST¶
RST Tests here