top of page

Software Architecture

How do you avoid making your project a big ball of mud? How do you balance a wide range of design concerns and constraints? How do you map customer requirements to working software? This course provides you with the means and methods to face these challenges.

Architecture is often what separates a successful project from chaos. Modern systems place high demands on the architect and the developers.

They should be

  • persistent, and not lose information

  • available and clear load peaks

  • easy to integrate with other systems

  • distributed (sometimes)

  • secure

  • testable

  • easy to expand and manage

Everyone knows the problems, but the traditional solutions that are taught usually lead to big systems with big problems. This course teaches you alternative patterns, missing pieces of the puzzle, and that there are more ways to solve the problems.


We are often told that this course offers things that other courses do not have. This is because we have designed it based on many years of experience in large-scale projects in the industry.

What you will learn

The Role of The Architect

  • Why design matters

  • Complexity

  • The architect's place in the team.

  • Why architecture is hard

  • Visualizing architecture
     

Build and deploy

  • Continuous Integration and Deployment

  • Feature flags

  • Securing our build and dependencies


Domain Driven Design (DDD)

  • Bounded contexts

  • Ubiquitous language

  • Entity and value objects

  • Invariants

  • Aggregates

  • Context mapping


Event Storming

  • Introduction to running Event Storming sessions to explore, discover and model a domain.


Database architecture

  • CAP theorem

  • ORM mapping

  • NoSQL databases


Event sourcing

  • Using events as the source of truth

  • Possibilities with Event Sourcing

  • Implementing Event Sourcing


Reads vs. Writes

  • Separating reads from writes

  • Normalized vs. denormalized data

  • Implementing the read and write side

CQRS

  • Command-Query Separation (CQS)

  • Command Query Responsibility Segregation (CQRS)

  • CQRS , vs Event Sourcing vs DDD
     

Behavior Driven Development

  • Introduction to BDD

  • Writing tests closer to the domain

  • Writing BDD tests with commands and events


Event Modeling

  • Introduction on how to model our design using the event modeling technique.


Architectural concepts

  • Transactions

  • Outbox pattern

  • Exact once delivery

  • Idempotency

  • Guaranteed ordering

  • Consistency

  • Data truth


Resilient systems

  • Retries

  • Circuit breakers

  • Resilience patterns

  • Chaos Engineering


Monolith and Micro Services

  • Why do we fail with the monolith?

  • How can we improve it?

  • Composition

  • Micro front end

  • Micro-services

  • Slicing our architecture

  • Event Aggregator pattern

Target audience

Developers and architects who design systems or assume the role of the architect in a project. 

Prerequisites

A couple of years of development. Preferably in an object oriented language (Java, C#, C++). The course, however, is language and platform independent.

20 900 SEK

Next course opportunity
18 - 19 September 2023

- The course is given remote or in classroom
- Contact us for upcoming courses
- If you are a team there is an opportunity for content adaptation based on your needs

Duration: 2 days, or 4 half days             

Level: Beginning

Language: English/Swedish                  

Course code: T100

Mjukvaruarkitektur - intresseamälan

REFERENCES

My expectation was to get new tools to use and that was fulfilled! Tore is very knowledgeable and was easy to listen to. I liked him. My favorite parts were about the role of the architect, build and deployment and CQRS & Event sourcing.

PARTICIPANT

Even if you know what software architecture is, it is worth participating in this course. It gives you a clearer picture about software architecture and even if you have experience in this area you will be more experienced, and you can just be better with repetition.

PARTICIPANT

Thorough coverage of different but symbiotic concepts and methods. Also, plenty of references to additional course material. Participating online was a smooth experience, Zoom worked well.

PARTICIPANT

Thorough coverage of different but symbiotic concepts and methods. Also, plenty of references to additional course material. Participating online was a smooth experience, Zoom worked well.

PARTICIPANT

bottom of page