Application architecture

Reading time ~1 minute

General info

Theory to practice ratio: 95% practice
Duration: 3 days

Goal

This training is design to widen the scope of what software architects can do and give them tools to execute by:

  • showing how to use DI container and ORM conventions for application extensive problem-solving.
  • giving tools to mitigate serious performance problems in the development phase.
  • showing different styles of application architecture and when to use them

Program

  1. Introduction
    1. What are the responsibilities of application architecture
    2. Critical areas of influence in application architecture
  2. Application object lifecycle - DI containers
    1. Understanding how a DI container works.
    2. Defining the responsibilities of a container.
    3. How to organize registrations.
    4. Proper lifecycle management.
    5. Design and performance pitfalls.
    6. Useful features
  3. Data modeling and ORM
    1. Understanding how an ORM framework works.
    2. Modeling hierarchies.
    3. Modeling value and reference types.
    4. Auditing objects with listeners.
    5. Architectural level mitigations of the N+1 problem.
    6. Full vs. lightweight ORMs.
  4. Application level architecture
    1. Layered
    2. Hexagonal/Onion Architecture
    3. Railway orientated Programming
    4. Dataflow
    5. Event architecture
    6. Reactive
    7. Background processing
    8. CQRS
  5. Avoiding performance problems with MiniProfiler
    1. Installation and configuration
    2. Scopes and use in background jobs.
    3. Good and bad practices.
    4. Time machine.
    5. Security and performance cost.
    6. Recording performance issues from testing environments and automating issue reporting.

Materials

After the training all attendees get a before and after zip package with all excercises done during the workshop.