Imperative vs. Declarative Change Workflows with Dominic Hutton & Niccolo' Cascarano

Durée: 36m10s

Date de sortie: 11/12/2024

In this episode of the Prodcast, guests Dominic Hutton (Staff SRE, HashiCorp) and Niccolo' Cascarano (Senior Staff SRE at Google) join hosts Steve McGhee and Jordan Greenberg to dive into configurations. They discuss the differences between imperative and declarative configuration, explore the benefits and challenges of each approach, and the need for careful consideration when choosing between the two. Ultimately, the goal is to achieve reliable and maintainable systems through effective configuration management.

Welcome to Season 3 of the broadcast, Google's podcast about site reliability engineering and production software.
I'm your host, Steve McGee.
This season we're going to focus on designing and building software in SRE.
Our guests come from a variety of roles both inside and outside of Google.
Happy listening and remember, hope is not a strategy.
Welcome back to the broadcast, Google's podcast on SRE and production software.
Je m'appelle Steve McGee et je suis dans le SRE.
C'est tout pour la saison de software engineering en SRE.
Ce épisode est en train de penser en traditionnel, mais c'est le coeur de la configuration de SRE.
Vous avez entendu de la configuration d'imperative ou de la déclaration de la configuration,
mais je veux dire que la configuration est la code.
Aujourd'hui, nous allons nous raconter les ramifications.
Ok, nous allons nous donner des guests.
Aujourd'hui, nous avons Dominic et Nick.
Les gars, vous introduisiez-vous.
Bien sûr. Je suis Dominic, je suis un SRE.
Avant cette fois, j'ai été en train de faire des organisations d'ingénierieurs en plus d'un petit stage.
J'ai été heureux de travailler sur un mélange de choses,
comme des satellites, des IoT, des SASS, des financements et des HR.
Je ne sais pas si c'est de la faute pour me donner une chance et j'ai eu un bon moment de apprendre.
C'est moi, Nick.
Merci, je suis Nick.
J'ai été un SRE depuis le début de ma carrière.
Je suis venu de Google pour aller à ma université.
J'ai commencé Google en 2011 et j'ai travaillé dans les dernières années
pour le système de delivery,
qui est basé sur un approche déclaratif,
qui va être partie du topic que nous parlons aujourd'hui.
Bien, une autre personne qui a commencé Google a fait notre premier travail à la collège.
Nous sommes Kindred Spirits.
Moi aussi, j'ai un travail dans une autre collège.
Ça compte ? Je ne pense pas que ça compte.
Je ne pense pas que ça compte.
Je pense que c'est cool.
Nous sommes twins.
Vous avez été part de la club, je suis désolé.
Vous savez ce que vous êtes maintenant.
Vous avez fait ça, vous êtes ici.
J'ai hâte d'avoir vous.
Il y a beaucoup de clubs, ça se passe.
Oui, donc je voudrais savoir,
comme un TPM,
ce que veut dire le déclarateur et l'impératif dans ce contexte
de le SRE ?
Vous avez fait ces mots ?
Où ils s'adaptent ?
La matière est différente que le SRE,
donc ce que veut dire le contexte ?
Je ne pense pas que nous les avons fait,
je suis sûr que nous les avons fait un peu d'autres domaines.
Tout ceci est derivatives,
c'est vrai ?
Oui, absolument.
J'ai vu des sciences de computer et de programmation.
Toutes les mots sont faites, ça se passe.
Qu'est-ce que le déclarateur et l'impératif dans ce contexte ?
Ils viennent d'autres places comme la math,
je pense que la math est le SRE.
Mais dans le contexte SRE,
ce que veut dire le déclarateur et l'impératif ?
Nous avons les déclarateurs de l'impératif,
c'est sûr.
Je pense que j'ai un background de études formales,
mais je travaille beaucoup sur la vibe
et les choses que j'ai appris dans les années.
Pour moi, la différence principale est que le déclarateur s'invite.
Il y a un DSL qui décrit quelque chose,
et vous donnez ce DSL à quelque chose
qui décide de la façon de l'arriver à ce point que vous avez décrit.
C'est une langue spécifique, le DSL.
Oui, je suis malade du problème d'acquadie.
Je vais essayer de le faire.
Et l'impératif,
c'est que les gens sont used à la programmation traditionnelle.
Vous avez écrit des instructions,
et ils travaillent par le haut à le bas.
Peut-être qu'il y a des informations de contrôle,
des loops qui font ce truc 10 fois.
Mais oui, c'est une très grande poignée,
mais les pratiques, quand il y a des management de config,
il y a des différences subtiles.
Nick, que vous vous reconnaissez ?
Je vous remercie.
Les choses que j'explique,
que je suis used à expliquer,
ce que l'impératif et le déclarateur
font, c'est que je me disais,
si vous vous donnez une pièce de code,
comme un script,
comme un Python,
comme un script bas de base,
qui fait une instruction spécifique,
un après l'autre,
ce qui est impératif pour moi.
Il peut être un script très compliqué
qui est envisage dans un système grand plus grand,
comme Spinnaker,
qui, en itself,
a la base d'API,
parce que vous déclariez votre travail
dans Spinnaker,
par l'API,
mais le résultat est un workflow impératif
qui exécute
les opérations.
Si vous me disiez,
que c'est le data,
un piece de data,
qui est normalement un buffer protocolique,
un file JSON,
ou littéralement un data,
pas un programme,
et qui définit
le state intérim
que vous voulez atteindre,
que ce soit le state intérim
que vous représente,
ce qui est un système déclaratif.
Donc, comme vous le disiez correctement,
vous devez avoir une langue spécifique,
qui est une étude structurelle,
pour vous opérer,
afin d'apprécier
une opération déclarative.
Je pense qu'il y a d'autres choses
que je pourrais ajouter.
C'est quelque chose que je commonly
vois dans les systèmes de déclaration
des systèmes de déclaration,
comme les modules,
ou les choses que vous pouvez importer,
que les autres personnes ont été autorisées,
et que vous pouvez les utiliser
dans votre déclaration,
et que vous pouvez les composer
ensemble,
pour atteindre
le résultat que vous voulez.
Alors, oui,
vous le faites dans les scripts.
Je ne veux pas réduire
l'impératif pour les scripts,
mais dans les compétences
de la compétition d'impératif,
il n'y a pas de focus,
ce qui peut toucher un peu plus tard.
Ok, donc,
en termes d'impératif,
vous devez produire
le code pour.
Dans un système de déclaration,
vous devez produire le data pour.
Est-ce que
un système d'impératif
a une interface déclarative ?
Oui, comme je l'ai dit,
le spinacker,
c'est l'exemple
que j'ai évoqué avant,
qui est que
le spinacker est un engin de workflow,
qui signifie que vous allez
évoquer un workflow,
qui est juste un script en steroid,
si vous voulez,
qui fait beaucoup plus de choses,
et c'est beaucoup plus réelaboré.
Et vous produisiez les scripts
par utilisant les appels déclaratives,
comme créer des updates,
donc vous devez créer un code,
vous devez créer un step,
vous devez créer une action,
c'est-à-dire les atomes
que le spinacker API propose.
Mais au final,
vous resultez un workflow,
qui est un script d'impératif.
Je le dirai.
Si je veux donner votre contraste,
je vais aussi donner Dominic
sa propre opinion sur ce.
Coup de boulot,
c'est d'ailleurs
déclaratif,
parce que si vous regardez
un file de YAML,
c'est que vous devez avoir
ce déploiement avec cette image
et ces nombreuses replicas.
Vous ne le dites pas,
ce que vous faites,
vous vous devez donner avec ce state d'intent,
s'il vous plaît,
vous devez avoir le logiciel interne
de votre propre logiciel
pour l'inforcer le state d'intent.
Quand vous utilisez
l'impératif vers le déclaratif?
Je ne sais pas,
Nick, mais pour moi,
c'est la vitesse,
c'est quelque chose
qui arrive rapidement.
Je peux mettre un script
en train de faire un câlin,
très rapidement.
Mais ensuite,
je dois mettre mon hôpital d'ingénierie
et être comme,
qu'est-ce que la longevity
que j'ai à prévoir pour ce truc?
Est-ce que je vais être
en train de rester en train
pour quelques années?
Qui va maintenir ça?
Est-ce que je vais maintenir ça?
Est-ce que je vais avoir
à mettre des gens en train
de la vitesse?
Est-ce que je vais pouvoir
satisfaire les constraints
que je dois?
Surtout la sécurité
ou la contrôle de la course,
ou tout ça.
Encore une fois,
je vais dire plus avancé,
je commence à aller
vers le déclaratif
des approches.
C'est certain.
L'impératif est un truc
rapide,
rapide et dournée
dans mes livres.
C'est juste ma opinion.
Je vous ai dit que je vous ai
partagé de votre opinion,
à l'hôpital,
parce que je vais
répondre à quelque chose
sur la même ligne.
Et donc,
l'advantage de l'impératif
est que les programmes normales
sont très utilisés
pour écrire les langues
d'imperative.
Vous exécutez l'ordre,
vous exécutez
l'extraction d'ordre,
et vous savez
ce qui va arriver.
Ensuite, vous introduisiez
le multiflèvage,
et c'est là où
les choses commencent à devenir
intéressantes.
Et c'est le même pour l'imperatif,
parce que,
pensez-vous,
vous commencez petit,
vous commencez avec votre script,
et il devient un programme

