Devops for Growth
111.4K views | +5 today
Follow
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'design pattern'. Clear
Scooped by Mickael Ruau
December 13, 2021 1:14 AM
Scoop.it!

Build Scalable and Robust Enterprise Web Apps - DZone Web Dev

Build Scalable and Robust Enterprise Web Apps - DZone Web Dev | Devops for Growth | Scoop.it
This blog provides various aspects that need to be considered while developing scalable and robust enterprise applications. I will discuss the following areas of enterprise applications development and considerations:

An application should have capabilities to accommodate growth and scale, should be modular to enhance or add new functionalities, and support gradual or abrupt surge. At the same time, it should be seamless for users and efficient for the organizations.
Factors or Characteristics that influence the application scalability and robustness
The different architecture patterns, pros, cons, and considerations: The standard architecture brings many advantages for development and better flexibility of the system for scaling.
How to build scalable enterprise applications: What are the different design methods to consider across various components of the applications?
Different technology, tools, framework, software that can be used while designing enterprise applications: Mostly we will highlight open source technologies as much as possible.
Basic Architectural Design principles to consider for designing large scale applications

In the end, I will provide very high-level architecture considering most of the aspects discussed in this blog. I will provide information in the form of mind maps which I captured for the above areas.
No comment yet.
Scooped by Mickael Ruau
December 1, 2021 8:42 AM
Scoop.it!

Design Patterns for Serverless Systems

Design Patterns for Serverless Systems | Devops for Growth | Scoop.it
Key Takeaways

We can define different categories of design patterns, including OOP design patterns, organizational patterns, and so on.
A number of design patterns are specifically suited to the serverless paradigm.
The Pipes and Filters design pattern can be used to decouple a serveless system into simple functional units interconnected in a chain.
No comment yet.
Scooped by Mickael Ruau
November 29, 2021 11:07 AM
Scoop.it!

What Are Microservices and The Event Aggregator Pattern? - DZone Cloud

What Are Microservices and The Event Aggregator Pattern? - DZone Cloud | Devops for Growth | Scoop.it
Learn about the Event Aggregator pattern for organizing event communication in a microservices architecture with an example.
No comment yet.
Scooped by Mickael Ruau
November 25, 2021 5:05 AM
Scoop.it!

Comprendre les différents design patterns de construction

Comprendre les différents design patterns de construction | Devops for Growth | Scoop.it
Comprendre les différents design patterns de construction
Mickael Ruau's insight:

Table des matières

No comment yet.
Scooped by Mickael Ruau
November 3, 2021 9:03 AM
Scoop.it!

Je ne vois pas l'intérêt du Design Pattern Strategy - Design Patterns

Je ne vois pas l'intérêt du Design Pattern Strategy - Design Patterns | Devops for Growth | Scoop.it
Est-ce que quelqu'un peut m'expliquer dans quel cas il faut utiliser le Design Pattern Strategy et pourquoi ? Je ne vois vraiment pas l'intérêt… Merci
No comment yet.
Scooped by Mickael Ruau
October 22, 2021 3:41 AM
Scoop.it!

Apprendre à coder en Java le Singleton

Apprendre à coder en Java le Singleton | Devops for Growth | Scoop.it
Tutoriel pour apprendre les bonnes pratiques pour coder le patron de conception Singleton Thread-Safe et Lazy avec le langage Java
No comment yet.
Scooped by Mickael Ruau
September 16, 2021 7:08 AM
Scoop.it!

Multitâche sans thread 5/5 – async/await | OCTO Talks !

Multitâche sans thread 5/5 – async/await | OCTO Talks ! | Devops for Growth | Scoop.it

Après avoir étudié quatre approches permettant de faire du multitâche sans threads, nous allons voir la dernière, probablement la plus sympathique pour le développeur. C’est une évolution syntaxique des langages permettant de porter le principe d’un pool de hard-threads unique à tout un programme, et donc de porter dans la syntaxe de quoi programmer facilement avec le modèle réactif.

