Lumea nu este perfectă. Ceva poate merge prost în orice moment. Din fericire, majoritatea dintre noi nu lansăm rachete în spațiu și nici nu construim avioane.

O persoană modernă depinde de aplicația din telefonul său, iar sarcina noastră este să o facem astfel încât, în orice moment, în orice circumstanță, să poată deschide aplicația și să vadă imagini cu pisici.

Oamenii nu sunt perfecți. Facem greșeli tot timpul. Facem greșeli de scriere, putem uita ceva sau cedăm leneviei. O persoană se poate umfla de colo sau poate fi lovită de o mașină.

Fierul nu este perfect. Hard disk-urile se sting. Datacenters își pierd canalele. Procesoarele se supraîncălzesc și rețelele electrice nu reușesc.

Software-ul nu este perfect. Memoria curge. Conexiunile sunt rupte. Replicile se descompun și datele trec în uitare.

Rahat se întâmplă - așa cum spun prietenii noștri de peste mări. Ce putem face cu toate acestea? Iar răspunsul este banal până la simplitate - nimic. Putem testa pentru totdeauna, putem crește o mulțime de medii, putem copia producția și păstrăm o sută de mii de servere de rezervă, dar tot nu va economisi: lumea nu este perfectă.

Singura decizie corectă aici este acceptarea. Trebuie să accepți lumea așa cum este și să minimizezi pierderile. De fiecare dată când configurați un serviciu nou, trebuie să vă amintiți că acesta se va rupe în cel mai nepotrivit moment.

Se va sparge sigur. Cu siguranță veți face o greșeală. Fierul va eșua cu siguranță. Clusterul se va prăbuși cu siguranță. Și conform legilor acestei lumi imperfecte, se va întâmpla exact când nu vă așteptați mai puțin.

Ce facem majoritatea dintre noi pentru a înșela pe toată lumea (inclusiv pe noi înșine)? - Am creat alerte. Scriem valori viclene, colectăm jurnale și creăm alerte, mii, sute de mii de alerte. Cutiile noastre poștale sunt pline. Telefoanele noastre sunt pline de SMS-uri și apeluri. Plantăm etaje întregi de oameni pentru a privi diagrame. Și când pierdem din nou accesul la serviciu, începe analiza: ce am uitat să monitorizăm.

Toate acestea sunt doar o aparență de fiabilitate. Nicio alertă, măsurare și monitorizare nu vă vor ajuta.

Astăzi te-au sunat și ai reparat serviciul - nimeni nu a observat că s-a stricat ceva. Și mâine ai plecat la munte. Și poimâine s-a umflat. Oamenii nu sunt perfecți. Din fericire, suntem ingineri, trăim într-o lume imperfectă și învățăm să o cucerim.

Deci, de ce ar trebui să te trezești noaptea sau dimineața pentru a-ți citi mailul în loc de cafea? De ce o afacere ar trebui să depindă de o persoană și de performanța acesteia. De ce. Nu inteleg.

Înțeleg doar că nu poți trăi așa și nu vreau să trăiesc așa. Și răspunsul este simplu: automatizează-l (da, cu majusculă). Avem nevoie de mai mult decât alerte și apeluri pe timp de noapte. Avem nevoie de răspunsuri automate la aceste mesaje. Trebuie să fim siguri că sistemul se poate remedia singur. Sistemul trebuie să fie flexibil și flexibil.

Din păcate, nu avem încă un AI suficient de inteligent. Din fericire, toate problemele noastre sunt formalizabile.

Nu am un glonț de argint, dar am o dovadă a conceptului pentru AWS.

AWS Lambda

Fără server - în primul rând, ceva care nu rulează nu se poate rupe.
Bazat pe eveniment - a primit un eveniment, l-a procesat, oprit.
Cunoaște JVM, ceea ce înseamnă că puteți folosi toată experiența din lumea Java (ceea ce înseamnă că pot folosi Clojure).
3d-party - Nu este nevoie să urmăriți și să întrețineți AWS Lambda.

Pipeline arată astfel:
Eveniment -> Subiect SNS -> AWS Lambda -> Reacție

