Using a hands-on format, this workshop will address the design and construction of a well-understood back-of-house system found in larger organizations: a resource-consumption based billing system. We will focus on multi-group collaboration to build a service-oriented architecture with individual groups being responsible for a service vertical. Basic infrastructure tools and specific goals for each service vertical will introduce and teach functional concepts that will be immediately useful in existing production environment. Each service vertical and the total integrated system will be exercised by a tool that I will provide. Intra-component protocols will be well-specified and groups will be free to meet their goals as they see fit. No specific language will be used. Participants are encouraged to use languages they are comfortable with. The principles being taught in this workshop will require functional architectures and this will be covered explicitly. Special emphasis will be placed on designing for instrumentation and monitoring using functional principles and the goals of the workshop will support this emphasis. 


Outline/Structure of the Workshop

Hour 0-0.5: Introduction of the system to be constructed, its protocols and available language-agnostic tooling for monitoring. Course goals will be defined. Groups will be formed.

Hour 0.5-4: Individual system vertical work and system vertical integration. Groups are warmly encouraged to ask questions of me and of one another. It is expected that the system will be minimally operational at the close of this session, as defined by the provided integration checking tool.

Hour 4 - 5: Break and discussion.

Hour 5-6.5: Integration and load ramp-up. The integration tool will stress the integrated system and individual vertical's monitoring will come to bear more heavily. Adapting an existing system and diagnosing its ills through exploring available instrumentation is expected. At the end of this session it is expected that vertical component limitations will be well-defined, tolerances will be understood and able to be alarmed on. 

Hour 6.5-7: Solidification of monitoring dashboards for hand-off to hypothetical Operations department. System vertical groups will be responsible for designing vertical-specific dashboards for their own verticals and collaborating on a total-system dashboard. 

Hour 8: Wrap up and review of progress, principals. Groups will demonstrate their systems and we will review common functional architectural learnings. The created system will be reviewed and a discussion on learnings will take place. Options for future work will be discussed.  

Learning Outcome

It is expected that participants will learn two major things: 

  • how to design a system with 'empirical' measures in place for operational control using functional architecture
  • the use of existing and common tools to achieve the above

Notions of tolerances will be addressed, discussions of failure-modes and of information design for use in system-failure circumstances. Participants will have gained real-world experience to be used in production systems and working environments.

Target Audience

Software Engineers, Architects



schedule Submitted 7 years ago