No comment yet.
Scooped by Mickael Ruau
September 15, 2021 7:37 AM
Scoop.it!

Modèles de conception pour les microservices - Azure Architecture Center | Microsoft Docs

Modèles de conception pour les microservices - Azure Architecture Center | Microsoft Docs | Devops for Growth | Scoop.it
Découvrez comment les conceptions qui utilisent des microservices peuvent optimiser la vélocité des lancements d’application en déployant de petits services autonomes de façon indépendante.
No comment yet.
Scooped by Mickael Ruau
September 15, 2021 6:03 AM
Scoop.it!

Microservices Design Patterns | Microservices Patterns

Microservices Design Patterns | Microservices Patterns | Devops for Growth | Scoop.it
This article on Microservices Design Patterns talks about the top design patterns you must follow to build a successful microservices architecture.
Mickael Ruau's insight:

Principles Used to Design Microservice Architecture

The principles used to design Microservices are as follows:

  1. Independent & Autonomous Services
  2. Scalability
  3. Decentralization
  4. Resilient Services
  5. Real-Time Load Balancing
  6. Availability
  7. Continuous delivery through DevOps Integration
  8. Seamless API Integration and Continuous Monitoring
  9. Isolation from Failures
  10. Auto -Provisioning

Design Patterns of Microservices

    1. Aggregator
    2. API Gateway
    3. Chained or Chain of Responsibility
    4. Asynchronous Messaging
    5. Database or Shared Data
    6. Event Sourcing
    7. Branch
    8. Command Query Responsibility Segregator
    9. Circuit Breaker
    10. Decomposition
No comment yet.
Scooped by Mickael Ruau
July 12, 2021 1:45 AM
Scoop.it!

Micro Frontends

Micro Frontends | Devops for Growth | Scoop.it
How to split up your large, complex, frontend codebases into simple, composable, independently deliverable apps.
No comment yet.
Scooped by Mickael Ruau
July 5, 2021 11:44 AM
Scoop.it!

GUI Architectures

GUI Architectures | Devops for Growth | Scoop.it
Describing the way architectures for UIs have evolved over the years, in particular the many and often misunderstood definitions for Model-View-Controller.
Mickael Ruau's insight:
No comment yet.
Scooped by Mickael Ruau
April 21, 2021 10:33 AM
Scoop.it!

introduction Spring BatchSur la route d'Oxiane

introduction Spring BatchSur la route d'Oxiane | Devops for Growth | Scoop.it

Pour résumer :

  • Job (Batch) = ensemble de Step (étape) : lire, transformer, écrire.
  • JobInstance = Job + identifiant (peut être une date, l’heure, tout ce qui permet d’identifier de façon unique un Job) : Job du 15 Septembre, du 12 Octobre, etc.
  • L’identifiant d’un Job peut être construit à partir des informations fournies comme paramètre lors de son lancement. Ces paramètres sont appelés JobParameters.
  • L’instance d’exécution d’un Job est appelée JobExecution.
Mickael Ruau's insight:

Le Reader lit une source de données :

Le Reader est appelé successivement au sein d’une étape et retourne des objets du type pour lequel il est défini (Person dans notre cas) :

  1. <beans:bean id="personFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">  
  2.     .....  
  3. </beans:bean>  
<beans:bean id="personFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"> ..... </beans:bean>

Le Processor modifie les données lues par le Reader :

Contrairement à un Reader, les implémentations d’un Processor sont plutôt écrites par le développeur de batch, car elles
correspondent à des besoins fonctionnels.

  1. <beans:bean id="personProcessor">  
  2.     ....  
  3. </beans:bean>  
<beans:bean id="personProcessor"> .... </beans:bean>

Le Writer écrit les données provenant du processor (ou directement lues par le Reader) :

  1. <beans:bean id="personWriterDB" class="com.oxiane.sb.service.PersonWriter">  
  2.             .....  
  3. </beans:bean>  