Apropo, subiectul SNS poate avea mai multe puncte finale. Aceasta înseamnă că puteți adăuga pur și simplu mesaje și primiți și notificări. Și putem extinde funcția lambda și puteți face notificările mult mai utile: de exemplu, trimiteți alerte imediat împreună cu diagrame sau adăugați trimiterea de SMS-uri.

Un exemplu complet al unei funcții Lambda poate fi găsit la: github.com/lowl4tency/aws-lambda-example
Funcția lambda unge toate nodurile din ELB, nu în starea inService.

Analizarea codului

În acest exemplu, vom ucide toate nodurile care nu se află în starea InService. Apropo, întreaga funcție Lambda are ~ 50 de linii de cod într-un singur fișier, ceea ce înseamnă că este ușor de întreținut și ușor de introdus.

Orice proiect Clojure începe cu project.clj

Am folosit SDK-ul oficial Java și excelenta bibliotecă Amazonica, care este un wrapper pentru acest SDK. Ei bine, pentru a nu trage o mulțime de lucruri inutile, excludem acele părți ale SDK-ului de care nu avem nevoie

] ] ] ]]
Pentru mai multă flexibilitate în fiecare funcție Lambda, folosesc un fișier de configurare cu cel mai simplu edn. Pentru a putea gestiona evenimentele, trebuie să schimbăm ușor declarația de funcție.

(ns aws-lambda-example.core (: gen-class: implements)
Punct de intrare. Citim evenimentul la intrare, procesăm acest eveniment folosind handle-event și, în consecință, îl scriem în fluxul JSON.

(defn -handleRequest "Parser of input and genarator of JSON output" (let (-> (io / reader is) json / read (-> (io / reader is) json / read walk / keywordize-keys handle-event (json / scrie w)) (.flush w)))))
Cal de lucru:

(defn handle-event) : Înregistrări 0: Sns: Mesaj]): elb-instance-ids (mapv: instanțe-id instanțe))))

Obținem o listă de noduri în ELB și le filtrăm după stare. Toate nodurile care se află în starea InService sunt eliminate din listă. Restul sunt reziliate.

Tot ceea ce imprimăm prin pprint va merge în jurnalele CloudWatch. Acest lucru poate fi util pentru depanare. Deoarece nu avem o lambda care rulează constant și nu există nicio modalitate de conectare la REPL, acest lucru poate fi destul de util.

(: mesaj (eveniment de intrare [: Înregistrări 0: Sns: Mesaj]): id-uri de instanță (mapv: instanțe de id-instanță))))
În acest loc, întreaga structură pe care o vom genera și o vom întoarce din această funcție va fi scrisă în JSON și va fi văzută ca rezultat al execuției în interfața Web Lambda.

În funcțiune instanțe nesănătoase filtrați lista noastră și obțineți ID-ul instanței numai pentru acele noduri pe care ELB le-a considerat nefuncționale. Primim o listă de instanțe și le filtrăm după etichete.

