  Federated learning has received fast-growing interests from academia and
industry to tackle the challenges of data hungriness and privacy in machine
learning. A federated learning system can be viewed as a large-scale
distributed system with different components and stakeholders as numerous
client devices participate in federated learning. Designing a federated
learning system requires software system design thinking apart from machine
learning knowledge. Although much effort has been put into federated learning
from the machine learning technique aspects, the software architecture design
concerns in building federated learning systems have been largely ignored.
Therefore, in this paper, we present a collection of architectural patterns to
deal with the design challenges of federated learning systems. Architectural
patterns present reusable solutions to a commonly occurring problem within a
given context during software architecture design. The presented patterns are
based on the results of a systematic literature review and include three client
management patterns, four model management patterns, three model training
patterns, and four model aggregation patterns. The patterns are associated to
particular state transitions in a federated learning model lifecycle, serving
as a guidance for effective use of the patterns in the design of federated
learning systems.
