fbpx

Full-day workshop:

Designing High-Performance, Scalable and Resilient Applications 

This workshop outlines the key concepts, principles, and approaches used to design and implement applications where high-performance, scalability, and resiliency are first-class quality attributes, three essential goals of many modern application architectures.

Why this workshop?

This workshop outlines the key concepts, principles, and approaches used to design and implement applications where high-performance, scalability, and resiliency are first-class quality attributes, three essential goals of many modern application architectures.

Most of these architectures are (in general) distributed and they combine different concepts and styles to achieve the highest effectiveness. It is fundamentally necessary to understand for which class of problems what architectural approaches we can leverage during the design phase and how we can implement them. The lack of a proper design leads to additional complexity, over-engineering, difficulties in extending or adding new functionalities, and potentially generates project failures.

For a better understanding, most of the concepts are exemplified using a distributed application implemented in Java, based on Spring Boot, and run inside multiple Docker containers, so that the attendees could easily relate the theory to the practice and further apply some of these tactics in their projects.

By the end of the workshop, you’ll understand:

What are the different architectural tactics, patterns, and styles to create applications focused on high-performance, scalability, and resiliency.

How to choose between (or combine) these approaches to cope with different loads and failures with minimal or no downtime.

What are the pros and cons of each approach, when should be used, and what are the consequences?

The mindset of creating modern distributed architectures.

And you’ll be able to:

Use an incremental approach to create an evolutionary architecture (i.e. architectural design) starting from the business requirements.

Complement the architectural design with a proper source code implementation (and a few architectural diagrams).

Who is it for?

  • software developers with hands-on experience and a taste for architectural design
  • technical leaders or software/solution architects
  • any enthusiastic with a technical background or passionate about technology

What will you learn?

Modern applications capabilities

  • Modularity
  • Resiliency
  • Elasticity
  • Performance

Modularity as a first-class citizen

  • The modular and distributed microservices architecture
    1. Pros and cons, when to use, problems they might (or not) solve
    2. Decomposition
    3. Data management (e.g., shared-nothing approach)
    4. Synchronous communication model (  RESTful over HTTP)

 Improve the overall system resiliency

  • Circuit Breaker
  • Bulkhead

 Design for scalability and high-performance

  • Horizontal scalability with service discovery and load balancer (or router)
  • Caching (e.g., local/embedded, distributed)
  • Asynchronous communication model (e.g., queue/topic, gRPC, WebSocket)
  • Event-driven architecture
    1. Pros and cons, when to use, problems they might (or not) solve
    2. Event structure and schema
    3. Event vs. command
    4. Event-carried state transfer
    5. Change data capture
  • Reactive systems
    1. Reactive principles
    2. Reactive systems vs. reactive programming
  • Assess the current architecture from a reactive system perspective

 Advanced performance optimization techniques at the application source code level

  • native compilation
  • asynchronous logging
  • marshaling/unmarshaling
  • memory-mapped files
  • minimizing the object allocation rates

 Wrap-up 

  • Review and key take-aways

Who is the trainer?

Ionuț is a software architect working for Raiffeisen Bank International in Vienna. He is also an independent technical trainer, security champion, and blogger, and regularly speaks at major software development conferences and meetups around the world, delivering presentations, training sessions, and workshops. He has a vast technical background gained during almost 15 years of software development in a wide variety of business applications. He is actively involved in developing production-ready systems and this real-life experience is the basis for his presentations, training, and workshop topics, mixed uniquely and efficiently. 

He is also known as a performance guy particularly interested in Compilers. His previous work on performance benchmarking raised internal interest across a few teams from big companies like Twitter, OracleLabs, Azul, and IBM.

Outside of work, Ionut is passionate about traveling and playing the piano.

You can find more details about Ionut, his training catalog, his talks, and his articles on ionutbalosin.com or you can follow him on Twitter, and LinkedIn.

Technical requirements:

A personal laptop with an internet connection, your favorite IDE, JDK 17, Maven, Docker compose, and Postman. You will be requested to clone, build and run a GitHub project several days before the workshop starts to make sure everything is accordingly prepared.

Prep-work:

Brainstorm one question to debate in the final section and send it to the organizers one day before the training starts.

Speaker

IONUȚ BALOȘIN
IONUȚ BALOȘIN

Software Architect @ Raiffeisen Bank International AG