(defn instanțe nesănătoase-elb (- >>
În funcțiune get-elb-instances-status apelați metoda API și obțineți o listă cu toate nodurile cu stări pentru un ELB specific

(defn get-elb-instances-status (- >> (elb / describe-instance-health: load-balancer-name elb-name): instanță-state (harta get-health-status)))
Pentru comoditate, eliminăm lucrurile inutile și generăm o listă numai cu informații care ne interesează. Acesta este id-ul instanței și starea fiecărei instanțe.

(defn get-health-status (: instance-id (: instance-id instance): state (: state instance)))
Și ne filtrăm lista eliminând acele noduri care se află în starea InService.

(defn unhealthy-elb-instances (- >> instances-status (remove # (= (: state%) "InService")) (map: instance-id)))
Și atât: 50 de linii care vă vor permite să nu vă treziți noaptea și să mergeți calm la munte.

Implementare

Pentru a facilita implementarea, folosesc un script bash simplu

#! / bin / bash # Loader AWS Lambda aws lambda create-function --debug \ --function-name example \ --handler aws-lambda-example.core \ --runtime java8 \ --memory 256 \ --timeout 59 \ --role arn: aws: iam :: 611066707117: role / lambda_exec_role \ --zip-file fileb: //./target/aws-lambda-example-0.1.0-SNAPSHOT-standalone.jar
Configurăm o alertă și o atașăm la subiectul SNS. Subiectul SNS este atașat lambda ca punct final. Mergem cu calm în munți sau suntem alungați de o mașină.

Apropo, datorită flexibilității, este posibilă programarea oricărui comportament al sistemului, și nu numai în funcție de sistem, ci și de metrici de afaceri.

Se crede că în această lume trebuie să fii mai bun decât oricine altcineva în absolut totul. Fă totul perfect, nu face greșeli și arată perfect. Dar aceasta este calea spre înfrângere și nefericire. Oamenii imperfecti sunt mai predispuși să aibă succes și, de asemenea, să fie mai fericiți.

Ne străduim pentru perfecțiune în toate. Studiază bine, nu face greșeli, lucrează târziu, construiește relații perfecte, crește un copil minune, arată ca un atlet sau un model. Ne punem cea mai înaltă bară și apoi suferim de perfecționismul nostru. Dorința de a obține cel mai bun rezultat în orice afacere face o persoană mai slabă, mai nefericită și mai tristă.

Cel mai bun inamicul celor buni. Auzim acest proverb încă din copilărie, dar nu ne gândim adesea cât de înțelept este. William Shakespeare, în tragedia „Regele Lear”, a mai scris: „Străduindu-ne pentru cei mai buni, stricăm deseori binele”. Cu un zel excesiv, de multe ori stricăm ceea ce era deja bun înainte.

Eforturile pentru perfecțiune ne distrug viața. Fie perfect, fie rău? Cursa constantă pentru rezultatul perfect durează tot timpul, ia toată forța, distrage atenția de la principalul lucru, interferează cu atingerea altor obiective și te face nefericit.

1. Imperfecțiunea și comunicarea cu ceilalți

Mulți oameni încearcă să se comporte perfect cu ceilalți, dar au puțini prieteni, nu sunt populari și sunt adesea singuri. Este ca un elev excelent la școală. Idealitatea este plictisitoare și rece. Cei mai buni prieteni și prieteni au o mulțime de defecte. Sunt defecte, fac greșeli și nu arată ca persoana perfectă. Dar în aceasta sunt ca alții. Suntem atrași de oamenii care se străduiesc să fim noi înșine, nu un șablon artificial. E frumos să te distrezi cu ei, să faci prostii și să fii prieten.

2. Imperfecțiunea este mai bună pentru relații și dragoste

Există fete care își îngrijesc aspectul și încearcă să devină modele ideale dintr-o revistă lucioasă. Sunt confuzi cu privire la aspect și comportament. Fetele care au încercat să devină perfecte sunt stoarse, au o grămadă de complexe și au pornit-o pe cea greșită. O relație cu o astfel de fată nu va face un bărbat fericit. Ea îl va enerva pe bărbat cu problemele ei și îi va cere să se conformeze idealului de bărbat. Este obositor și stresant. Sexul cu astfel de fete va fi plictisitor și putred. Frumusețea ideală se va gândi la felul în care arată în fiecare moment și dacă părul îi este ciufulit. O fată imperfectă poate plasa în blugi pe trepte, își poate lega părul cu căști, poate merge la camping cu un minim de haine și poate face sex acolo unde vrei, nu doar în suita regală. Fetele imperfecte știu să se bucure de viață, să se bucure și să se distreze. Cu o astfel de iubită este ușor să devii fericit.

3. Imperfecțiune și succes

Perfecționismul a distrus mulți oameni și companii promițătoare. Cursa pentru perfecțiune nu ne permite să privim totul mai pe larg. Ne deranjăm cu lucruri mărunte, aducând la perfecțiune, uitând de alte chestiuni. Ne-am propus obiective nesfârșite și de neatins. Este nevoie de tot timpul și energia de care avem nevoie în altă parte.

Eforturile pentru perfecțiune nu fac decât să ne distrugă. Devenim nefericiți, incapabili să ne atingem obiectivele și visele, datorită faptului că suntem înghițiți de lucruri inutile.

E mai bine să fii imperfect. Vei fi mai fericit și mai reușit.

La întrebarea De ce oamenii nu sunt perfecți? dat de autor Ivan Makarov cel mai bun răspuns este idealul este plictisitor

Răspuns de la Spiculete[guru]
Pentru că fiecare are propria idee despre ideal.


Răspuns de la Jenix[guru]
Nu există oameni ideali și nu pot fi.


Răspuns de la Tufă[guru]
Vă rog, să împrăștiem întrebarea pe rafturi))
_
Să presupunem că există o anumită persoană care este perfectă. Acum imaginați-vă că nu va fi evaluat de ideal și tocmai de cei ale căror standarde și înțelegeri sunt distorsionate. În mod ideal, acești observatori vor găsi în mod ideal cine sunt, iar distorsiunile pe care le văd în el sunt propriile lor distorsiuni.
_
În al doilea rând, deși ar fi trebuit să se facă de la bun început. Trebuie să aflăm ce este PERFECT. Ce este ideal pentru unul - pentru altul - ultimul rahat. Prin urmare, pentru a măsura pe cineva sau ceva după standardele idealității, este necesar, așa cum s-a aflat inițial, - pentru a fi cel mai ideal, în al doilea rând, este necesar să se aleagă nu măsuri relative, ci UNIVERSALE ale idealității, cele măsuri care sunt legi, nu legile fizicii, ci legi subțiri.
_
În al treilea rând. Nu putem spune cu certitudine că imperfecțiunea este imperfecțiunea. Există un lucru precum perfecțiunea imperfectului. De exemplu, natura cu stânci ascuțite și stânci și râpe unde nu numai că îți poți rupe picioarele, ci și să te sinucizi în iad se numește perfectă, iar o persoană cu aceleași gropi și râpe în caracter nu mai este ideală și este percepută ca FIIII (deci nu se canalizează! !! =)). Tot ceea ce există nu mai contrazice nicio lege, altfel nu ar exista. Iar perfecțiunea este la care se străduiește dezvoltarea și nu știm dacă se realizează vreodată ... Probabil doar aspiră. Când o plantă crește și atinge lumina, acest lucru nu înseamnă că și-a propus să crească până la soare, dar caută să devină mai aproape de ea, soarele își stabilește totuși un scop.


Răspuns de la Nevroză[guru]
este vorba despre emoții, oamenii din fizică au emoții pentru ceva


Răspuns de la Unchiul Nikita[guru]
nu, nu ar trebui - altfel trebuiau să fie bile sau cercuri - deoarece bilele și cercurile sunt forme ideale


Răspuns de la balaur[expert]
De ce crezi că oamenii nu sunt perfecți? Oamenii au cea mai ideală abilitate - capacitatea de auto-dezvoltare. O persoană poate depăși cel mai mare ideal și apoi să se dezvolte și mai mult. Și ce este mai ideal decât acela care poate transcende toate idealurile?


Răspuns de la Ol9sik[guru]
Omul este perfect prin imperfecțiunea sa ... După cum a spus un personaj într-un singur film: "Nu am nevoie de o femeie ideală. Este greu să umfli o femeie ideală ..."


Răspuns de la Vitalik Ochi oblic[incepator]
Sunt perfecte, sigur că o persoană este cu siguranță acolo


Răspuns de la Veronica[guru]
Dacă toată lumea era perfectă, la ce ar trebui să te străduiești? Nu va fi niciodată așa.


Răspuns de la Lenkin[guru]
Am crezut același lucru.


Răspuns de la Galina Filyanova[guru]
nu ideal ce fel de oameni - bătrâni, tineri, femei, bărbați. ... ? fiecare are propriile sale idealuri


Răspuns de la Mihail Levin[guru]
ce ai găsit ideal în legile fizicii? Citiți Mecanica cuantică!
Și de ce ar trebui oamenii să fie ideali, și nu dinozaurii sau virusurile gripale?


Răspuns de la Iepure alb[guru]
"Există, în general, oameni adecvați aici care sunt cel puțin puțin capabili să raționeze?"
Faptul este că oamenii care sunt capabili să raționeze îți răspund și nu la o conversație goală și analfabetă, pe care tu, aparent, din naivitatea ta, o consideri inteligentă ...
Ce este „perfect”?
Ce înseamnă că oamenii (nu o persoană individuală - ci oamenii!) Nu sunt ideali?
Ce te face să crezi că legile (?!) Fizicii sunt ideale?


Nu există oameni ideali, există oameni care își ascund defectele. (Mihail Shchetinin)

Idealul este o stea călăuzitoare. Fără ea, nu există direcție fermă și nu există direcție - nu există viață. (Lev Nikolaevich Tolstoi)

Fiecare om, mare sau mic, este poet dacă vede un ideal datorită acțiunilor sale. (Henrik Ibsen)

Nu trebuie să credem că doar unul care este impecabil de pur și extrem de moral contribuie la cultivare. Toate lucrurile mărețe formează o persoană. (Johann Wolfgang Goethe)

Probabil cea mai tragică dintre imperfecțiuni este imperfecțiunea umană. (Evgeny Mikhailovich Bogat)

Oamenii rareori se îmbunătățesc, cu excepția cazului în care au un alt model decât ei înșiși. (Oliver Goldsmith)

O persoană nu este niciodată la fel de aproape de perfecțiune ca atunci când completează un formular de cerere de locuri de muncă. ()

Păcat este cel care trăiește fără un ideal! (Ivan Sergeevich Turgenev)

Prietenii buni, cărțile bune și conștiința adormită sunt viața ideală. (Mark Twain (Samuel Lenghorn Clemens))

Nu te exalta pe tine însuți umilindu-i pe ceilalți. Nu are nici un rost. Nivelul tău se va manifesta în continuare în cel mai nepotrivit moment pentru tine. Mai bine îmbunătățiți-vă. ()

O parte esențială a excelenței noastre este observarea imperfecțiunilor noastre. (François Lamotte-Levays)

Nu te ține prea tare de neajunsurile tale, sub pretextul că perfecțiunea nu aparține acestei lumi. (Jules Renard)

Umilirea nu este, de fapt, altceva decât o comparație a demnității personale cu perfecțiunea morală. (Immanuel Kant)

Idealul este un mod de a mormăi. (Paul Valerie)

Perfecțiunea este doar puțin plictisitoare. Aceasta este cu adevărat ironia vieții: ceea ce ne străduim cu toții este mai bun atunci când nu este realizat pe deplin. (William Somerset Maugham)

Puterea și profitul, splendoarea și gloria: cine nu le atinge este cu adevărat pur. Dar cel care atinge și nu are murdărie pe sine, este dublu pur. Multe cunoștințe și viclenie, ascuțire și discernământ: oricine este lipsit de ele este cu adevărat înălțat. Dar cel care este înzestrat cu ele și nu le folosește, este dublu înălțat. (Hong Zicheng)

Sunt la fel de puține femei ideale ca bărbați ideali, dar le întâlnești mai des. (Hildegard Knef)

Cu cineva care neagă idealul, se poate întâmpla cu ușurință să ia vulgarul pentru frumos. (Johann Wolfgang Goethe)

Idealul nostru nu este o ființă castrată, incorporală, abstractă, idealul nostru; este o persoană integrală, reală, integrală, perfectă, educată. (Ludwig Andreas Feuerbach)

Idealul este în tine. Obstacolele în calea realizării sunt în tine. Poziția dvs. este materialul din care trebuie să realizați acest ideal. (Thomas Carlyle)

Nimic nu este atât de perfect încât să fie liber de orice reproșuri. (Esop)

Chiar dacă vrei să fii doar idealul tău, va trebui să forțezi întreaga lume să facă acest lucru. (Friedrich Nietzsche)

Numai conștiința sarcinilor comune și a idealurilor finale face ca o persoană să fie persistentă și consecventă. (Semyon Ludvigovich Frank)

Un om perfect caută totul în el însuși, unul nesemnificativ - în alții. (Confucius (Kun-Tzu))

Ochii mei văd idealurile altor oameni, iar această priveliște mă încântă adesea; voi, miopii, credeți că acestea sunt idealurile mele. (Friedrich Nietzsche)

Efortul este o condiție necesară pentru îmbunătățirea morală. (Lev Nikolaevich Tolstoi)