Cards of category "RULES OF THE GAME"

RULES OF THE GAME

RULES OF THE GAME

RULES OF THE GAME

[ TECHNICAL CHOICES ]

The technical choices are made and assumed by the Feature Team.

RULES OF THE GAME

[ TECHNICAL CHOICES ]

The Feature Team must act responsibly to identify the choices that impact itself exclusively and the choices that impact the organization.

The choices that exceed the scope of the Feature Team (eg, license, infrequent programming language) must be validated by the organization or by peer convergence process .

RULES OF THE GAME

[ GOOD USE ]

The right tool for the good use is a source of savings.

RULES OF THE GAME

[ GOOD USE ]

A bad tool imposed on everyone is a risk. The misuse of a good tool can have very damaging consequences. For example, poorly used Agile methods are dangerous.

Tools must be questioned.

Excel is often a rational choice but it is not a tool to do everything (CRM, ERP, Datamart, …)

RULES OF THE GAME

[ BUILD VS. BUY ]

Prefer Build for the core business.

Consider Buy for the rest, case by case.

RULES OF THE GAME

[ BUILD VS. BUY ]

The more a tool brings a differentiating feature for the organization, the more it should be built. The core business must allow specificity and adapt quickly and often. Some enterprise software are sometimes adapted to this need.

For the rest: SaaS, Open Source, Build or Vendor are to be studied case by case.

RULES OF THE GAME

[ OPEN SOURCE ]

Opt for Open Source.

Alternative choices must be explained.

RULES OF THE GAME

[ OPEN SOURCE ]

Proprietary solutions are a risk for the organization which must be able to take over maintenance if needed.

Few are the proprietary tools that do not have open source alternatives.

The organization benefits from the Open Source Community and can pay it back with its contributions.

RULES OF THE GAME

[ MICRO-SERVICES ]

Develop stand-alone and loosely coupled services.

RULES OF THE GAME

[ MICRO-SERVICES ]

Loose coupling must be the norm.

Each micro-service has a clearly defined interface.

This interface determines the coupling between micro-services.

Domain Driven Design helps, especially through Bounded Contexts, to anticipate this problem.

RULES OF THE GAME

[ DATA ]

Each service has its own data storage system.

RULES OF THE GAME

[ DATA ]

A Data Store is intended to be coupled only with a single micro-service.

Data access from one micro-service to another is done exclusively via its interface.

This design implies consistency over time across the platform. It must be apprehended at all levels, including UX.

RULES OF THE GAME

[ PERIMETER ]

Each micro-service must have a reasonable functional perimeter, which "fits in the head".

RULES OF THE GAME

[ PERIMETER ]

A micro-service offers a reasonable number of features.

Do not hesitate to split a micro-service when it begins to grow.

A service of reasonable size makes it possible to consider serenely the rewriting, if the need arises.

RULES OF THE GAME

[ REACTIVE ]

The Reactive Manifesto opens the way towards the design of reactive architectures.

RULES OF THE GAME

[ REACTIVE ]

Responsive programming focuses on the flow of data and the propagation of change. It is based on the "Observer" pattern, contrary to the more traditional "Iterator" approach.

The Reactive Manifesto sets some fundamental axis: availability and speed, resilience to failure, flexibility, elasticity and message oriented.

RULES OF THE GAME

[ ASYNC-FIRST ]

Asynchronous processes foster decoupling and scalability in favor of performance.

RULES OF THE GAME

[ ASYNC-FIRST ]

Exchanges between applications must be asynchronous first.

Asynchronous exchanges naturally allow loose coupling, isolation and flow control (back-pressure).

Synchronous communication should only be considered when required.

RULES OF THE GAME

[ EVENTS ]

The information system must be event-driven.

RULES OF THE GAME

[ EVENTS ]

The event-driven functional processes are naturally implemented in an asynchronous manner.

Being event-driven allows for approaches such as Command Query Responsibility Segregation (CQRS) and Event Sourcing.

RULES OF THE GAME

[ MESSAGE BROKER ]

Prefer a simple, robust and powerful message-broker to a "smart pipe".

RULES OF THE GAME

[ MESSAGE BROKER ]

ESB showed their limits: scalable maintenance is critical, both from a technical and organizational standpoint.

Message brokers like Kafka offer a simple, durable and resilient solution.

Smart endpoints and dumb pipes is an architecture that works at scale: it's Internet.

RULES OF THE GAME

[ SYNCHRONIZATION ]

The full synchronization of the system should be thought of during its design.

RULES OF THE GAME

[ SYNCHRONIZATION ]

If the synchronization between two systems is ensured by an event flow, the total resynchronization of these systems must be planned at design time.

An automatic synchronization audit (example: by samples) allows to measure and detect any possible synchronization errors.

RULES OF THE GAME