Puis, ce programme de Python
qui est responsable,
peut-être, pour pousser
la version de vos images
ou tout ce qui est responsable,
pour le besoin de pousser.
Maintenant, vous devez coopérer
avec un autre script
que votre collègue a écrit
qui est celui de
l'advantage
de vos replicas,
ou tout ce qui est
des choses de capacité
de management.
Et maintenant, vous avez
deux scripts
qui ont tous contribué
au state de l'intendance
de la même ressource.
Et ils doivent coopérer,
parce qu'ils ne se font pas
partager le state final
du state de l'intendance,
parce qu'ils ne savent
qu'un peu de cela.
Donc, quand vous commencez
à aller dans leur direction
et puis,
vous devez ajouter plus de processus
et ça devient un problème
quadratique,
à l'exemple,
parce que tous les autres scripts
doivent savoir
le logic de tout le monde,
pour s'y synchroniser,
ou vous le faites
naïvement
et avec la synchronisation

Et puis,
ça devient un exercice
de bâton
d'exercice.
Ou,
vous vous mettez tout
sous une autre
clé de clé,
qui dit que
le state de l'intendance
est celui de ceci
et les différents
composants,
différents processus,
produisent la part
de l'intendance
que ils sont responsables
d'une version,
d'une capacité,
d'une autre,
d'autres choses,
d'expériment,
d'experimentation,
d'un autre,
ils se combinent
dans un state de l'intendance
qui est ensuite
déroulé par le même système,
qui s'occupe
de la rôlement de
le state de l'intendance
à travers le fleet,
suivant les policies,
suivant les règles prédefinedes
que vous mettez
en partie
dans votre configuration
pour le,
en ce cas,
un système de delivery
continu de se dérouler
qui est
basé sur le plan de déclaration.
Ok.
Donc,
c'est comme
le système est venu
avec les instructions

