Devops for Growth
107.5K views | +8 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: 'architecture'. Clear
Scooped by Mickael Ruau
Scoop.it!

Agile Causal Relations - Le Guide Agile par Wishtack

Agile Causal Relations - Le Guide Agile par Wishtack | Devops for Growth | Scoop.it

Un schéma qui explique les relations entre les pratiques techniques et l'agilité.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Forget monoliths vs. microservices. Cognitive load is what matters.

Forget monoliths vs. microservices. Cognitive load is what matters. | Devops for Growth | Scoop.it
For innovative software organizations, managing the overall cognitive load on their teams is a guiding development and operational principle.
Mickael Ruau's insight:

The "monoliths versus microservices" debate often focuses on technological aspects, ignoring strategy and team dynamics. But instead of starting with technology, smart-thinking organizations are beginning with the team's cognitive load as the guiding principle for the effective delivery and operation of modern software systems. 

Excessive cognitive load works against effective team ownership and supportability of software. Here's why, and how to approach the problem.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Le système d’information 3-tiers - Blogs - Forum du club des développeurs et IT Pro

Le système d’information 3-tiers - Blogs - Forum du club des développeurs et IT Pro | Devops for Growth | Scoop.it
Le système d’information 3-tiers MarieKisSlaJoue
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Getting started with Jamstack

Getting started with Jamstack | Devops for Growth | Scoop.it


Jamstack’s core ideas are not something new. If you go back to the origins of the web, you’ll recap how developers used to create static HTML content manually, page by page, to serve the clients.

The whole cycle from development to deployment was simpler for everyone involved. Obviously, with the complexities required for the systems nowadays, we can not go back to the way it used to be.

However, Jamstack’s not focused on simply serving manually-created static HTML contents to gain in page load speed. It’s goal is on extracting the best out of these experiences to improve performance, productivity, and flexibility while keeping maintenance simpler.

Aside from that, there’s a famous article from AWS known as The 5 Pillars of the AWS Well-Architected Framework, which the company wrote to share with the community their extensive experience in making great architectures. They are:

Operational Excellence
Security
Reliability
Efficiency (in terms of performance)
Optimization (in terms of costs)

When looking at a Jamstack architecture, you can spot each one of these pillars well implemented through:

Reducing the number of internal architectural pieces that move within the systems to decrease the need for Ops people and, therefore, have better operational excellence.
Making sure the app follows the consolidated best practices for security means which increases the overall security.
Providing endless scalability to the various nodes in which your app may be running so that it’s reliable.
Delivering the fastest experience possible due to the static nature of all website resources, including CDN.
Decreasing costs since there are only static resources to host .
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Microservices — La Lettre Et L’Esprit

Microservices — La Lettre Et L’Esprit | Devops for Growth | Scoop.it
L’architecture Microservices est puissante et populaire, et nous verrons dans cet article les bonnes et mauvaises implémentations: “petits services” vs “services découplés” ou “Lettre” vs “Esprit”.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Le Domain-Driven Design Avec Les Value-Added Services Et Les Domain Gateways Chez SoundCloud

Le Domain-Driven Design Avec Les Value-Added Services Et Les Domain Gateways Chez SoundCloud | Devops for Growth | Scoop.it
Deux articles ont récemment été publiés par SoundCloud pour décrire l'évolution de leur architecture de service vers la mise en oeuvre de Domain Gateways, en passant par les Value-Added Services. Les auteurs décrivent comment ces patterns basés sur le Domain-Driven Design ont aidé à réduire les doublons et à homogénéiser la logique métier et le contrôle d’accès.

Un value-added service est un service qui est chargé de fournir des agrégats à ses appelants. Les Domain Gateways permettent de gérer la même entité à travers différents domaines.

Selon les auteurs, la première architecture de services de SoundCloud comportait deux couches de services. Les services périphériques récupéraient toutes les données des services de base. Chaque service périphérique orchestrait tous ses appels et était également responsable du contrôle d’accès. A terme, ce pattern a fini par entraîner des doublons dans le code et la logique, lorsque différents services ont évolué pour utiliser les mêmes données de manière légèrement différente.

Les auteurs écrivent que la seconde étape de l'évolution de l'architecture de services de l'entreprise a consisté à ajouter une troisième couche intermédiaire mettant en œuvre le pattern des Value-Added Services (VAS). Cette bascule vers les Value-Added Services a permis de mieux répartir les responsabilités. La couche périphérique fournit des fonctionnalités d’API gateway et répond aux besoins spécifiques des clients, tandis que la couche VAS consomme les données des services de base, les transformant en entités agrégées. Les services de la couche périphérique consomment ensuite ces agrégats.

Source: https://developers.soundcloud.com/blog/service-architecture-2