<beans:bean id="personWriterDB" class="com.oxiane.sb.service.PersonWriter"> ..... </beans:bean>

 

No comment yet.
Scooped by Mickael Ruau
April 9, 2021 8:56 AM
Scoop.it!

Loi de Déméter — Wikipédia

Loi de Déméter - Wikipédia

La loi de Déméter (en anglais Law of Demeter ou LoD), ou Principe de connaissance minimale est une règle de conception pour développer un logiciel, particulièrement du logiciel orienté objet. Cette règle a été inventée à la Northeastern University à Boston durant l'automne 1987, et peut être résumée en " Ne parlez qu'à vos amis immédiats ".

No comment yet.
Scooped by Mickael Ruau
December 12, 2021 5:33 AM
Scoop.it!

ZF et DP - Utiliser une façade pour accéder au modèle

ZF et DP - Utiliser une façade pour accéder au modèle | Devops for Growth | Scoop.it
Parmi les design patterns que l'on trouve en programmation, il en est un que l'on oublie un peu trop à mon avis : c'est la notion de façade. Pour bien comprendre de quoi il s'agit, un petit exemple sera plus parlant. Imaginez travailler dans un centre de conception automobile. Votre boulot consiste à concevoir toute la partie commande de la voiture. Vous allez collaborer avec les designers qui conçoivent l'habitacle et le tableau de bord (la vue) et avec les ingénieurs qui conçoivent la partie mécanique (le modèle ou métier). À vous de relier le tout (faire le contrôleur). Si les mécanos commencent à vous parler de boulon de six ou de durite d'injection, vous allez droit à la crise de nerfs. Ce dont vous avez besoin, c'est de savoir comment on fait marcher le tout. Par exemple : comment accélérer. Que la commande d'accélération actionne un régulateur électrique, ouvre un carburateur ou actionne un injecteur de gasoil, vous importe peu.

Vous avez besoin de définir une API pour votre partie mécanique. Cette définition peut se présenter simplement par une documentation. Mais aussi par un point d'entrée unique qui vous cache la complexité du métier. Cela s'appelle une façade.

Vous ne vous êtes jamais penché sur le problème de savoir comment votre banquier traitait vos chèques ? Vous fournissez au guichet le bordereau dûment rempli comme le prévoit la façade et ce qu'il se passe après vos importe peu, du moment que votre argent va sur votre compte.

C'est donc une pratique courante qui, étrangement, se perd lorsqu'on développe des logiciels. Bien souvent, on fait ce qu'il y a à faire sans trop se demander s'il ne serait pas opportun d'isoler un sous-ensemble derrière une API. En programmation objet on encapsule ainsi des éléments. Mais on pense rarement que tout un ensemble pourrait être caché par une seule classe. La littérature sur ce sujet est pourtant vaste. Et utiliser une façade à bon escient est un gage pour l'avenir.
No comment yet.
Scooped by Mickael Ruau
November 30, 2021 12:59 AM
Scoop.it!

Microservices — the Letter and the Spirit

Microservices — the Letter and the Spirit | Devops for Growth | Scoop.it

Key Takeaways

Microservices pattern doesn’t refer to the size of the services, decomposing your solution into ‘micro’ pieces is not the goal of the pattern, think of your solution as one whole then look at the requirements to guide you through what pieces to partition out. The article gives you an example of doing that.

Mickael Ruau's insight:

Central to the microservices pattern is the concept that services must be decoupled; the end goal of the pattern is to make a distributed solution easy to develop, operate and maintain which can be easier achieved when the services are decoupled.


Decoupling the services is twofold

 

1) Services don’t interact directly with each other, instead they use an integration service.

2) Services are versioned.

 

Using an integration service (e.g. service bus) frees your microservices from depending on each other, a failure of one service shouldn’t cause the other services to fail.

 

