Skip to content

Instantly share code, notes, and snippets.

@audacioustux
Last active October 29, 2023 11:23
Show Gist options
  • Save audacioustux/5c7dd7f04d3a09bce241f2ff0afdae4c to your computer and use it in GitHub Desktop.
Save audacioustux/5c7dd7f04d3a09bce241f2ff0afdae4c to your computer and use it in GitHub Desktop.
Project Alo - 2020 Cohort

Advanced Software Engineering and Modern Architecture
2020 Cohort - Project Alo

Goal: Gain the necessary knowledge and skills to become a world-class software engineer and solution architect capable of architecting and developing robust, scalable, highly-available, flexible, extensible and maintainable frameworks, platforms and custom solutions.

LEVEL 1: FOUNDATIONS OF MODERN SOFTWARE ENGINEERING

  • Software Engineering - Basics (Evolution, Concepts and Principles)

  • Real OOP and Alan Kay's approach

  • State-Process Protection

  • Smalltalk language - basics

  • Actor Model and Carl Hewitt's approach

  • Location Transparency

  • DbC (Design-by-Contract) - Bertrand Meyer

  • Functional Programming

  • Object-Oriented Design Principles (Abstraction, Cohesion, Coupling, Compartmentalization, SOLID, etc.)

  • Fundamentals of Object-Oriented Analysis and Design (body of work of Martin Fowler, Ivar Jacobson, Bertrand Meyer, Grady Booch, James Rumbaugh, Rebecca Wirfs-Brock, Ed Yourdon, Peter Coad, Craig Larman, Scott Ambler)

LEVEL 2: DOMAIN MODELING AND DESIGN

  • DDD - Domain-Driven Design (Eric Evans and Vaughn Vernon)
  • Ubiquitous Language
  • Entities, Value Objects, Rules, Specifications and Services
  • Aggregates
  • Factories and Repositories
  • Modules
  • Design Refactoring
  • Analysis Patterns
  • Design Patterns
  • Strategic Design
  • Bounded Contexts
  • Context Mapping
  • Core Domain and Subdomains
  • Responsibility Layers
  • Pluggable Component Framework
  • Event Storming vs Workflow Analysis

LEVEL 3: MODERN SOFTWARE ARCHITECTURE

  • Software Architecture - Basics (Evolution, Concepts and Principles)

  • Evolutionary Architecture (Rebecca Parson and Neal Ford)

  • Hexagonal Architecture (Alistair Cockburn)

  • Dependency Inversion and Injection

  • Onion Architecture (Jeffrey Palermo)

  • Clean Architecture (Ivar Jacobson and Robert Martin)

  • DCI Architecture (Trygve Reenskaug and Jim Coplien)

  • Vertical Slice Architecture (Jimmy Bogard)

  • Client-side architectures like MVC, MVP, MVI, PAC, VIPER, Uber RIB, Netflix Componentized, AirBnB's architecture, etc.

  • Leading client-side frameworks Flutter, iOS, Android, Angular, React, Vue, Svelte etc.

  • Workflows / LRPs - Long-Running Processes (BPMN, Camunda and Zeebe)

  • Task-based UIs

  • Feature Modularization

  • Micro-Frontends

  • Statechart-based Robust Ix (Interaction) Model (David Harel and Ian Horrocks)

  • Plug-ins, Extensions and Add-ons

  • Information Architecture

  • Architecture Patterns (Martin Fowler)

LEVEL 4: DISTRIBUTED COMPUTING - PROBLEMS AND SOLUTIONS

  • Distributed Computing - Basics (Evolution, Concepts and Principles)
  • Coupling and Cohesion in Distributed context
  • Synchronous vs Asynchronous
  • Blocking vs Non-Blocking
  • Mutability vs Immutability
  • Concurrency and Parallelization (age of 1000-core computing)
  • Fault Tolerance and Self-Healing
  • Design for Failure - "Let it Crash" - how actor model enables it
  • CAP Theorem
  • Consistency models (Strong vs Read-after-Write vs Eventual)
  • CRDTs (Conflict-free Replicated Data Types)
  • Idempotency
  • Distributed Transactions (2PC, 3PC, Sagas, Compensation, etc.)
  • Stateless vs Stateful Processes