pour acheter
un déclare
d'intent.
Oui.
Le processus
que vous avez déclaré
est pour
que vous puissiez
rétenir
dans
quelle forme vous voulez,
mais en fin,
ils produisent
une partie
du state de l'intendance
qui est le data.
Donc, c'est comme
ils sont tous contribués
à la même
partie du data,
qui est le state de l'intendance
du fleet,
du système,
ou tout ce qu'ils sont
contrôlés
par le déclarement.
Bien.
En addition
à la synchronisation,
les issues que vous avez touchés
sur quelque chose d'autre
que je veux
vous donner,
c'est comme
à moins quand vous êtes
plus petit,
ou quand vous avez
un peu de ressources,
vous vous réveillez
ce script et il commence
plus petit,
et puis vous avez besoin
d'adverter des choses,
vous ajoutez des autres choses,
et tout de suite,
le script est grand,
et dépend de la plupart
de la population
et de beaucoup de choses.
Et puis, un jour,
il y a un risque de change,
il faut changer le script
pour faire un truc,
et ça se débrouille.
Et la brosse
est très grande.
Je trouve,
avec les systèmes déclarisés,
que vous pouvez
décomposer et
retirer les choses
dans des petits troncs,
pour que
vous soyez
un
brosse-rédit,
un domaine de fêlée,
et vous vous dites
que c'est le module
qui contrôle le database,
ou c'est le module
qui contrôle,
je ne pourrais pas
faire ça,
comme un Xstep
en déclare le database,
comme si
je change le script,
et on a un set de
infrastructures
qui ne fonctionne pas.
Qu'est-ce que nous faisons maintenant?
Rally,
les trucs sont les plus bons.
C'est vraiment bien.
Oui.
Donc,
dans une émergence,
si nous devons
faire des
changements
très vite,
nos
déclarements
sont plus
plus slow
que les impératifs?
Je ne pense pas
que le
perçage d'engin est
plus bas,
c'est pour ça que vous configurez,
c'est ça?
Donc,
si vous avez besoin
de faire
quelque chose,
parce que vos
émergences spécifiques
vous requérent
d'avoir
une migration de données,
si vous êtes
dans les zones
d'émergence,
vous n'avez pas
de l'exemple,
c'est
le plus


ce qui est
un peu


les émergences spécifiques
















Oui,
c'est bien.
Mais




















