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.

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. 

About the instructor: Tore Nestenius

 Tore has worked as a consultant since 1997 and is a very knowledgeable system developer and has in the past worked for large companies like Ericsson and Flextronics. Early in his career, Tore Nestenius started Programmers Heaven - a portal with over 750 000 monthly users. He’s behind several other successful projects like CodePedia - a Wiki for developers, the Open Source project TNValidate, and the C# School e-book with over 100 000 downloads.

Course outline:

  • The Role of The Architect

    • Why design matters
    • Complexity
    • The architects place in the team.
    • Why architecture is hard.

     

    Getting feedback

    • TDD
    • Continuous Integration & deployment
    • Refactoring
    • Software metrics

     

    Domain Driven Design (DDD)

    • Bounded contexts
    • Ubiquitous language
    • Entity and value objects
    • Invariants
    • Aggregates

     

    Data Access Architecture

    • CAP theorem
    • ORM mapping
    • NoSQL databases
    • Polyglot persistence

     

    Event sourcing

    • State vs event sourcing
    • Building an event store
  • CQRS

    • Semantic operations
    • Read vs Write
    • The CQRS pattern
    • Commands and events
    • Write and read sides
    • Integration
    • Testing

     

    Architecture patterns

    • Sagas and process managers
    • Circuit breakers

     

    Services

    • Micro-services
    • REST APIs
    • Hypermedia
    • Creating scalable and reliable APIs
    • Webhooks
    • GraphQL

     

    Containers

    • Container vs Virtual machines
    • Docker
    • Docker files & images
    • Serverless

     

    Security

    • The security challenges
    • Hacking your self
    • Social engineering
    • Securing your architecture

     

    Identity

    • Authentication
    • Authorization
    • Tokens
    • OAuth
    • OpenID-Connect

Other relevant courses