Modern Scalable Architecture

Duration: 1 day

Description:

We are on the verge of seeing a major change in the overall structure of software applications. This architecture stands up to demands such as high and elastic scale (in millions of events per second), near-perfect isolation of features, highly testable, functional, etc.

At Ballista, we have developed a recipe and a set of principles that we use when helping our customers.

In this course, we share these principles in a way where everyone from CEO to individual contributors can participate.

Objectives:

  • Learn some of the architectural principles and goals typical in a modern architecture

  • Understand how to achieve elastic and high scale

  • Understand why functional approaches are becoming popular

  • Understand the CAP theorem and why it is important

  • Understand the cloud, on-premise, and edge deployment models and how to build monadic software components

  • Understand the integration story of modern architectures

Audience

Software developers, software architects, and managers of software organizations.

Outline

Challenges and Context

  • What are some common goals of software architecture?

  • Modern challenges

  • What typically fails?

  • Some architectural patterns

Scalability

  • Signs of scalability challenges

  • Amdahl’s law

  • Gunter’s law

  • CAP theorem

  • Lessons from functional programming

  • Best practices

Elasticity

  • What is elasticity?

  • Why be elastic?

  • Options for scale

  • Cost of cloud, on-premise, and edge

  • Moving components around between on-premise, cloud, and edge

  • DevOps challenges and solutions

  • Elasticity triggers

  • Best practices

Availability

  • What is availability?

  • Why availability?

  • How to achieve availability?

  • Handling of external attacks

  • Working around predictable internal failures

  • Handle unpredictable internal failures

  • Importance of testing failures

  • How to test for failures?

  • Best practices

Other Architectural Goals

  • Testability

  • Performance

  • Security

  • Maintainability

  • Extensibility

  • Maintainability

Architectural Template

  • One architectural template

  • What are the variations?

  • How to evaluate the options?