Versioning shouldn’t be an afterthought in microservices, implement it at day one. If Versioning seems an overkill you’re probably prematurely ‘microservicing’ your solution.

No comment yet.
Scooped by Mickael Ruau
November 25, 2021 5:07 AM
Scoop.it!

Comprendre le patron de conception Circuit breaker

Comprendre le patron de conception Circuit breaker | Devops for Growth | Scoop.it
L'évolution des besoins (réductions des coûts et du time to market, concept d'ATAWAD (AnyTime, AnyWhere, AnyDevice)…) a mis en avant certaines architectures (architecture applicative cloud ready, architecture microservices, architecture distribuée…).

Cela a engendré de nouvelles problématiques, en particulier l'augmentation du nombre de dépendances et donc potentiellement soumises à la latence du réseau.

C'est à ce moment qu'apparaissent à nouveau les Illusions de l'informatique distribuée :

Le réseau est fiable.
Le temps de latence est nul.
La bande passante est infinie.
Le réseau est sûr.
La topologie du réseau ne change pas.
Il y a un et un seul administrateur réseau.
Le coût de transport est nul.
Le réseau est homogène.

Et ces illusions ne prennent pas en compte la partie dépendance et son lot de problèmes (crash, temps de réponse lent, réponse non conforme…).

Pour répondre à ces défis, la philosophie de design for failure (les traitements applicatifs doivent, dès leur conception, prévoir le cas où les composants qu'ils appellent pourraient tomber en erreur) a pris encore plus d'importance.

Et donc nous sommes passés de : « prévenir toutes les défaillances » à : « les défaillances font partie du jeu ».

Parmi toutes les solutions composant le design for failure, nous allons nous pencher sur le patron de conception (design pattern) « Circuit Breaker » popularisé par Michael Nygard dans le livre « Release It! ».

Mais avant cela, faisons un tour rapide sur d'autres solutions permettant de gérer des problèmes de dépendances.
Mickael Ruau's insight:

 

Table des matières

No comment yet.
Scooped by Mickael Ruau
November 25, 2021 5:04 AM
Scoop.it!

Compositions et héritage.

Compositions et héritage. | Devops for Growth | Scoop.it


Il est donc très important de prendre le temps de réfléchir à la signification de la relation que vous rédigez chaque fois que vous héritez une classe. La composition est une solution parfaite dans la plupart des situations. En utilisant la composition, vous définissez une relation que possède un objet. Cette technique, qui est aussi une des notions de base de la programmation orientée objet, est souvent associée aux interfaces. La composition se retrouve en outre dans plusieurs design patterns comme le composite, le delegate ou le decorator
No comment yet.
Scooped by Mickael Ruau
October 26, 2021 10:18 AM
Scoop.it!

Engineers and Programmers, Stop Writing So Much Firmware

Engineers and Programmers, Stop Writing So Much Firmware | Devops for Growth | Scoop.it
By the way non-embedded engineers, you essentially write firmware too whenever you bury SQL in your code or when you spread platform dependencies throughout your code. Android and iPhone app developers do it when they don’t separate everything they should from dependency on those platforms.

I’ve been involved in a lot of efforts where the line between the product code (the software) and the code that interacts with the product’s hardware (the firmware) is pretty fuzzy at best, fuzzy to the point of non-existence
No comment yet.
Scooped by Mickael Ruau
October 11, 2021 8:54 AM
Scoop.it!

Les Pièges Et Les Patterns Dans La Gestion Des Dépendances Dans Une Architecture Microservice

Les Pièges Et Les Patterns Dans La Gestion Des Dépendances Dans Une Architecture Microservice | Devops for Growth | Scoop.it
Silvia Esparrachiari nous explique comment un changement mineur peut impacter un système, et souligne l’importance d’en avoir une vision globale pour mieux comprendre l’impact d’une modification.
No comment yet.
Scooped by Mickael Ruau
September 15, 2021 7:40 AM
Scoop.it!

Microservice Architecture and its 10 Most Important Design Patterns | by Md Kamaruzzaman | Towards Data Science

Microservice Architecture and its 10 Most Important Design Patterns | by Md Kamaruzzaman | Towards Data Science | Devops for Growth | Scoop.it

Microservice Architecture, Database per Microservice, Event Sourcing, CQRS, Saga, BFF, API Gateway, Strangler, Circuit Breaker, Externalize Configuration, Consumer-Driven Contract Testing

Mickael Ruau's insight:

Tackling complexity in large Software Systems was always a daunting task since the early days of Software development (1960's). Over the years, Software Engineers and Architects made many attempts to tackle the complexities of Software Systems: Modularity and Information Hiding by David Parnas (1972), Separation of Concern by Edsger W. Dijkstra (1974), Service Oriented Architecture (1998).

All of them used the age-old and proven technique to tackle the complexity of a large system: divide and conquer. Since the 2010s, those techniques proved insufficient to tackle the complexities of Web-Scale applications or modern large-scale Enterprise applications. As a result, Architects and Engineers developed a new approach to tackle the complexity of Software Systems in modern times: Microservice Architecture. It also uses the same old “Divide and Conquer” technique, albeit in a novel way.

Software Design Patterns are general, reusable solutions to the commonly occurring problem in Software Design. Design Patterns help us share a common vocabulary and use a battle-tested solution instead of reinventing the wheel. In a previous article: Effective Microservices: 10 Best Practices, I have described a set of best practices to develop Effective Microservices. Here, I will describe a set of Design Patterns to help you implement those best practices. If you are new to Microservice Architecture, then no worries, I will introduce you to Microservice Architecture.

By reading this article, you will learn:

  • Microservice Architecture
  • Advantages of Microservice Architecture
  • Disadvantages of Microservice Architecture
  • When to use Microservice Architecture
  • The Most important Microservice Architecture Design Patterns, including their advantages, disadvantages, use cases, Context, Tech Stack example, and useful resources.

Please note that most of the Design Patterns of this listing have several contexts and can be used in non-Microservice Architecture.

No comment yet.
Scooped by Mickael Ruau
September 15, 2021 6:04 AM
Scoop.it!

Microservice Architecture and Design Patterns - DZone Microservices

Microservice Architecture and Design Patterns - DZone Microservices | Devops for Growth | Scoop.it
Learn about the design patterns of microservice software architecture to overcome challenges like loosely coupled services, defining databases, and more.
Mickael Ruau's insight:

 

There are many other patterns used with microservice architecture, like Sidecar, Chained Microservice, Branch Microservice, Event Sourcing Pattern, Continuous Delivery Patterns, and more. The list keeps growing as we get more experience with microservices.

No comment yet.
Scooped by Mickael Ruau
July 12, 2021 1:57 AM
Scoop.it!

PresentationDomainSeparation

PresentationDomainSeparation | Devops for Growth | Scoop.it

One of the most useful design principles that I've found and followed is that of keeping a good separation between the presentation aspects of a program (the user interface) and the rest of the functionality. Over the years where I've seen this done, I've seen plenty of benefits:

  • Presentation logic and domain logic are easier to understand when separate.
  • You can support multiple presentations on the same base program without duplicating code.
  • User interfaces are hard to test, separation keeps more logic in more testable places.
  • You can easily add a programmatic API for scripting or exposed as services (I actually see these as alternative presentations).
  • Presentation code requires different skills and knowledge to domain code.
Mickael Ruau's insight:

 

Remember that such things as web services are also presentations, even though they are used by computer users rather than human users. So don't intermix domain code with the code required to support a web service, or indeed any other external API.

No comment yet.
Scooped by Mickael Ruau
July 12, 2021 1:22 AM
Scoop.it!

Organizing Presentation Logic

Organizing Presentation Logic | Devops for Growth | Scoop.it

There are several ways to split up the logic of the presentation.

Mickael Ruau's insight:

Observer Gotchas

Many interactions in a rich client presentation make use of the Observer pattern. Observer is a useful pattern, but it comes with some important issues that you need to be aware of.

The great strength, and weakness, of observer is that control passes from the subject to the observer implicitly. You can't tell by reading code that an observer is going to fire, the only way you can see what's happening is to use a debugger. As a result of a complex chain of observers can be a nightmare to figure out, change, or debug as actions trigger other actions with little indication why. As a result I strongly recommend that you use observers only in a very simple manner.

  • Don't have chains of objects observing other objects, observing other objects. One layer of observer relationships is best (unless you use an Event Aggregator
  • Don't have observer relationships between objects in the same layer. Domain objects shouldn't observe other domain objects, presentations should not observer other presentations. Observers are best use across the layer boundary, the classic use is for presnetations to observer the domain.

Another issue for observers lies in memory management. Assume we have some screens observing some domain objects. Once we close a screen we want it to be deleted, but the domain objects actually carry a reference to the screen though the observer relationship. In a memory-managed environment long lived domain objects can hold onto a lot of zombie screens, resulting in a significant memory leak. So it's important for observers to de-register from their subjects when you want them to be deleted.

A similar issue often occurs when you want to delete the domain object. If you rely on breaking all the links between the domain objects this may not be enough since screens may be observing the domain. In practice this turns out be a problem less frequently as the screen departs and the domain objects lifetime are usually controlled through the data source layer. But in general it's worth keeping in mind that observer reltionships often hang around forgotton and a frequent cause of zombies. Using an Event Aggregator will often simplify these relationships - while not a cure it can make life easier.

No comment yet.
Scooped by Mickael Ruau
May 18, 2021 5:31 AM
Scoop.it!

ORM : quelles différences entre le Active Record pattern et le Data Mapper pattern?

ORM : quelles différences entre le Active Record pattern et le Data Mapper pattern? | Devops for Growth | Scoop.it
La manipulation des données stockées par une application utilisant un architecture-pattern de type MVC entraine souvent l'utilisation d'un ORM pour réaliser cette tâche. Par exemple j'utilise personnellement Doctrine que ce soit avec Zend Framework 2 ou Symfony 2. Il en existe d'autres, comme Propel ou Eloquent.

Il existe néanmoins une différence de paradigme parmi les ORM. Et celle-ci "déchire" parfois les utilisateurs d'ORM... Il s'agit de deux patrons (patterns) :

Le Active Record pattern
Le Data Mapper pattern (parfois aussi appelé Repository Pattern)
No comment yet.
Scooped by Mickael Ruau
April 9, 2021 8:57 AM
Scoop.it!

GRASP (programmation) — Wikipédia

GRASP (programmation) - Wikipédia

General responsibility assignment software patterns (ou principles), abrégé en GRASP, se composent de lignes directrices pour l'attribution de la responsabilité des classes et des objets en conception orientée objet. Les différents modèles et principes utilisés par les GRASP sont : le contrôleur, le créateur, l'indirection, le spécialiste de l'information, la cohésion forte, le couplage faible, le polymorphisme, les variations protégées, et l'invention pure.

Mickael Ruau's insight:

 Tous ces modèles répondent à certains problèmes récurrents du développement logiciel. Ils n'ont pas été conçus pour créer une nouvelle façon de travailler, mais pour mieux documenter et normaliser l'existant à l'aide de principes de programmation éprouvés en conception orientée objet.

D'après Craig Larman, « le meilleur outil de conception pour le développement de logiciels est un esprit bien éduqué sur les principes de conception. Ce n'est pas UML ou toute autre technologie »[1]. Ainsi, GRASP est surtout une boîte à outils mentale, une aide à la conception de logiciels orientés objets.

No comment yet.