The document discusses software architecture principles for cloud infrastructure, including microservices, distributed computing fallacies, designing for failure, and new design patterns like cache-aside, circuit breaker, and event sourcing. It also covers topics like autoscaling, asynchronous messaging, reactive streams, configuration management, and challenges like software erosion and failures cascading in distributed systems. The overall message is that building distributed systems on cloud infrastructure requires adopting new architectural patterns to deal with failures and improve scalability, performance and resilience.
This guide contains twenty-four design patterns and ten related guidance topics that articulate the benefits of applying patterns by showing how each piece can fit into the big picture of cloud application architectures. It includes code samples and general advice on using each pattern.
Containing twenty-four design patterns and ten related guidance topics, this guide articulates the benefit of applying patterns by showing how each piece can fit into the big picture of cloud application architectures. It also discusses the benefits and considerations for each pattern. Most of the patterns have code samples or snippets that show how to implement the patterns using the features of Windows Azure. However the majority of topics described in this guide are equally relevant to all kinds of distributed systems, whether hosted on Windows Azure or on other cloud platforms.
Migration to cloud is no easy task. Start small and learn the core technologies before leveraging the advanced features of the cloud. The cultural change will affect the whole organization from development to business management and sales.
Cloud native applications are the future of software. Modern software is stateless, provided from cloud to heterogeneous clients on demand and designed to be scalable and resilient.
Cloud Design Pattern at Carlerton University
External Config Pattern, Cache Aside, Federated Identity Pattern, Valet Key Pattern, Gatekeeper Pattern, Circuit Breaker Pattern, Retry Pattern and the Strangler Pattern. These patterns depicts common problems in designing cloud-hosted applications and design patterns that offer guidance.
At Ottawa .NET User Group I had a talk on Cloud Design Patterns, External Config Pattern, Cache Aside, Federated Identity Pattern, Valet Key Pattern, Gatekeeper Pattern and the Circuit Breaker Pattern. These patterns depicts common problems in designing cloud-hosted applications and design patterns that offer guidance.
This guide contains twenty-four design patterns and ten related guidance topics that articulate the benefits of applying patterns by showing how each piece can fit into the big picture of cloud application architectures. It includes code samples and general advice on using each pattern.
Containing twenty-four design patterns and ten related guidance topics, this guide articulates the benefit of applying patterns by showing how each piece can fit into the big picture of cloud application architectures. It also discusses the benefits and considerations for each pattern. Most of the patterns have code samples or snippets that show how to implement the patterns using the features of Windows Azure. However the majority of topics described in this guide are equally relevant to all kinds of distributed systems, whether hosted on Windows Azure or on other cloud platforms.
Migration to cloud is no easy task. Start small and learn the core technologies before leveraging the advanced features of the cloud. The cultural change will affect the whole organization from development to business management and sales.
Cloud native applications are the future of software. Modern software is stateless, provided from cloud to heterogeneous clients on demand and designed to be scalable and resilient.
Cloud Design Pattern at Carlerton University
External Config Pattern, Cache Aside, Federated Identity Pattern, Valet Key Pattern, Gatekeeper Pattern, Circuit Breaker Pattern, Retry Pattern and the Strangler Pattern. These patterns depicts common problems in designing cloud-hosted applications and design patterns that offer guidance.
At Ottawa .NET User Group I had a talk on Cloud Design Patterns, External Config Pattern, Cache Aside, Federated Identity Pattern, Valet Key Pattern, Gatekeeper Pattern and the Circuit Breaker Pattern. These patterns depicts common problems in designing cloud-hosted applications and design patterns that offer guidance.
An introduction to the reference architectures content from the Microsoft patterns & practices team.
This covers common IaaS (infrastructure) and PaaS (managed services) scenarios.
http://aka.ms/architecture
Be sure to read the notes!
Caching for Microservices Architectures: Session II - Caching PatternsVMware Tanzu
In the first webinar of the series we covered the importance of caching in microservice-based application architectures—in addition to improving performance it also aids in making content available from legacy systems, promotes loose coupling and team autonomy, and provides air gaps that can limit failures from cascading through a system.
To reap these benefits, though, the right caching patterns must be employed. In this webinar, we will examine various caching patterns and shed light on how they deliver the capabilities needed by our microservices. What about rapidly changing data, and concurrent updates to data? What impact do these and other factors have to various use cases and patterns?
Understanding data access patterns, covered in this webinar, will help you make the right decisions for each use case. Beyond the simplest of use cases, caching can be tricky business—join us for this webinar to see how best to use them.
Jagdish Mirani, Cornelia Davis, Michael Stolz, Pulkit Chandra, Pivotal
This is a presentation I created to summarize the eBook/Guide found on this link for the University Students. It is a highly recommended guide for anybody looking to design real solutions in Microsoft Azure and what are the recommended steps they need to take.
Caching for Microservives - Introduction to Pivotal Cloud CacheVMware Tanzu
SpringOne Platform 2017
Pulkit Chandra, Pivotal
"One of the most important factors in a microservices architecture is that application logic is separate from the data store. This design choice makes it easier for the application to scale. Providing a caching solution inside Pivotal Cloud Foundry makes it easy for these microservices to store data which can be retrieved 100x times faster than with a regular database. Pivotal Cloud Cache not only provides such a cache but takes a “use case”-based approach which gets an application from 0 to production fast.
This session will provide insights into how to use Pivotal Cloud Cache and its performance under load. We will demo a Spring Boot app which uses Spring Data Geode to talk to a Pivotal Cloud Cache cluster."
Architecting Cloud Applications - the essential checklistObject Consulting
Anna Liu - Associate Professor in Services Engineering, School of Computer Science and Engineering, University of NSW. Keynote presentation at the Australian Architecture Forum 2009.
Continuous Availability and Scale-out for MySQL with ScaleBase Lite & Enterpr...Vladi Vexler
Continuous Availability and Scalability with ScaleBase Lite and ScaleBase
Abstract:
Business are driven by data and processes. Ensuring databases availability during unexpected outages, continuous operations during maintenance and webscale scalability – are keys for major positive impact on businesses.
ScaleBase and ScaleBase Lite distributed database management systems ensure business continuity during unexpected and expected outages with automated failover and failback capabilities, enabling five-nines of availability (99.999%). Additional functionalities, such as load balancing and data distribution further increase performance and throughput capacity for more users and more data management.
This webinar will review and discuss:
1. The lifecycle and the challenges of webscale databases
2. Availability challenges in public, private and hybrid clouds
3. Introduction to ScaleBase Lite – instant and transparent MySQL Scale-out by intelligent load balancing (read/write splitting) and continuous availability
4. Scale further with ScaleBase – Massive scale out to distributed database containing 10s and 100s of servers
(Webinar Dec 17 2014)
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Techcello
Security considerations for data isolation
• Achieving granular level of access control
• Dealing with the top web security threats
• Empowering your application with Auditing / analytics capability
Cloud, SaaS, Multi-tenant, Multi-tenancy, Application Platform, SaaS Framework, Multi-tenant framework, .NET,Cloud Application Development Framework,SaaS Application Development Framework,Application Development Framework, SaaS Tenant
Talk given during Devoxx Belgium 2016
https://cfp.devoxx.be/2016/speaker/anthony_dahanne
Caching 101
Caching on the JVM
Clustered Caching with Terracotta Server
Deployment examples
An introduction to the reference architectures content from the Microsoft patterns & practices team.
This covers common IaaS (infrastructure) and PaaS (managed services) scenarios.
http://aka.ms/architecture
Be sure to read the notes!
Caching for Microservices Architectures: Session II - Caching PatternsVMware Tanzu
In the first webinar of the series we covered the importance of caching in microservice-based application architectures—in addition to improving performance it also aids in making content available from legacy systems, promotes loose coupling and team autonomy, and provides air gaps that can limit failures from cascading through a system.
To reap these benefits, though, the right caching patterns must be employed. In this webinar, we will examine various caching patterns and shed light on how they deliver the capabilities needed by our microservices. What about rapidly changing data, and concurrent updates to data? What impact do these and other factors have to various use cases and patterns?
Understanding data access patterns, covered in this webinar, will help you make the right decisions for each use case. Beyond the simplest of use cases, caching can be tricky business—join us for this webinar to see how best to use them.
Jagdish Mirani, Cornelia Davis, Michael Stolz, Pulkit Chandra, Pivotal
This is a presentation I created to summarize the eBook/Guide found on this link for the University Students. It is a highly recommended guide for anybody looking to design real solutions in Microsoft Azure and what are the recommended steps they need to take.
Caching for Microservives - Introduction to Pivotal Cloud CacheVMware Tanzu
SpringOne Platform 2017
Pulkit Chandra, Pivotal
"One of the most important factors in a microservices architecture is that application logic is separate from the data store. This design choice makes it easier for the application to scale. Providing a caching solution inside Pivotal Cloud Foundry makes it easy for these microservices to store data which can be retrieved 100x times faster than with a regular database. Pivotal Cloud Cache not only provides such a cache but takes a “use case”-based approach which gets an application from 0 to production fast.
This session will provide insights into how to use Pivotal Cloud Cache and its performance under load. We will demo a Spring Boot app which uses Spring Data Geode to talk to a Pivotal Cloud Cache cluster."
Architecting Cloud Applications - the essential checklistObject Consulting
Anna Liu - Associate Professor in Services Engineering, School of Computer Science and Engineering, University of NSW. Keynote presentation at the Australian Architecture Forum 2009.
Continuous Availability and Scale-out for MySQL with ScaleBase Lite & Enterpr...Vladi Vexler
Continuous Availability and Scalability with ScaleBase Lite and ScaleBase
Abstract:
Business are driven by data and processes. Ensuring databases availability during unexpected outages, continuous operations during maintenance and webscale scalability – are keys for major positive impact on businesses.
ScaleBase and ScaleBase Lite distributed database management systems ensure business continuity during unexpected and expected outages with automated failover and failback capabilities, enabling five-nines of availability (99.999%). Additional functionalities, such as load balancing and data distribution further increase performance and throughput capacity for more users and more data management.
This webinar will review and discuss:
1. The lifecycle and the challenges of webscale databases
2. Availability challenges in public, private and hybrid clouds
3. Introduction to ScaleBase Lite – instant and transparent MySQL Scale-out by intelligent load balancing (read/write splitting) and continuous availability
4. Scale further with ScaleBase – Massive scale out to distributed database containing 10s and 100s of servers
(Webinar Dec 17 2014)
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Techcello
Security considerations for data isolation
• Achieving granular level of access control
• Dealing with the top web security threats
• Empowering your application with Auditing / analytics capability
Cloud, SaaS, Multi-tenant, Multi-tenancy, Application Platform, SaaS Framework, Multi-tenant framework, .NET,Cloud Application Development Framework,SaaS Application Development Framework,Application Development Framework, SaaS Tenant
Talk given during Devoxx Belgium 2016
https://cfp.devoxx.be/2016/speaker/anthony_dahanne
Caching 101
Caching on the JVM
Clustered Caching with Terracotta Server
Deployment examples
Advanced Concept of Caching - Mathilde Lemee - Codemotion Milan 2014Codemotion
We all know that caching is a solution for developers to increase the performance of an application. We will start by presenting the JSR-107 terminology and the most important cache patterns. Some use cases will also be discussed and you will see how you can scale your cache from a single node to a multi node cluster (JSR 347). If you are a beginners in caching or if the words Cache Aside, Write-Behind, Read/Write Through doesn’t means anything to you or if you are interesting about high availability and scalable architecture, that this is the place to be!
Creating a Centralized Consumer Profile Management Service with WebSphere Dat...Prolifics
In this presentation will talk about how one of the world's leading Financial Institutions, leveraged WebSphere DataPower to provide a set of centralized consumer profile management services. This central service would be leveraged by internal and external applications, and would align with enterprise marketing capabilities. The solution included a complex security model which included the following products: Tivoli Directory Server, Tivoli Access Manager and Tivoli Federated Identity Manager. We will describe how to build complex orchestrations in WebSphere DataPower, and also go through some of the performance tuning options we implemented to achieve a high degree of efficiency.
Hhm 3474 mq messaging technologies and support for high availability and acti...Pete Siddall
Active-Active is the target messaging model for the modern data center. But its successful adoption must encompass not only the mainframe, but also heterogeneous and peripherally distributed platforms, which makes it much more complex to implement. Data synchronization is at the heart of the various Active-Active technologies, and the right messaging technology must therefore be chosen for its implementation. This session gives an overview of Active-Active technologies on both z Systems and distributed platforms. It highlights how Active-Active provides the benefits of both high availability and workload balancing. We will also discuss customer cases on how to implement messaging-based Active-Active.
This presentation from the I Love APIs conference makes the case for why Node and Docker are great together for implementing Microservice architecture. It also provides an quick orientation for getting started with Docker Machine, Node, and Mongo with container linking and data volume containers.
Technical Webinar: Patterns for Integrating Your Salesforce App with Off-Plat...CodeScience
Patterns for Integrating Your Salesforce App with Off-Platform Apps
Integrating Salesforce applications with additional off-platform apps can dramatically extend the capability of powerful business apps. From ERP systems to custom apps, integrating with Salesforce can help streamline essential processes, saving your business valuable time and money. In our latest tech webinar, CodeScience Technical Architect Mark Pond dives into Salesforce integration patterns and the positive impacts they can deliver.
In this technical webinar, you will learn:
- Several common Salesforce integration patterns
- Integration pattern pitfalls
- How to leverage a custom queue to automate background work
- Deliverability and reporting advantages of custom queues
Watch today to learn how automated testing can take your enterprise solutions to the next level.
Caching for Microservices Architectures: Session IVMware Tanzu
In this 60 minute webinar, we will cover the key areas of consideration for data layer decisions in a microservices architecture, and how a caching layer, satisfies these requirements. You’ll walk away from this webinar with a better understanding of the following concepts:
- How microservices are easy to scale up and down, so both the service layer and the data layer need to support this elasticity.
- Why microservices simplify and accelerate the software delivery lifecycle by splitting up effort into smaller isolated pieces that autonomous teams can work on independently. Event-driven systems promote autonomy.
- Where microservices can be distributed across availability zones and data centers for addressing performance and availability requirements. Similarly, the data layer should support this distribution of workload.
- How microservices can be part of an evolution that includes your legacy applications. Similarly, the data layer must accommodate this graceful on-ramp to microservices.
Presenter : Jagdish Mirani is a Product Marketing Manager in charge of Pivotal’s in-memory products
'How to build efficient backend based on microservice architecture' by Anton ...OdessaJS Conf
This speech about micro-services, approaches, and practices in their construction. How to effectively build communication between micro-services and what approaches are commonly used for this.
We will talk a little about distributed transactions. Will touch the topic of infrastructure, monitoring, and scaling components. I want to inspire my listeners to develop themselves in the direction of backend development. Force to look towards scalable application architecture.
You cannot find this information in the documentation :) This speech will also consist of real-life examples.
Full lifecycle of a microservice: how to
realize a fault-tolerant and reliable
architecture and deliver it as a Docker
container or in a Cloud environment
There's a promise for the public cloud that the providers try to match with their services. The cloud users need to know a lot of quirks and details to utilize the cloud platforms with the desired efficiency.
Generic Functional Programming with Type ClassesTapio Rautonen
What it takes to build type assisted domain specific languages in Scala? Introducing the concepts of type classes, functional programming and generic algebra.
Big data is not only tools and technologies. Before building an enterprise big data analytics platform, you need to understand your data and the access patterns.
M.O.S.K.A. - Koulun penkiltä pelastamaan SuomeaTapio Rautonen
Mitä Opiskella Saadaksesi Kunnon Ammatin. Antaako yliopisto riittävät eväät työelämään siirtymiseen vai pitäisikö opiskella vielä jotain muuta, mutta mitä?
Feedback loops - the second way towards the world of DevOpsTapio Rautonen
The three ways define a philosophical journey to an unfinished world of IT development. Amplifying feedback loops, the second way, is about shortening and amplifying any bottlenecks preventing feedback to close a full circuit of continual improvement.
Enter the world of cloud computing and software development with PaaS. What it takes to create a production ready application with Heroku and how to run it?
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
3. Cloud computing characteristicsCloud computing characteristics
On-demand self-service
Consumer can provision computing capabilities without requiring human interaction
Broad network access
Capabilities are available over the network and accessible by heterogeneous clients
Resource pooling
Provider's computing resources are pooled to serve multiple consumers dynamically
Rapid elasticity
Capabilities can be elastically provisioned and appear unlimited for the consumer
Measured service
Automatically controlled and optimized resources by metering capabilities
4. Software architecture principlesSoftware architecture principles
● Intentional architecture with emergent design
● High modularity
– high cohesion, loose coupling
– low algorithmic complexity
● Well described elements
– expressive and meaningful names and APIs
– clean code
● Passes all defined tests or acceptance criteria
● Lightweight documentation
6. Distributed computing fallaciesDistributed computing fallacies
1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn't change
6. There is one administrator
7. Transport cost is zero
8. The network is homogeneous
Peter Deutsch / Sun Microsystems
8. New era of design patternsNew era of design patterns
● Cache-Aside
● Circuit Breaker
● Compensating Transaction
● Command and Query Responsibility Segregation (CQRS)
● Event Sourcing
● Queue-Based Load Leveling
● Sharding
● Throttling
9. Cache-Aside patternCache-Aside pattern
● Aggregated search combining multiple services
– requires additional search cache (Solr, ElasticSearch, ...)
● Improve performance of frequently
read data
● Local caching results
inconsistent state between
instances
● Consistency of data stores
and cache is really hard to
maintain
There are only two hard things
There are only two hard things
in Computer Science: cache
in Computer Science: cache
invalidation and naming things.
invalidation and naming things.
–– Phil Karlton
Phil Karlton
10. Circuit Breaker patternCircuit Breaker pattern
● Cloud infrastructure and distributed systems allow remote
services to fail in ways beyond imagination
– prevent failures to cascade
– allow system to operate in degraded mode
● Suitable for big microservices architecture
– creates routing complexity and overhead
– potential single point of failure must be highly available
● Enables central logging and metrics
– dashboards and central state awareness
11. Circuit Breaker patternCircuit Breaker pattern
● During normal operation, breaker is in Closed state
– failures will eventually trip breaker
● While in Open state
– calls will fail fast and after some period attempts to reset
● In Half-Open state
– on successful call resets breaker, otherwise trips breaker
http://doc.akka.io/docs/akka/snapshot/common/circuitbreaker.html
13. Compensating Transaction patternCompensating Transaction pattern
● Irrecoverable failures in distributed systems are hard
– eventual consistency, rollbacks are impossible
● Distributed transactions (XA)
– difficult and complex to implement
– still not bulletproof
– not usable for generic REST services
● Undo the effects of the original operation
– defines an eventually consistent steps for a reverse operation
– compensation logic may be difficult to generate
– operations should be idemponent to prevent further catastrophe
14. CQRS patternCQRS pattern
● Command and Query Responsibility Segregation
– segregates read and write operations with separate interfaces
– allows to maximize performance, scalability and security
● Introduces flexibility at the cost of complexity
– traditionally same DTO is used for read and write operations
– different data model for read (query) and write (command)
– supports different read and write data stores
– not suitable for simple business rules where CRUD is sufficient
● Often used together with event sourcing pattern
15. Event Sourcing patternEvent Sourcing pattern
● Append only store of events that describe actions for data
– simplifies tasks in complex domains by avoiding synchronization
– improves performance, scalability and consistency for
transactional data
– can serve multiple different materialized views
● Maintains full audit trail and history
– enables compensation actions
– supports play back at any point in time
● Events are simple
– the operation logic they describe might not be
– updates and deletes must be implemented with compensation
– “at least once” publication requires idemponent consumers
16. Queue-Based Load Leveling patternQueue-Based Load Leveling pattern
● Buffer between task and service
– minimizes the impact of peaks of work load
– task flood may result unresponsive or failure of the service
● Task provider and service runs asynchronously
– queue decouples tasks from the service
– service can handle tasks at its own optimal pace
– requires a mechanism for responses if the task expects a reply
Service
Tasks
Message queue
17. Sharding patternSharding pattern
● Divide data store into multiple horizontal partitions
– improves scalability when handling large volumes of data
● Overcomes limitations of single server data store
– finite storage space
– computing resources for large number of concurrent users
– network bandwidth governed performance
– geographically limited storage for legal or performance reasons
● Strategy defines the sharding key and data distribution
– wrong sharding strategy results bad performance
– balancing shards is not trivial, rebalancing is expensive
– referential integrity and consistency is hard to maintain
● Configuring and managing big set of shards is a challenge
18. Throttling patternThrottling pattern
● Controls the consumption of resource used by a service
– allows the system to function and meet SLA on extreme load
● Throttle after soft limit of resource usage is exceeded
– reject requests for user that exceed the soft limits
– disable or degrade functionality of nonessential services
– queue-based load leveling with priority queues
● Throttling is an architectural decision
– impacts the entire design of the system
– must be detected and performed very quickly
– services should return specific error code for clients
– can be used as an interim measure while autoscaling
19. SaaS architecture methodologySaaS architecture methodology
● Declarative formats for setup and runtime automation
● Clean contract with infrastructure for maximum portability
● Cloud platform deployments, obviating the need for ops
● Tooling, architecture and dev practices support scaling
Modern software is delivered from the cloud
to heterogeneous clients on-demand
20. The Twelve-Factor AppThe Twelve-Factor App
I. Codebase
one codebase tracked in revision control, many deploys
II. Dependencies
explicitly declare and isolate dependencies
III. Config
store config in the environment
IV. Backing Services
treat backing services as attached resources
V. Build, release, run
strictly separate build and run stages
VI. Processes
execute the app as one or more stateless processes
http://12factor.net/
21. The Twelve-Factor AppThe Twelve-Factor App
VII. Port binding
export services via port binding
VIII.Concurrency
scale out via the process model
IX. Disposability
maximize robustness with fast startup and graceful shutdown
X. Dev/prod parity
keep development, staging, and production as similar as possible
XI. Logs
treat logs as event streams
XII. Admin processes
run admin/management tasks as one-off processes
http://12factor.net/
22. Break the monolith in piecesBreak the monolith in pieces
● Monoliths come with a burden
– cognitive overload for developers
– scaling and continuous deployment becomes difficult
– long-term commitment to technology stack
– allows taking shortcuts for architectural design
If you can't build a monolith, what makes
you think microservices are the answer?
24. Service discoveryService discovery
● Services need to know about each other
– inexistence of centralized service bus
– smart endpoints and client side load balancing
● Service registry is the new single point of failure?
– value availability over consistency
● Provides a limited set of well defined features
– services notify each other of their availability and status
– cleaning of stale services
– easy integration with standard protocols like HTTP or DNS
– notifications on services starting and stopping
25. Ephemeral runtime environmentsEphemeral runtime environments
● Short lifetime of an application runtime environment
– scaling, testing, materializing ideas
– requires highly automatized infrastructure
● Nothing can be stored in the runtime environment
– logs, file uploads, database storage files, configuration
● Results stateless services
– optimal for horizontal scaling
– integrates to State as a Service
● Must be repeatable and automatically provisioned
26. Metrics and loggingMetrics and logging
● Ephemeral and dynamic systems
– requires central awareness of state
– audit logging of changes in the system
● Gain understanding how the services are used
– plan for future requirements
– gather scaling metrics
– bill customers for usage (pay-per-use)
– detect faulty behavior
● Balance between value provided and cost of collecting
– robustness of the metering system impacts on profitability
– collect end-to-end scenarios rather than operational factors
27. AutoscalingAutoscaling
● Adapting to changing workloads
– optimize capacity and operational cost
– increase failure resilience
● Requires key performance metrics capturing
– response times, queue sizes, CPU and memory utilization
● Decision logic based on scaling metrics
– when to scale up and down
– prevent scaling oscillation
● Application must be designed for scaling
– stateless, immutable, automatically provisioned
28. Asynchronous messagingAsynchronous messaging
● Key strategy for services to communicate and coordinate
– decouple consumer process from the implementing service
– enables scalability and improves resilience
● Basic messaging patterns
– sender posts a one-way message and receiver processes the
message at some point in time
– sender posts a request message and expects a response
message from the receiver
– sender posts a broadcast message which is copied and
delivered to multiple receivers
● Numerous implementation concerns
– message ordering, grouping, repeating, poisoning, expiration,
idempotency and scheduling
29. Reactive streamsReactive streams
● Originates from The Reactive Manifesto
– Responsive system responds in a timely manner
– Resilient system stays responsive in the face of failure
– Elastic system stays response under varying workload
– Message Driven system relies on asynchronous messaging
● Initiative to provide standard for asynchronous stream
processing with non-blocking back pressure
– minimal set of interfaces and methods to achieve the goal
● Collaboration of people from high profile companies
– Typesafe, Oracle, Pivotal, Netflix, Red Hat, Applied Duality, ...
● Akka Streams, Reactor Composable, RxJava, Ratpack
https://www.coursera.org/course/reactive
30. Data consistencyData consistency
● All instances of application see the exact same data
– strong consistency
● Application instance might see data of operation in flight
– eventual consistency
● Distributed data stores are subjected to CAP theorem
– consistency, availability, partition tolerance
– only two of the features can be implemented
● Recovering from failures of eventually consistent data
– retry with idemponent commands
– compensating logic
31. Configuration managementConfiguration management
● Externalize configuration out
of runtime environment
– repeatable, versioned
● Local configuration pitfalls
– limits to single application
– hard for multiple instances
● Runtime reconfiguration
– application can be reconfigured without redeployment or restart
– minimize downtime, enable feature flags, help debugging
– thread safety and performance is a concern
– prepare for rollbacks and unavailability of configuration store
32. Software erosionSoftware erosion
● Slow deterioration of software leading to faulty behavior
● Fighting erosion is more expensive than usually admitted
● Erosion-resistance comes from separation of concerns
– application – infrastructure
● Clear contract of services provided by infrastructure
– change in infrastructure does not break the contract
– application can change within its respected realm
● Solutions against erosion
– Platform as a Service
– container virtualization
33. Cloud architecture pitfallsCloud architecture pitfalls
● Failures do cascade
– even without a single point of failure
● Multi-service search is hard to get right
– cache-aside issues
● Never rely on unreliable message delivery
– use asynchronous persistent message stores
● Monolith has one big problem
– microservices will generate a lot of small (and big) problems
● Do not ignore the platform's managed resources
– but evaluate the lock-in risk
34. Reach for the skiesReach for the skies
● Distributed systems are hard to build
– no silver bullet exists (sorry to disappoint again)
● Cloud infrastructure drives towards microservices
– start with a monolith, expand to microservices
– learn new design patterns during the journey
– automated system requires less ops and offers more resilience
● Do you think Netflix did it right the first time?
– learn from failure
– design for failure
● Cloud native applications are the future