Un pattern tel que les VAS comporte certains inconvénients que les auteurs ont identifiés, comme un ensemble de services plus large et des latences réseau accrues en raison des rebonds supplémentaires introduits par les services intermédiaires. Ils envisagèrent d'utiliser plutôt des bibliothèques partagées mais conclurent finalement qu'une couche VAS était préférable dans leur cas.

La prise en charge des réponses partielles dans les Value-Added Services permet d'adapter la quantité de données renvoyées aux besoins de chaque client. Des réponses partielles peuvent également réduire le nombre d'appels réseau, mais les auteurs précisent que SoundCloud est focalisé sur la gestion de la complexité au niveau de la couche périphérique.

Les auteurs ajoutent que leurs Value-added Services ont fini par inclure la possibilité de modifier les données des entités. Des interfaces distinctes ont permis d'isoler les opérations d'écriture des opérations de lecture en utilisant les concepts de "commande" et de "requête", qui constituent le cœur du célèbre pattern Command Query Responsibility Segregation (CQRS).
No comment yet.
Scooped by Mickael Ruau
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
Scoop.it!

Get Better APIs With Conway’s Law - DZone Integration

Get Better APIs With Conway’s Law - DZone Integration | Devops for Growth | Scoop.it
Axway Catalyst Erik Wilde looks at how Conway’s law relates to API design and the important lessons it teaches about organizational structure and API design.
Mickael Ruau's insight:

Mel Conway formulated his famous law in 1967 and it was a reflection on how large organizations work and produce results. The “official version” (as published by Mel Conway himself) is as follows:

“Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.”

A more informal way of putting this may be to say that “the communication paths in an organization determine the structure of the system it designs,” or even further simplifying this that “the structure of an organization determines the structure of the system it designs.”

Either way, Conway’s law tells us that because designing complex systems is a complex task, it is inescapable that the way they are designed (looking at the design process as a collaborative task) determines the design that is being produced.

There has been some work on testing this hypothesis in the wild, but currently, there is no “scientific proof” that this law holds. However, many believe it to have some merit. Lacking formal proof, it is up to everybody to decide for themselves whether they think that the low holds. But at the very least it can serve as an inspiration and allow us to think about the interdependencies between design processes and design outcomes.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Lire Etude CIO : Des infrastructures aux processus et applications, comment bâtir un SI flexible ?

Lire Etude CIO : Des infrastructures aux processus et applications, comment bâtir un SI flexible ? | Devops for Growth | Scoop.it
Pour répondre à des besoins qui changent constamment, les métiers attendent de l’IT une capacité à s’adapter en temps réel aux évolutions du business. Pour offrir cette agilité, toutes les couches du système d’information doivent pouvoir s’adapter facilement, de l’infrastructure physique aux applications, de façon à ne pas remettre en cause l’architecture tous les matins. Cette agilité de bout en bout suppose un certain nombre de prérequis. Au niveau applicatif, opter pour une approche plateforme facilite les évolutions. Il faut également une industrialisation des processus IT, du développement à la mise en production, afin d’accélérer les déploiements.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

The 5 Pillars of the AWS Well-Architected Framework | AWS Partner Network (APN) Blog

The 5 Pillars of the AWS Well-Architected Framework | AWS Partner Network (APN) Blog | Devops for Growth | Scoop.it


The AWS Well-Architected Framework helps cloud architects build the most secure, high-performing, resilient, and efficient infrastructure possible for their applications. The framework provides a consistent approach for customers and AWS Partner Network (APN) Partners to evaluate architectures, and provides guidance to implement designs that scale with your application needs over time.

In this post, we provide an overview of the Well-Architected Framework’s five pillars and explore design principles and best practices. You can find more details—including definitions, FAQs, and resources—in each pillar’s whitepaper we link to below.

Read the full Well-Architected whitepaper >>
1. Operational Excellence
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

API vs. Microservices: The Complete Guide

API vs. Microservices: The Complete Guide | Devops for Growth | Scoop.it
These definitions might seem a bit obtuse, so here's how I would define them:

API stands for Application Programming Interface. APIs define how two pieces of software can connect and talk to each other. If your application were a big company, your API's job would be to keep in touch with external parties (customers or company partners, for example). Most APIs are organized around some standard, like REST or GraphQL, so that everybody knows how to use them.

Microservices are pieces of software (often just isolated functions) that do a single, tiny, independent part of a bigger application. If your application were a big company, each employee would be a microservice, each playing their own specific and small role, working alongside but independently from their coworkers. This lets you make changes to individual microservices without affecting the rest of the application. In a big company replacing or retasking one employee in a large team would probably not affect the rest of the company all that much.

It's the evolution of the monolith architecture. Instead of having one block composing the whole application, every component is divided into smaller building blocks.

Put like that, does it make a bit more sense how they're different and how they can work together?
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

The Majestic Monolith

The Majestic Monolith | Devops for Growth | Scoop.it
Monolith by Rene Aigner Some patterns are just about the code. If your code looks like this, and you need it to do that, here’s what to do. You’d do well to study such patterns, as they give you a …
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Reducing Cloud Infrastructure Complexity

Reducing Cloud Infrastructure Complexity | Devops for Growth | Scoop.it
Key Takeaways

The multi-cloud journey is often a long, complex one. Adaptable tooling is key to deal with current heterogeneous systems, and accommodate future change.
Team buy in is key. The transformation will touch many organizations and require leadership and a well communicated vision to succeed.
Measure the current state of IT utilization. A successful transformation not only needs a clear vision of the future, but also a clear understanding of the present.
Cloud selection must be driven by current and anticipated business needs. This can include differentiators such as security, performance, reliability, cost for anticipated usage, etc.
Avoid large scale sudden transformation; favor incrementalism initially. The journey to multi-cloud is one of organizational learning as well as execution. Incremental transformation allows internal systems to adjust to new realities and absorb the shock of change. Later, when experience and confidence is gained with new technology and operational models, the change can accelerate.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Matthew Skelton - Accidental Architects: how HR designs software systems (EN)

Flowcon online 2020

Who designs the architecture of your software systems? Conway's Law suggests that HR may be strongly shaping software architecture by deciding how teams are composed and interrelate. Do you want HR designing your software architecture?

Organization architecture and software system architecture need to be co-designed to avoid friction from Conway's Law.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

5 software architecture patterns: How to make the right choice

5 software architecture patterns: How to make the right choice | Devops for Growth | Scoop.it
There are five key software architecture patterns in wide use. Here's what apps they're best for—and their challenges.
Mickael Ruau's insight:

Mark Richards, a software architect based in Boston, has pondered for more than 30 years about how software should work. His free book, Software Architecture Patterns, describes five architectures that are seen repeatedly in software systems.  

Here are Richards' five foundational architectures, distilled into a quick reference of their strengths and weaknesses, as well as optimal use cases. For many cases, one single architecture is the best choice that will unite your code. For others, it may make sense to optimize each section of code with the best architecture for it.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Monolithic Transformation | VMware Tanzu

Monolithic Transformation | VMware Tanzu | Devops for Growth | Scoop.it
Part I: Fostering Change. Examine the principles of small-batch thinking, user-centric design, and shifting from functional teams to product teams.
Part II: Cloud Native Cookbook for Leadership. Apply those principles across your organization, from creating and communicating your strategy through building your pipeline and choosing the right cloud platform.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Software Architecture is Overrated, Clear and Simple Design is Underrated

Software Architecture is Overrated, Clear and Simple Design is Underrated | Devops for Growth | Scoop.it


I had my fair share in designing and building large systems. I've taken part in rewriting Uber's distributed payment systems, designing and shipping Skype on Xbox One and open-sourcing RIBs, Uber's mobile architecture framework. All of these systems had thorough designs, going through multiple iterations and had lots of whiteboarding and discussion. The designs then boiled down to a design document that was circulated for more feedback before we started building.

All of these systems were large at scale: hundreds of developers build them - or on top of them - and they power systems used by millions of people per day. They were also not just greenfield projects. The payments system rewrite had to replace two, existing payments systems, used by tens of systems and dozens of teams, all without having any business impact. Rewriting the Uber app was a project that a few hundred engineers worked simultaneously on, porting existing functionality to a new architecture.

Let me start with a few things that might sound surprising. First, none of these designs used any of the standard software architecture planning tools. We did not use UML, nor the 4+1 model, nor ADR, nor C4, nor dependency diagrams. We created plenty of diagrams, but none of them followed any strict rules. Just plain old boxes and arrows, similar this one describing information flow or this one outlining class structure and relationships between components. Two diagrams within the same design document often had a different layout and were often added and modified by different engineers.

Second, there were no architects on the teams that owned the design. No IT architects or enterprise architects. True, neither Uber nor Skype/Microsoft have hands-off software architect positions. Engineers at higher levels, like staff engineers, are expected to still regularly code. For all the projects, we did have experienced engineers involved. However, no one person owned the architecture or design. While these experienced developers drove the design process, even the most junior team members were involved, often challenging decisions and offering other alternatives to discuss.

Third, we had practically no references to the common architecture patterns and other jargon referenced in common software architecture literature, such as Martin Fowler's architecture guide. No mentions of microservices, serverless architecture, application boundaries, event-driven architecture, and the lot. Some of these did come up during brainstormings. However, there was no need to reference them in the design documents themselves.
Mickael Ruau's insight:

The best software design is simple and easy to understand. The next time you're starting a new project, instead of thinking, "How will I architect this system, what battle-tested patterns should I use and what formal methodology should I document it with?", think "How can I come up with the simplest possible design, in a way that's easy for anyone to understand?".

Software architecture best practices, enterprise architecture patterns, and formalized ways to describe systems are all tools that are useful to know of and might come in handy one day. But when designing systems, start simple and stay as simple as you can. Try to avoid the complexity that more complex architecture and formal tools inherently introduce.

No comment yet.
Scooped by Mickael Ruau
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
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
Scoop.it!

Sober Look at Microservices - DZone Microservices

Sober Look at Microservices - DZone Microservices | Devops for Growth | Scoop.it
Curious observation: this is not always possible to do a transition from single to multiple deployable artifacts, or “break the monolith”. Not necessarily because “monolith” is poorly designed or implemented (this also happens, but it’s another story). The actual reason is that internal architecture might be not service-based. For example, Hexagonal Architecture is hard or impossible to refactor into service-based architecture. Another possible cause — for business reasons, it might be impossible to split domains into services. After all, applications are created to solve business problems, not vice versa.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Joshua Bloch: Bumper-Sticker API Design

Joshua Bloch: Bumper-Sticker API Design | Devops for Growth | Scoop.it
My conference session How to Design a Good API and Why it Matters has always drawn large crowds; on InfoQ was the third most viewed content last year. When I presented this session as an invited talk at OOPSLA 2006, I was given the opportunity to write an abstract for the proceedings. In place of an ordinary abstract I decided to try something a bit unusual: I distilled the essence of the talk down to a modest collection of pithy maxims, in the spirit of Jon Bentley's classic Bumper-Sticker Computer Science, Item 6 in his excellent book, More Programming Pearls: Confessions of a Coder (Addison-Wesley, 1988).

It is my hope that these maxims provide a concise summary of the key points of API design, in easily digestible form
Mickael Ruau's insight:

 

Watch Presentation: How to Design a Good API & Why it Matters

Joshua Bloch is Chief Java Architect at Google, author of Effective Java, Second Edition (Addison-Wesley, 2008), and coauthor of Java Puzzlers: Traps, Pitfalls, and Corner Cases (Addison-Wesley, 2005) and Java Concurrency in Practice. He was a Distinguished Engineer at Sun Microsystems, where he led the design and implementation of numerous Java platform features including JDK 5.0 language enhancements and the Java Collections Framework. He holds a Ph.D. from Carnegie-Mellon and a B.S from Columbia.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

How We Build Micro Frontends. Building micro-frontends to speed up… | by Jonathan Saring | Bits and Pieces

How We Build Micro Frontends. Building micro-frontends to speed up… | by Jonathan Saring | Bits and Pieces | Devops for Growth | Scoop.it
At Bit, we build tools for over 100,000 developers working with components. Our tools help developers build, reuse, and collaborate on independent components to speed up development and improve…
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

2021: Low code serverless functions with WebAssembly-powered DSLs

2021: Low code serverless functions with WebAssembly-powered DSLs | Devops for Growth | Scoop.it
Serverless functions are the "A" in JAMstack. However, traditional serverless functions from public clouds have poor performance, limited language and framework selections, and are generally not well suited for complex tasks such as AI inference. In this talk, we will present a new type of serverless functions, based on WebAssembly, that supports Domain Specific Languages (DSLs) specifically designed for application tasks. The WebAssembly functions are low code, very fast, and can be deployed on edge network nodes.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Micro Frontends - extending the microservice idea to frontend development

Micro Frontends - extending the microservice idea to frontend development | Devops for Growth | Scoop.it
Extending the microservice idea to frontend development. Techniques, strategies and recipes for building a modern web app with multiple teams that can ship features independently.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Dépendances Et Valeur Métier Au Cœur De L’Architecture

Dépendances Et Valeur Métier Au Cœur De L’Architecture | Devops for Growth | Scoop.it
Points Clés

La notion de dépendance est une problématique qui, si ignorée, peut entraîner des complications au niveau de l’architecture en termes d’évolution et de maintenance.
Afin d’obtenir des solutions maintenables et évolutives le sens des dépendances doit être guidé par la valeur métier.
L’inversion de dépendance est un outil puissant pouvant être utilisé à différents niveaux d’abstraction afin de pallier le problème de dépendance
Les dépendances ne sont pas anodines et ont des conséquences pouvant impacter l’organisation.
L’objectif est de protéger le “core” métier de votre solution pour pouvoir, d’une part lui garantir une évolution rapide en minimisant les impacts, et d’autre part de produire, à moindre coût, le plus de valeur métier possible.
No comment yet.