This talk describes the role of software architect in modern IT organisations and which typical issues you solve as an architect. Especially if the organisation is implementing microservices architecture.
Wikipedia (on 6th Nov 2017) “Software architecture refers to the high level structures [...] creating such structures, and the documentation of these structures. [...] Each structure comprises software elements, relations among them, and properties of both elements and relations. Software architecture is about making fundamental structural choices which are costly to change once implemented.”
Companies where i’ve been an architect. ~150 employees in IT On-premise Scrum 2-5 architects >2000 employees in IT On-premise + Cloud Agile > 5 architects ~60 employees in IT On-premise + Cloud Agile 1 architect + 3 lead developers
Role of Architect Depends highly on context, for sure. Quality of Software Architecture for your services, modules, libraries Design Documentation Execution Developer
Macro Architecture Decisions for all modules http://isa-principles.org All modules are part of one system Should be as stable as possible Should be as minimal as possible
Tech Guidelines You build it, your run it. Which tech stacks can be used? How to test? How to monitor? What to monitor? How to deploy? What are deployable artifacts?
API Guidelines Favor REST maturity level 2 Backward compatibility over versioning Common data and error objects Naming rules Syntax rules for consistency https://github.com/zalando/restful-api-guidelines
Tech Radar Based on idea of ThoughtWorks Tech Radar Gives guidance for tech stack choice More focus in the company on tech stacks which fits best for context Increase the bar to introduce new technologies https://github.com/zalando/tech-radar
Team Architects 1 team architect per team Voted by each team Team architect is responsible for cross-team alignment and macro architecture alignment Team architects inform and consult with dedicated architects
API Guild Group of developers and dedicated architects Owned and maintained API guidelines and API review processes Bi-weekly guild meeting to decide about important topics Consensus driven decision making
TAR and Lead Developers TAR = Technical Architecture Review Group of lead developers, dedicated architect and if necessary others groom technical topics Owned by dedicated architect who manages projects and clarifies priorities with stakeholders TAR backlog managed by Kanban board across teams
Pivio “Microservice documentation for your platform” Developers document locally in their repositories with YAML files YAML files are aggregated by central system Central UI and API server for retrieving data, e.g. for architectural overview http://pivio.io
General Advice Lower documentation barrier for devs Shared understanding of what should be documented Same symbols across teams Shared understanding of diagram types across teams Deliver templates and offer support for implementing documentation guidelines
Technical Compatibility Kit Automates compliance check for technical guidelines Checks runtime view of service, e.g. - is health check resource implemented as expected - is graceful shutdown implemented - is monitoring working TCK was integrated in each deployment pipeline
Zally - API Linter Service integration happens at Zalando via Restful APIs (and events) API First with API review for each API draft Zally automates such reviews by validating given Swagger file with Zalando’s API guidelines https://github.com/zalando/zally