[ CENTRALIZATION ]

Services configuration is centralized, their discovery is managed through a directory.

RULES OF THE GAME

[ CENTRALIZATION ]

Micro-services configuration is centralized for all environments.

A central directory ensures dynamic discovery of micro-services.

The IS' global scalability depends on this directory.

RULES OF THE GAME

[ SANDBOX ]

Feature Teams provide a sandbox environment.

RULES OF THE GAME

[ SANDBOX ]

Feature Teams maintain a sandbox environment (current and upcoming versions) to allow other teams to develop at scale.

In non-nominal cases, some features may be disabled in the development environment.

RULES OF THE GAME

[ DESIGN FOR FAILURE ]

Your system will crash!

Design it so that it is fault-tolerant.

RULES OF THE GAME

[ DESIGN FOR FAILURE ]

Your system will fail, it's inevitable. It must be designed for this (Design For Failure).

Plan redundancy at every level: hardware (network, disk, etc.), application (multiple instances of applications), geographical zones, providers (example: AWS + OVH).

RULES OF THE GAME

[ TOOLKITS ]

Provide toolkits, do not impose strict frameworks.

RULES OF THE GAME

[ TOOLKITS ]

Beware of transversal in-house technical components! They are restrictive, expensive and difficult to maintain.

Accelerators, toolkits, technical stacks can be pooled, at the choice of the Feature Teams, avoiding a dogmatic approach.

RULES OF THE GAME

[ CLOUD ]

Public, private or hybrid, the cloud (IaaS or PaaS) is the standard for production.

RULES OF THE GAME

[ CLOUD ]

PaaS services are preferred, simple, and scale quickly.

IaaS services allow for greater flexibility but require more operational work.

A private cloud is not a traditional virtualization environment, it relies on commodity hardware.

RULES OF THE GAME

[ INFRASTRUCTURE ]

Feature Teams do not manage the infrastructure, it is provided and maintained by the organization.

RULES OF THE GAME

[ INFRASTRUCTURE ]

Infrastructure issues are not the responsability of the Feature Teams. Infrastructure must be provided and maintained by a transversal service.

RULES OF THE GAME

[ CONTAINERS ]

Containers provide the flexibility needed for heterogeneous tooling.

RULES OF THE GAME

[ CONTAINERS ]

Containers provide the flexibility needed by Feature Teams to enable heterogeneous tooling in a homogeneous context.

RULES OF THE GAME

[ ENVIRONMENTS ]

The use of containers makes it possible to overcome the problems of technical environments.

RULES OF THE GAME

[ ENVIRONMENTS ]

The containers (example: Docker) make it possible to abstract the environments differences.

The deployment process must be agnostic to the environment.

Some components such as databases should not be deployed in containers. Their deployment is still automated.

RULES OF THE GAME

[ METRICS ]

Metrics must be centralized and accessible to all.

RULES OF THE GAME

[ METRICS ]

Metrics are accessible to everyone with different levels of granularity: detailed view for the relevant Feature Team, aggregations for other members of the organization.

Access to metrics does not imply access to data, access must be controlled to maintain confidentiality.

All environments are concerned.

RULES OF THE GAME

[ QUALITY ]

Software quality is a key factor.

RULES OF THE GAME

[ QUALITY ]

Code reviews are systematic. They are conducted by members of the Feature Team or other members of the organization, as part of Continuous Improvement.

That is not you being audited but your code: "You are not your code!".

Qualimetry can be partly automated, but nothing beats the "fresh eye".

RULES OF THE GAME

[ AUTOMATED TESTING ]

Automated testing is a non-negotiable prerequisite for continuous deployment.

RULES OF THE GAME

[ AUTOMATED TESTING ]

Automated testing ensures quality of the product over time.

It is a prerequisite to continuous deployment, it allows for frequent changes and deployments.

Production rollout becomes a non-event!

RULES OF THE GAME

[ TEST LEVELS ]

Tests at all levels : unit, integration, functional, resilience, performance.

RULES OF THE GAME

[ TEST LEVELS ]

Integration and functional tests are the most important ones, they ensure the correct behavior of the product.

Unit tests are suitable for development.

Performance tests measure performance over time.

Resilience tests help to anticipate failures.

RULES OF THE GAME

[ COVERAGE ]

Coverage is the primary unbiased indicator of test quality.

RULES OF THE GAME

[ COVERAGE ]

The tests code coverage is a good metric of code quality.

It is a necessary condition but not sufficient, the coverage of a bad test strategy can be high without guarantee that the code is of good quality.

RULES OF THE GAME

[ SECURITY ]

Security is a process, it should not be treated in response to problems.

RULES OF THE GAME

[ SECURITY ]

Security experts can be integrated directly into Feature Teams if needed.

Security experts are available in the organization for audit purposes, awareness and sharing.