de la façon dont les systèmes ont été modifiés.
Un peu de petits rougs,
peut-être que je vais utiliser l'exemple de la migration,
ils doivent toucher une database qui remercie leur entire système de production.
Et puis, vous allez au scale de la scale de Google Mothership,
et c'est comme, oh, on est globalement réplicé et chatté,
et il n'y a pas de database, c'est sûr.
Donc, nous devons appeler sur cette nouvelle infrastructure.
Je pense que les équipes opérationnelles ont trouvé la peine
de se faire comprendre quand c'est le temps de l'approcher,
de l'assurer, de la faire, de ce genre de déclarement,
qui permet de se faire un tourner à travers une plage,
vers ce que je le commonly vois en plus,
et en plus de petits rougs,
qui sont comme, je vais juste ouvrir un console,
et je vais avoir quelqu'un de réveiller ma script,
et puis, je vais le faire contre ceci.
Je sais que l'exemple de la migration est vraiment commun à l'SRE.
Vous essayez de faire ce change graduel,
que les SREs sont tellement gênants,
que vous ne voulez pas changer tout à l'heure,
parce que c'est difficile.
Mais une plage, parfois,
peut faire ce très grand change,
quand vous ne voulez pas le faire.
Vous pouvez me dire une fois que
une plage a fait quelque chose de côté ?
Oui.
Je ne sais pas si je veux le faire dans les détails.
On ne vous a pas dit de cette question à personne,
on s'est dit que c'est un autre.
Un autre qui me dérange, je pense,
c'est que quand vous essayez de contrôler
le rôle de la plage avec l'infrastructure,
soit déclarative ou impérative,
je me demande si c'est le right de se faire
pour obtenir ce niveau de contrôl
qui peut être détenu.
Je commence à regarder les techniques de rôle progressif,
comme l'envergation de feature flag,
ou peut-être un petit segment de la plage
qui se déterne, et vous observez,
je me souviens d'un canary,
par la plupart des gens,
avant de le faire dans le rôle de la plage.
Vous pouvez effectuer ce changement progressif
par le déclarative ou impérative,
mais je ne vois pas ce genre de travail
de l'infrastructure.
L'infrastructure est juste ce qu'on utilise
pour atteindre le rôle de la plage.
Je ne vois pas le boule de la plage,
Nick, vous voulez partager une histoire spookie ?
Oui, c'est une question très complexe
et multifaceted,
parce que le premier qui je dirais,
c'est que c'est un peu dépendant de ce genre de changement,
est-ce que vous vous introduisez un nouveau feature ?
Vous vous retirez tout ce feature ?
Est-ce que vous faites un programme
pour faire une migration de la migration
de la structure database A
à la structure database B ?
Donc, chaque des deux est sa propre réponse.
Je dirais que, en général,
la majorité des changements
se prévient dans un éleveil d'artifact.
Normalement, c'est la nouvelle binary de la bataille
de votre back-end,
ou le nouveau set de files de JavaScript
qui ont besoin de rouler à la production.
Je pense que la union des architectures de micro-service
et de la micro-patching
sont les stratégies la plus victimes,
si vous pouvez le faire et si vous pouvez l'afforder,
parce que pas toute la situation peut être faite comme ça.
Si vous vous appelez des firmes
sur les propres services de la maison,
incluant le système de réhabilitation
qui se transmet dans votre maison,
ce qui se fait des fois,
vous voulez être très sûr
que ce sont toujours en fonction.
Vous ne voulez pas chier la réhabilitation
de la personne dans le milieu de l'interne,
parce que vous avez fait un erreur.
Donc, probablement cette situation,
vous allez dans un plus bas développement,
parce que le risque de faire un erreur est plus grand.
Donc, ça s'attend à la management du risque.
Qu'est-ce que vous avez à faire ?
Est-ce que vous avez à faire des systèmes critiques
pour que si vous ne faîtes pas,
vous ne pouvez pas travailler,
d'abord, pensez à la route de Mars,
ou à la voyage 1.
Ils vont être très au courant de ce que vous faites
pour les choses,
parce que vous pouvez juste y aller et les fixer.
Si vous vous appelez des architectures de micro-service,
qui sont plus fluides en nature
et en architectures,
vous pouvez facilement faire des trafics
de la route non-work,
parce que vous avez un set-up canardin
dans le proper sens,
et bien sûr, vous faites le droit,
A, B, la route bleue,
pour faire des comparisions
et faire des analyses de régression.
Le risque est beaucoup plus bas.
Donc, il dépend beaucoup de ce que vous faites
pour savoir si vous avez besoin
de faire des patchs de la route.
Je vois des patchs
qui sont très différents
pour un code de deploy.
Une version de software
de la route que nous portons,
ce patch ne compte pas
sur l'image de ma tête.
Un patch de la route,
c'est une dépendance de l'os,
sur les vm,
pour que vous puissiez
faire des analyses,
parce que c'est plus facile
de faire des analyses.
Et puis, vous vous dites
que tout est sur le feu
et que rien ne peut parler de tout à l'heure.
Je ne sais pas ce que nous avons fait.
Je pense que je l'ai répondu.
Cool.
La première question que je vous ai demandé
serait,
quel processus a-t-il réglé?
Est-ce que le changement global
a changé?
Parce que, en général,
vous avez un système global
de la même manière.
Vous pouvez tous
relier à un certain file
de système distribué
pour récoordiner le lock.
Et ce file est un file global.
Et si vous changez le nom de l'application,
parce que vous avez fait une migration,
le système spider est bien distribué
et est réglé
en mode de façon graduelle.
Et puis, vous avez un point de défi
et le moment où vous le touchez,
tout se fait disparaître.
Donc, c'est toujours très bien.
Nous nous sommes maintenant en train
de faire plus de la culture
et d'understand ce qui se passe.
Mais c'est exactement
où vous analysez ce qui se passe
pour remettre ces points de défi
quand possible.
Ou vous protégez
avec des mécanismes
qui feront de la prochaine fois
un malin
de défi catastrophique.
Je pense que je peux le faire
pour le déclarer
très bien.
Un exercice que je recommande
de la team, c'est
de penser sur vos domaines de défaut
et de
faire une analyse faute
pour vos systèmes.
Personnellement, comme un ingénieur,
je trouve que
de la décomposer
dans les modules de défaut
que je m'enlève et que je m'enlève,
ça m'a aidé à me faire raison
de les boundaries de défaut
et de faire des choses en partie
et de les interactes avec un autre.
Ce n'est pas
juste de faire ça, c'est pas
analyser vos domaines de défaut
mais ça m'a aidé
à me faire raison de ce que je referai
aux pièces et de la manière dont je les interacte.
Oui.
Totalement.
Un problème
qui s'y arrive
avec des équipes qui ont été en train de faire un temps
ou
les entreprises de large
qui ont
beaucoup de gens qui ont été en train de faire des choses
souvent,
à moins que je parle avec les clients,
on trouve qu'il y a un issue culturel
à la place ici
quand il s'agit de la team qui réitent le code
et la team qui manède la configuration.
On se appelle souvent le dev team
et le ops team, juste pour la paix.
Mais il peut y avoir beaucoup de choses.
Je pense que l'une chose que nous pouvons
faire, c'est que
la possibilité pour la team qui
réitent le code et
qui est la compréhension
du système,
d'être les
qui tient avec le config
et de changer le config
parce que traditionnellement, ce n'était pas ça.
Il y avait un set de files
que le team
de la team, soit blindé
ou en suivant les jeux,
se découperait
d'être pas considérés
comme des domaines de défauts.
Donc, je vais en faire une question
A, est-ce que c'est une histoire drôle
ou que Steve fait ça ?
B, est-ce que c'est quelque chose
qui peut être fait ici
pour la industrie
et les teams de plateformes
où vous build un système
qui permet aux teams
d'y manquer leur propre faite
et de ne pas avoir à passer le ball
sur la main,
où vous pouvez
y manquer votre propre configuration
par ce nouveau truc
et qui a tous ces
features et des structures de contrôle.
Je pense que le truc ici est
allouant à tous les problèmes
que nous avons parlé et les options
que nous avons parlé. C'est un grand beast
et donc, les gens qui ont développé
l'application de l'application
ont encore un burden.
C'est pourquoi nous avons vu les teams
d'engineering et de la vie, et nous avons dit
que nous pouvons configurer le truc,
nous avons utilisé ce truc depuis maintenant.
C'était une question très longue.
Qu'est-ce que vous pensez de cet worldview ?
Est-ce que c'est un vrai truc ?
Je suis en boulbe avec ça.
Je pense qu'il y aura un couple d'answer à cette question.
On va aller en haut et en bas
et je travaille
avec la notion de plateformes de l'engineering.
C'est ce que tout le monde est en train de faire
quand ils travaillent avec l'infrastructure de la code.
Je pense que, si ils le reconnaissent
ou pas, le truc qui me circule
est qu'est-ce que votre abstraction est exposée
à vos consommateurs ?
C'est-à-dire que c'est un module
où ils peuvent l'imposer
ou je sais que je vois
des workflows de poursuites Github
où ils ont dit, on ouvre la PR
et la répartition, et vous allez avoir
un truc de puissance stupide, et vous mettez
la bloc de la PR et le configure
ce que vous avez.
Le truc est le abstraction,
pas le paradigme,
mais la abstraction que vous exposez
dans les petits rouges
c'est que les besoins de la business
s'évoluent rapidement.
Vous avez le temps de
construire cette abstraction
pour que la construction
soit aujourd'hui, et si vous le vendez,
vous ne vous en avez pas besoin.
Nous faisons un X maintenant, et vous vous dites
que je pense que ça va changer.
Ce n'est pas le problème,
mais ça vous aide, et c'est
un endroit où le marché productif
et ce que vous avez pour le vendre
est bien figuré,
et stable,
et état, je pense que c'est plus attainable
mais je serais
en train de
investir en ce marché trop tard,
parce que c'est peut-être un esprit
de efforts, comme au début.
Je me dis que le business de l'arrivée
n'est peut-être pas le meilleur idea pour le Pashu.
Nick?
Oui, ça ne fait pas le sens.
En fin de compte, sur l'une des côtés,
vous devez avoir le sentiment de la répartition
pour créer le
nécessaire de l'algebra
pour aller
de très pratiques réactions
et suivre les choses très rapidement
pour un système
plus stratégique, long terme,
et un système
de maintenance.
Et les différents produits
vont et se switchent
à la phase plus mature,
à un point différent en temps,
et ça veut dire que le marché
va avoir un système
très rapidement développé,
qu'il n'a pas de temps pour regarder
les choses long termes et qu'ils préfèrent
les faire rapidement. Plus,
il y a des long termes qui ne sont pas
complètement flashés, donc vous êtes toujours
dans ce
des ccs de l'incertitude de ce que le bon
chose doit faire.
Mais je dois dire, en général,
si vous êtes un company
qui a déjà développé un set
d'exemples de policies
à l'arrivée de la Rolouse
ou un déployement de délivre
qui est mature,
parce que vous avez déjà un set de produits
qui sont matures et doivent
être réellement
parce que maintenant les gens sont en train.
Les nouveaux produits
doivent être shiftés
en regardant la direction
rapidement, ce qui signifie que
ces long termes de durables sont
pour le temps, pour la barre,
pour faire aussi les feels greens
plus accessibles et directement
poursuivant à l'extérieur.
Ce n'est pas toujours possible,
mais c'est la transformation
que vous devez faire
pour faire ça sain. Vous le faites
bien pour la chose qui est la plus importante
de la première, et puis vous
grandir le scope, si vous avez
les possibilités.
En ce moment,
aucun type de changement
peut devenir
part de la même Rolouse systeme.
Il ne se dévient pas
en version de la release
avec le fait de la fin de la flèche,
et puis tout le comf de la release
reste oublié
par le pauvre chat qui sait
les choses et sait
comment faire la bonne ordre.
Donc, si vous avez le système
qui peut clairement mettre
les produits à production, suivant la politique,
il devrait être normalement
facile d'adopter, d'adapter
pour aussi performer un autre type
de changements,
suivant la même logique, parce
que, par exemple,
vous déploiez votre
fond de la fin de la flèche
à travers toutes les régions de la cloud
ou les centres de données.
Vous le reliez en suivant un certain processus de qualification
qui va probablement être regionalisé
et puis prendre soin de la pattern de la trafic
et tout ça.
Et puis vous avez aussi les rues de la fond de la flèche.
Les rues de la fond de la fond de la fond
sont aussi déploies ensemble
avec le reste de votre produit.
Et probablement, cela se fait
avec une logique très similaire
de la location,
ainsi que la binary.
Pourquoi ne vous utilisez pas le système
ou la technologie, ou au moins la logique
que vous utilisez pour mettre les versions
à travers la flèche de la binary de votre fond de la flèche
pour aussi mettre
les rues de la configuration pour votre fond de la flèche.
Ce n'est pas facile à faire, parce que
les gens commencent à penser que le fond de la flèche
est une rue globale. Je dois toujours
dire que les rues de la flèche
sont la même rue globale tout le monde.
Mais si vous commencez à le faire,
vous réalisez que
ce n'est pas vraiment la rue globale,
parce que le fond de la flèche
est déjà distribué, donc il ne sera pas atomique
à travers la rue globale
tout le monde, en même temps,
moins qu'il soit en train de s'engager sur cette cause.
Mais si il s'est en train de s'engager sur cette cause,
cela signifie que vous avez un point global
de défaut, qui est la configuration.
Donc, il dépend de
quel est le risque que vous avez de la réaction
en regardant ce que je disais avant.
Ça résonante avec moi, un signal qui
s'enchaîne dans ma tête.
Ça se fait un peu de thought, la séquencier,
c'est le mot magique. Je pense que chaque team
devrait parler de la séquencier
quand ils regardent comment ces différents
components se rollent.
La première est la code
d'infra-code, ou est-ce que
l'infra-code est la code de la code,
pour qu'ils se rassemblent?
Mais après, je pense qu'une fois que l'on a regardé
la deuxième chose, c'est
où se fait le database?
Le database de migration?
Le database de migration,
la code d'infra-code?
Vous devez tous avoir l'étonnement
de ce qu'il y a à l'heure,
parce que si vous designz votre change
avec une autre understanding
de l'étonnement que ça va avoir
affecté dans la tête,
c'est une réception qui n'est pas
dans la situation de la situation.
Je pense que c'est ce que vous êtes touchant,
c'est ce que le système
affecte le changement,
mais je l'espère vraiment que les gens
comprenaient ça consistant.
Parce que j'ai été dans un peu de incidents
où on s'est dit que
on ne savait pas que ça allait
arriver avec ce qu'on avait pensé.
Nous pensions que ça allait
faire avant ça, et c'est pourquoi
X a été interactué avec Y, et nous avons
des patates.
Si je peux vous rappeler,
vous avez aussi touché un chose
qui est l'un des plus
expensifs
que un équipe
doit faire
pour aller vraiment au déclarateur.
Donc si vous achetez
l'approche déclarateur,
la première chose que vous vous sentez est
que si vous êtes heureux,
l'alphabet de votre système est modélé.
Le reste est peut-être
de prendre un document et puis
10% de cela est juste dans la paix.
Donc le très premier problème que vous avez
à vous déployer est que vous
n'avez pas encore la spécification
de votre système en place.
Donc le très premier
est d'admettre que vous
reconnaissez le problème et puis
commencez à le mettre
dans le modèle de votre déclare
du système de délivre,
toute la dépendance de votre système,
afin d'y pouvoir.
Je pense que le truc qui me
donne vraiment est que
si vous avez
cette code de déclare d'infrastructures,
vous n'avez pas besoin de docs.
Je read le code de infrastructure
pour comprendre où est déployé.
Quand une nouvelle personne s'amuse
dans le système, je suis comme, hey, read le truc.
Ils sont comme, cool, je comprends les bits et pieces.
D'où je suis comme, hey,
bienvenue dans le système,
s'il vous plaît, les 400 lines de bâche
qui parlent de diverses APIs de GCP,
ils sont comme, oui, je l'ai lu, je suis comme, non,
vous avez bien sûr.
Mais c'est ok, on peut apprendre en plus.
Je l'ai vu ça arriver,
dans le passé.
Donc, c'est bien.
Quand vous avez configuré
votre système de modèles,
vous avez vu que la machine
est suivie dans le système de modèles
afin de faire le bon ordre de l'opérations.
Il faut aussi pouvoir
rendre le graph.
Et tout de suite,
et en plus de la TL
du projet de la construction,
et de la même chose que tous les TAs
font des boîtes et des arômes
sur un bloc de blanche,
on dit que la machine
est comme ça,
le modèle dictate que l'architecture
soit comme ça, et puis
vous avez un sens
de la modèles.
En plus de la modèles,
ça signifie que
votre version de la qualification
de la capacité de management,
votre système d'expérience et de contrôle
sont tous contribués
à la situation de l'institut.
Et c'est la relation entre
les différents composants,
parce que tout de suite,
si vous voulez relier la version de la binary
de votre backend,
qui parle de votre database,
vous pouvez commencer à connecter les choses
ensemble et ne plus
donner aux humains les TAs
pour que quand vous avez opéré la version
de la binary, vous ne serez pas
surement pas sur la version
de la schema de la database.
Si vous avez la technologie de la
machine, vous devez
mettre en place un système de
description, et le modèle
permet de faire des policies et des
invariants, qui permettent
d'être au-delà de l'accident,
parce que la nouvelle personne ne savait
que la loi qui était documentée
dans la tête de la personne.
Je peux me tromper un peu plus?
Oui, s'il vous plaît.
Ça m'a promis quelque chose pour moi.
C'est un nom de la phrase
homédicité.
C'est comme tout ce qu'il faut
pour faire de la laver
ou d'autres codes,
les migrations de la data
pour s'envoyer.
C'est comme si c'était un artifact
homédicité qui arrive à un état
que vous voulez être.
Je pense que le NixOS et le project
nix est un exemple
d'achever un homédicité,
ou d'enforcer un,
c'est assez difficile de ne pas
faire de l'état.
Quand le système
s'est plus grand,
ça devient un tool très utile
pour se débarquer et débarquer.
Et aussi pour le raisonnement.
Je suis en train de chier
ce qui contient tous les bits et morceaux,
en tant que je suis en train de chier
ce qui a cette compréhension
sur ce qui est au-delà de mon contrôle,
et je ne sais pas ce que c'est en temps.
Oui.
À la fin de la journée, je pense que
nous avons fait un peu de points de haut,
qui sont
inextricablement interconnectés
dans un moyen très complexe,
mais je préfère
que nous puissions faire un peu de termes
que nous avons appris aujourd'hui.
Hormétisité est un bon système,
mais la idée de Hormédic
en général est quelque chose
qui peut être appliqué à un CI,
ça peut aller plus loin.
Un autre système qui est en train
de se séquencer, c'est un bon système,
pour que vous puissiez comprendre
ou pour comprendre
par lire un script
ou l'actualité de code
de détermination de ce processus
qui se passe dans notre système.
Et puis, je pense que la dernière chose
qui a été détenue dans ma tête,
c'est vraiment ce que nous essayons de déterminer
ces changements de l'intention
des side-effects.
Et souvent, quand nous avons des gens
qui sont en train de se détenir
le nouveau JSON optimiste,
qui par exemple, s'éteigne
les semicolons,
ce qui est le problème, c'est que nous ne nous
ne nous gardons pas de la traité de ce changement,
et nous ne nous apprêtons pas de changement graduel
effectivement. Nous nous espérons
que les gens experts ne puissent pas faire des erreurs,
et que nous ne nous souhaitons pas
de tout ce qu'ils ont fait et ne nous prétendons pas de tout ça.
Donc, à l'incent, nous avons des choses
et que ce soit imperative ou déclarative,
certains ont des bénéfices,
certains ont des tracteurs. C'est tout juste de code,
parce que, comme je l'ai dit
à la fin du tout, config est juste de code,
c'est juste de dire qu'il y a un autre code,
ou qu'il y a un autre code pour ne pas le faire.
Donc, vous faites vraiment des changements
pour le système. Faites attention
à l'entraînement de vos domaines de défense
dans votre système entier, et à l'incent
des side-effects inattendus.
Merci pour la discussion
d'un des deux d'entre vous, Dominic et Nick, c'était
génial. Avant de nous aller,
est-ce que vous voulez qu'on nous
laisse notre audience avec, en termes
de comment entendre plus de votre voix,
ou juste, comme, un dernier
shout-out à votre favorite?
En fait, je vous invite
si vous êtes intéressés à savoir plus
dans les détails,
tout ce que j'ai basé mon conversation
sur est le système
que nous avons développé les derniers 10 ans à Google.
Vous pouvez trouver un papier de Nick
que nous avons publié en 2021
qui s'appelle Prospect & Unnealing.
Donc, si vous avez juste Google Prospect & Unnealing,
vous devez le trouver très facilement, et je pense
que nous pouvons également ajouter la source
pour le podcast Metal Data.
Donc, vous pouvez le trouver
tout de suite.
Oui, tout de suite,
je vais me recommander
pour faire quelque chose que je n'ai pas fait,
qui est que je travaille sur un blog.
C'est l'un où j'ai pratiqué mon terrible
enregistrement, et peut-être
je fais les concepts et les principes
de l'église, d'église,
et plus accessible aux gens.
Les derniers jours, comme je l'ai dit, je n'ai pas
écrit encore tout, mais peut-être que
par le temps que ça va se passer, il y a un truc.
Si vous voulez le vérifier,
il sera disponible sur sketchreliability.engineering.
Bien joué.
Je vais vous faire le truc.
C'est dans l'Ether, vous devez le faire.
Oui, je l'ai vraiment mis en place.
Je vais vous redire avant que ça va se passer,
et vous vous direz que je n'ai pas écrit
plus de postes.
Pas de problème, pas de pression.
Merci à tous de nos guest.
Dominic et Nick, merci beaucoup
pour venir ici, et merci
à ma co-host, Steve.
J'espère que tout le monde a un bon jour,
et on se retrouve bientôt.
Merci à tous.
Merci à tous.

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

GoogleSREProdcast

SRE Prodcast brings Google's experience with Site Reliability Engineering together with special guests and exciting topics to discuss the present and future of reliable production engineering!
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere