
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
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