Skip to content

Instantly share code, notes, and snippets.

@OddExtension5
Last active March 7, 2024 14:09
Show Gist options
  • Save OddExtension5/ac6092bf077e8bd3116636366e14cee5 to your computer and use it in GitHub Desktop.
Save OddExtension5/ac6092bf077e8bd3116636366e14cee5 to your computer and use it in GitHub Desktop.
Software Architecture : Layered, Microkernel, Event-Driven, Pipeline, Space-Based, Microservices, Service-Oriented, Service-Based, Serverless, LMAX

Software Architecture

        > with Neil Ford & Mark Richards

Architecture is the highest level concept of the expert developers.

"In most successful software projects, the experts developers working on that project have a shared understanding of the system design. This shared understanding is called 'architecture'. This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only include the components and interfaces that are understood by all the developers."

What is architecture?

Basically, its made up of three different things:

  1. Struture of the application (e.g., micro-kernel, micro-services, event-driven etc.)
  2. Architecture Decisions (e.g., n-layered architecture)
  3. Design Principles (e.g., inter-service communication should be leverage async messaging whenever possible to increase perfomance)

Topics

  1. Software Architecture?
  2. Expectations of an architect
  3. Architectural Thinking
  4. Architecture Characteristics
  5. Architecture Patterns
  6. Component Based thinking
  7. Continuous Delivery
  8. Documenting Architecture
  9. Presenting Architectire
  10. Architecture Katas
  11. Analysing Architecture
  12. Enterprise Architecture
  13. Evolutionary Architectures
  14. Career Path and Resources

Understanding the Expectations of an Architect

Expectations are:

  1. Define the architecture and design principles to guide technology decisions for the enterprise
  2. Constantly analyze the software environment and recommend solutions for improvement (Architecture Viability)
  3. Analyze Technology and industry trends and keep current with the lastest trends
  4. Ensure compilance with the architecture
  5. Have exposure to multiple and diverse technologies, platforms and environments
  6. Have a certain level of business domain expertise
  7. Possess exceptional interpersonal skills, including teamwork, facilitation and negotiation
  8. Understand the political climate of the enterprise and be able to navigate the politics

Thinking Like An Architect

Screenshot-32

Identifying Architecture Characteristics

Screenshot-33


Business Owner/Product Owner

Problem 1: "Our business is constantly changing to meet new demands of the mearketplace"

Problem 2: Due to new regulatory requirements, it is imperative that we compete end-of-day processing in time

Problem 3: We need faster time to market to remain competitive

Problem 4: Our plan is to engage heavily in mergers and acquisitions in the next three years

Problem 5: We have a very tight timeframe and budget for this project


Software Architect

Solution 1: Extensibility, Maintainability, Agility, Modularity

Solution 2: Scalability, Performance, Reliablity

Solution 3: Testability, Deployability, Maintainability, Agility, Modularity

Solution 4: Scalability, Extensibility, Openness, Standards-based, Agility, Modularity

Solution 5: ```Feasibility,


We received what we call "requirements", when , in fact, they're actually solutions by product owners or business users

Screenshot-34

Screenshot-35

Analyzing Architecture Tradeoffs

Two techniques for analyzing architecture radeoffs

  1. Architecture Tradeoff Analysis Method (ATAM)

It take in several inputs like proposed architecture, business drivers, quality attributes and splits out the ouptut which is validated and approved architecture

Process:

  • Partnership and Preparation
  • Evaluation phase 1
  • Evaluation phase 2
  • FollowUp

Screenshot-37

Disadvantage:

Focus on the goals, not on the process

  1. Cost-benefit Analysis Method (CBAM)

It takes in business goals and provide output which is based on performance, availability, scalability.

Screenshot-39

Screenshot-40

Understanding Layered Architecture

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