LEVEL 5: DISTRIBUTED SYSTEMS ARCHITECTURE

  • SOA (Service-Oriented Architecture)

  • Microservice Architecture (the mainstream wrong approach vs correct original approach)

  • Reactive Systems (Event-driven systems and Reactive Manifesto)

  • Event Sourced Systems

  • CQRS - Command Query Responsibility Segregation

  • Command-side and Query-side

  • Information Models and role of GraphQL

  • Optimistic UX

  • RPC Approaches

  • CORBA, RMI, Thrift, Finagle, gRPC

  • Serialization Formats: Avro, Protobuf, BSON, etc.

  • Transport Protocols: Web Socket, MQTT, QUIC, TSN, etc.

  • Reactive Streams and RSocket

  • Integration Patterns (Gregor Hohpe)

  • Apache Camel

  • Alpakka

  • Stream Processing (Kappa vs Lambda Architecture, using Kafka Streams and Akka Streams)

  • Kafka

  • Pulsar, Pravega, etc.

  • Memory Image

  • In-Memory Caches/Databases (Riak, Redis, Geode, RocksDB, etc.)

  • Akka DData (Distributed Data - CRDT-based)

  • Observability (Open Tracing, Jaegar, In-App Analytics, Prometheus, Grafana, etc.)

  • Performance Analysis (Latency, RPS, 99-percentile, etc.)

  • SaaS Considerations

  • Multi-tenancy Approaches

LEVEL 6: CLOUD COMPUTING

  • Kubernetes ecosystem (includes Knative, Istio, CNCF projects)

  • Polyglot options on JVM and beyond JVM, in GraalVM

  • AWS Services

  • GCP Services

  • Firebase Services

LEVEL 7: ACTOR-FRAMEWORKS AND SYSTEMS

  • Erlang, BEAM, OTP basics and Joe Armstrong's approach
  • Akka Actor Toolkit
  • Microsoft Azure Service Fabric (and other MS projects)
  • Actor programming in other languages (Pony, Dart, Rust, C++, Go, etc.)
  • IBM/Lightbend Reactive Platform
  • Case Studies

LEVEL 8: SECURITY

  • Trust

  • Identity

  • Authentication

  • PLP (Principle of Least Privilege) and POLA (Principle of Least Authority)

  • Authorization

  • Object-Capabilities -based Security

  • Cryptography

  • Public Key Infrastructure

  • Key Management

  • Secrets Management

  • Auto-Remediation of Threats

  • RIG (Reactive Interaction Gateway)

  • Casbin (AuthZ)

  • KeyCloak (AuthN)

LEVEL 9: WORLD-CLASS CODING

  • SICP (Structure and Interpretation of Computer Programs)

  • Practically Useful Data Structures

  • Practically Useful Algorithms

  • Clean Code

  • Refactoring

  • Fluent APIs and DSLs

  • Feature Toggles

  • Trunk based development

  • Monorepo

  • Unit Testing

  • Behavior-based Testing (BDD)

  • Actor-based Real OOP Coding

  • Reactive Programming

  • Scala - Language and Idioms

  • Dart - Language and Idioms

LEVEL 10: CICD

  • Configuration Management

  • Feature Toggles

  • Automated Testing

  • CICD Pipeline

  • Automated Rollout (Canary, Blue-Green, etc.)

  • Automated Rollback

  • Jenkins and Jenkins-X

  • Spinnaker

  • AWS CICD tools

  • GCP CICD tools

LEVEL 11: ALO PLATFORM

  • REACT Architecture
  • Alo Framework
  • Alo Platform
  • Comparison with State-of-the-Art Frameworks and Platforms

LEVEL 12: REAL-LIFE DEVELOPMENT

A small or part of a real-life project applying all knowledge and skills gained from the program.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment