Christian Kaestner
Required reading:
Recommended reading: Rick Kazman, Paul Clements, and Len Bass. Software architecture in practice. Addison-Wesley Professional, 2012, Chapter 1
Focused on reasoning about tradeoffs and desired qualities
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. -- Kazman et al. 2012
Raffi. New Tweets per second record, and how! Twitter Blog, 2013
Ghemawat, Sanjay, Howard Gobioff, and Shun-Tak Leung. "The Google file system." ACM SIGOPS operating systems review. Vol. 37. No. 5. ACM, 2003.
What AI techniques to use and why? Tradeoffs?
What qualities are relevant for the decision?
Identify key components of a solution and their interactions
Estimate latency and bandwidth requirements between components
Discuss tradeoffs among different deployment models
How to evaluate mistakes in production?
Purpose:
Challenges:
What data to collect? How much? When?
Estimate data volume and possible bottlenecks in system.
Microservice architecture:
Model Inference and Model Learning as a RESTful Service?
What's the interface between the AI component and the rest of the system?
Consider encapsulating the model as a microservice. Sketch a (REST) API.
What could happen if models become stale?
Risk: Discuss drift, adversarial interactions, feedback loops
Estimate the required update frequency and the related cost regarding training, data transfer, etc.
Stream + Batch Processing
(no standardization, yet)
Third-Party AI Components in the Cloud
AI Components as Microservices
Hardware, software, models?
Qualities of interest? Important design tradeoffs? Decisions?