Verden er ikke perfekt. Noget kan gå galt når som helst. Heldigvis sender de fleste af os ikke raketter ud i rummet eller bygger fly.

En moderne person afhænger af applikationen i sin telefon, og vores opgave er at gøre det sådan, at han på ethvert tidspunkt under alle sammenfaldende omstændigheder kan åbne applikationen og se billeder med katte.

Folk er ikke perfekte. Vi laver fejl hele tiden. Vi laver stavefejl, vi kan glemme noget eller bukke under for dovenskab. En person kan svulme corny eller blive ramt af en bil.

Jern er ikke perfekt. Harddiske dør. Datacentre mister kanaler. Processorer overophedes, og strømnettet fejler.

Softwaren er ikke perfekt. Hukommelsen flyder. Forbindelser er revet. Replikaer nedbrydes, og data går i glemmebogen.

Lort sker - som vores oversøiske venner siger. Hvad kan vi gøre ved alt dette? Og svaret er banalt for enkelthed - ingenting. Vi kan teste for evigt, skabe masser af miljøer, kopiere produktion og beholde hundrede tusinde backup -servere, men det gemmer stadig ikke: Verden er ikke perfekt.

Den eneste rigtige beslutning her er at acceptere. Du skal acceptere verden som den er og minimere tab. Hver gang du opretter en ny service, skal du huske, at den vil gå i stykker i det mest upassende øjeblik.

Det går helt sikkert i stykker. Du vil helt sikkert begå en fejl. Jern vil helt sikkert mislykkes. Klyngen vil helt sikkert smuldre. Og ifølge lovene i denne uperfekte verden vil det ske præcis, når du mindst venter det.

Hvad gør de fleste af os for at bedrage alle (inklusive os selv)? - Vi opretter advarsler. Vi skriver snedige metrics, indsamler logfiler og opretter advarsler, tusinder, hundredtusinder af advarsler. Vores postkasser er fulde. Vores telefoner er sprængfyldte med SMS og opkald. Vi planter hele etager af mennesker for at se på diagrammer. Og når vi igen mister adgangen til tjenesten, begynder analysen: hvad glemte vi at overvåge.

Alt dette er bare et udtryk for pålidelighed. Ingen advarsler, metrics og overvågning hjælper.

I dag ringede de til dig, og du rettede servicen - ingen lagde mærke til, at noget var gået i stykker. Og i morgen tog du afsted til bjergene. Og i overmorgen hævede det. Folk er ikke perfekte. Heldigvis er vi ingeniører, vi lever i en ufuldkommen verden, og vi lærer at erobre den.

Så hvorfor skulle du vågne om natten eller om morgenen for at læse din mail i stedet for kaffe? Hvorfor en virksomhed skal afhænge af én person og hans præstationer. Hvorfor. Jeg forstår ikke.

Jeg forstår bare, at man ikke kan leve sådan, og jeg vil ikke leve sådan. Og svaret er enkelt: Automatiser det (ja, med et stort bogstav). Vi har brug for mere end bare advarsler og opkald om natten. Vi har brug for automatiske svar på disse meddelelser. Vi skal være sikre på, at systemet kan ordne sig selv. Systemet skal være fleksibelt og fleksibelt.

Desværre har vi ikke en smart nok AI endnu. Heldigvis er alle vores problemer formaliserbare.

Jeg har ikke en sølvkugle, men jeg har et Proof of Concept til AWS.

AWS Lambda

Serverløs - først og fremmest kan noget, der ikke kører, ikke gå i stykker.
Begivenhedsbaseret - modtog en begivenhed, behandlede den, lukkede ned.
Kender JVM, hvilket betyder, at du kan bruge al oplevelsen fra Java -verdenen (hvilket betyder, at jeg kan bruge Clojure).
3d -fest - Ingen grund til at spore og vedligeholde AWS Lambda.

Pipeline ser sådan ud:
Begivenhed -> SNS -emne -> AWS Lambda -> Reaktion

I øvrigt kan SNS -emnet have flere slutpunkter. Det betyder, at du også kan tilføje mail og også modtage meddelelser. Og vi kan udvide lambda -funktionen og gøre meddelelser meget mere nyttige: f.eks. Send advarsler med det samme sammen med diagrammer eller tilføj SMS -afsendelse.

Et komplet eksempel på en Lambda-funktion findes på: github.com/lowl4tency/aws-lambda-example
Lambda -funktionen sømmer alle noder i ELB ikke i tilstanden inService.

Parsing af koden

I dette eksempel dræber vi alle noder, der ikke er i tilstanden InService. I øvrigt tager hele Lambda -funktionen ~ 50 linjer kode i en fil, hvilket betyder, at den er let at vedligeholde og let at indtaste.

Ethvert Clojure -projekt starter med project.clj

Jeg brugte det officielle Java SDK og det fremragende Amazonica -bibliotek, som er en indpakning til dette SDK. For ikke at trække mange unødvendige ting udelukker vi de dele af SDK, som vi ikke har brug for

] ] ] ]]
For mere fleksibilitet i hver Lambda -funktion bruger jeg en konfigurationsfil med den mest grundlæggende edn. For at kunne håndtere begivenheder skal vi ændre funktionserklæringen lidt.

(ns aws-lambda-eksempel.core (: gen-klasse: redskaber)
Indgangspunkt. Vi læser begivenheden ved input, behandler denne begivenhed ved hjælp af handle-event og skriver den til JSON-strømmen som et resultat.

(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 / skriv w)) (. flush w)))))
Arbejdshest:

(defn handle-event (lad (når (seq usundt) (pprint "De næste forekomster er usunde:") (pprint unhealthy) (ec2 / terminate-instances: instance-ids unhealthy)) (: message (get-in event [ : Records 0: Sns: Message]): elb-instance-ids (mapv: instance-id instances))))

Vi får en liste over noder i ELB og filtrerer dem efter status. Alle noder, der er i tilstanden InService, fjernes fra listen. Resten afsluttes.

Alt, hvad vi udskriver via pprint, går til CloudWatch -logfiler. Dette kan være nyttigt til fejlfinding. Da vi ikke har en konstant kørende lambda, og der ikke er nogen måde at oprette forbindelse til REPL, kan dette være ganske nyttigt.

(: message (get-in event [: Records 0: Sns: Message]): instance-ids (mapv: instance-id instances))))
På dette sted vil hele strukturen, som vi vil generere og returnere fra denne funktion, blive skrevet i JSON og blive set som et resultat af udførelse i Lambda Web -grænsefladen.

I funktion usunde-alb-tilfælde filtrer vores liste og få instans-id kun for de noder, som ELB betragtede som ikke-fungerende. Vi får en liste over forekomster og filtrerer dem efter tags.

(defn usunde-alb-forekomster (->>
I funktion get-elb-instances-status ring til API -metoden og få en liste over alle noder med status for en bestemt ELB

(defn get-elb-instances-status (->> (elb / beskryf-instance-health: load-balancer-name elb-name): instance-states (map get-health-status)))
For nemheds skyld fjerner vi unødvendige ting og genererer kun en liste med oplysninger, der er interessante for os. Dette er instans-id og status for hver forekomst.

(defn get-health-status (: instance-id (: instance-id instance): state (: state instance)))
Og vi filtrerer vores liste ved at fjerne de noder, der er i tilstanden InService.

(defn unhealthy-elb-instances (->> instances-status (remove # (= (: state%) "InService")) (map: instance-id)))
Og det er alt: 50 linjer, der giver dig mulighed for ikke at vågne om natten og roligt gå til bjergene.

Implementering

For at lette implementeringen bruger jeg et simpelt bash-script

#! / bin / bash # Loader AWS Lambda aws lambda create-function --debug \-eksempel på funktionsnavn \ --handler aws-lambda-eksempel.core \ --runtime java8 \ --memory 256 \ --timeout 59 \ --role arn: aws: iam :: 611066707117: role/lambda_exec_role \ --zip-fil fileb: //./target/aws-lambda-example-0.1.0-SNAPSHOT-standalone.jar
Vi opretter en advarsel og vedhæfter den til SNS -emnet. SNS -emne er knyttet til lambda som et slutpunkt. Vi kører roligt ind i bjergene eller bliver kørt over af en bil.

Af den måde, på grund af fleksibilitet, er det muligt at programmere enhver adfærd i systemet, og ikke kun efter system, men også ved forretningsmæssige metrics.

Det menes, at du i denne verden skal være bedre end alle andre i absolut alt. Gør alt perfekt, tag ikke fejl og se perfekt ud. Men dette er vejen til nederlag og ulykke. Ufuldkomne mennesker er mere tilbøjelige til at få succes og også lykkeligere.

Vi stræber efter perfektion i alt. Undersøg godt, tag ikke fejl, arbejd sent, opbyg perfekte relationer, opdræt et vidunderbarn, ligner en atlet eller en model. Vi sætter os selv den højeste bar, og så lider vi under vores perfektionisme. Ønsket om at opnå det bedste resultat i enhver virksomhed gør en person svagere, mere ulykkelig og trist.

Bedst det gode fjende. Vi hører dette ordsprog siden barndommen, men vi tænker ikke ofte på, hvor klogt det er. William Shakespeare skrev i tragedien "King Lear" også: "Når vi stræber efter det bedste, ødelægger vi ofte det gode." Med overdreven iver ødelægger vi ofte det, der allerede var godt før.

At stræbe efter perfektion ødelægger vores liv. Enten perfekt eller dårlig? Det konstante løb om det perfekte resultat tager hele tiden, tager al styrken, distraherer fra det vigtigste, forhindrer dig i at nå andre mål og gør dig utilfreds.

1. Ufuldkommenhed og kommunikation med andre

Mange mennesker forsøger at opføre sig perfekt sammen med andre, men de har få venner, de er ikke populære og er ofte ensomme. Det er som en fremragende elev på skolen. Idealitet er kedeligt og koldt. De allerbedste venner og venner har mange fejl. De er fejlbehæftede, de laver fejl, og de ligner ikke den perfekte person. Men i dette er de som andre. Vi er tiltrukket af mennesker, der stræber efter at være os selv, ikke en kunstig skabelon. Det er rart at have det sjovt med dem, gøre dumme ting og være venner.

2. Ufuldkommenhed er bedre for relationer og kærlighed

Der er piger, der passer deres udseende og forsøger at blive ideelle modeller fra et blankt magasin. De er forvirrede over udseende og adfærd. Piger, der forsøgte at blive perfekte, bliver presset, har en flok komplekser og tænder den forkerte. Et forhold til en sådan pige vil ikke gøre en mand glad. Hun vil irritere manden med hendes problemer og kræve, at han overholder idealet om en mand. Det er udmattende og stressende. Sex med sådanne piger vil være kedeligt og råddent. Den ideelle skønhed vil tænke på, hvordan hun ser ud i hvert øjeblik, og om hendes hår er rodet. En uperfekt pige kan net i jeans på trinene, binde håret med hovedtelefoner, gå på vandreture med et minimum af tøj og have sex, hvor du vil have det, ikke kun i den kongelige suite. Uperfekte piger forstår at nyde livet, få glæde og have det sjovt. Det er med sådan en kæreste, at det er let at blive glad.

3. Ufuldkommenhed og succes

Perfektionisme har ødelagt mange lovende mennesker og virksomheder. Løbet om perfektion tillader os ikke at se alting bredere. Vi gider med små ting, bringer perfektion, glemmer andre ting. Vi satte os uendelige og uopnåelige mål. Det fylder al den tid og energi, vi har brug for andre steder.

At stræbe efter perfektion ødelægger os kun. Vi bliver ulykkelige, ude af stand til at nå vores mål og drømme på grund af det faktum, at vi sidder fast i unødvendige ting.

Det er bedre at være ufuldkommen. Du bliver gladere og mere succesrig.

Til spørgsmålet Hvorfor er mennesker ikke perfekte? givet af forfatteren Ivan Makarov det bedste svar er ideal er kedeligt

Svar fra Spikelets[guru]
Fordi alle har deres egen idé om idealet.


Svar fra Jenix[guru]
Der er ingen ideelle mennesker og kan ikke være.


Svar fra Underskov[guru]
Lad os sprede spørgsmålet på hylderne))
_
Lad os antage, at der er en bestemt person, der er perfekt. Forestil dig nu, at det ikke vil blive vurderet af idealet, og netop af dem, hvis standarder og forståelser er forvrænget. Ideelt set vil disse iagttagere ideelt finde præcis, hvem de er, og de forvrængninger, de ser i den, er deres EGNE FORVIRKNINGER.
_
For det andet, selvom det burde have været gjort fra begyndelsen. Vi skal finde ud af, hvad der er PERFEKT. Hvad der er ideelt for den ene - for den anden - det sidste lort. Derfor, for at måle nogen eller noget ved idealitetsstandarder, er det nødvendigt, som det oprindeligt blev fundet ud af, - for at være det mest ideelle, for det andet er det nødvendigt at vælge ikke relative, men UNIVERSALE idealmål, de foranstaltninger, der er love, ikke fysikkens love, men love tynde.
_
For det tredje. Vi kan ikke med sikkerhed sige, at ufuldkommenhed er ufuldkommenhed. Der er sådan noget som det uperfektes perfektion. For eksempel kaldes naturen med skarpe klipper og klipper og kløfter, hvor du ikke kun kan bryde dine ben, men også dræbe dig selv til helvede perfekt, og en person med de samme huller og kløfter i karakter er ikke længere ideel og opfattes som FIIII (så det ikke kanal! !! =)). Alt, hvad der eksisterer, modsiger ikke længere nogen love, ellers ville det ikke eksistere. Og perfektion er, hvad udviklingen stræber efter, og om den nogensinde opnås, ved vi ikke ... Sandsynligvis bare håber. Når en plante vokser og når lyset, betyder det ikke, at den har sat sig et mål om at vokse til solen, men den søger at blive tættere på den, solen sætter stadig et mål.


Svar fra Neurose[guru]
det handler om følelser mennesker i fysik har følelser for noget


Svar fra Onkel Nikita[guru]
nej, det burde de ikke - ellers skulle de være kugler eller cirkler - fordi bolde og cirkler er ideelle former


Svar fra Trække på[ekspert]
Hvorfor tror du, at folk ikke er perfekte? Mennesker har den mest ideelle evne - evnen til selvudvikling. En person kan overgå det største ideal og derefter udvikle sig yderligere. Og hvad er mere ideelt end det, der kan overskride alle idealer?


Svar fra Ol9sik[guru]
Mennesket er perfekt ved sin ufuldkommenhed ... Som en karakter sagde i en film: "Jeg har ikke brug for en ideel kvinde. Det er svært at puste en ideel kvinde op ..."


Svar fra Vitalik skråt øje[nybegynder]
Der er helt sikkert en person er helt sikkert der


Svar fra Veronica[guru]
Hvis alle var perfekte, hvad skulle du stræbe efter? Sådan bliver det aldrig.


Svar fra Lenkin[guru]
Jeg tænkte det samme.


Svar fra Galina Filyanova[guru]
ikke ideelt hvilken slags mennesker - gamle, unge, kvinder, mænd. ... ? Alle har deres egne idealer


Svar fra Mikhail Levin[guru]
hvad fandt du ideelt i fysikkens love? Læs kvantemekanik!
Og hvorfor skulle folk være ideelle, og ikke dinosaurer eller influenzavirus?


Svar fra Hvid kanin[guru]
"Er der generelt tilstrækkelige mennesker her, der i det mindste er lidt i stand til at ræsonnere?"
Sagen er den, at mennesker, der er i stand til at ræsonnere, svarer dig og ikke til at tømme og læse analfabeter, som du tilsyneladende ud fra din naivitet anser for at være kloge ...
Hvad er "perfekt"?
Hvad betyder det, at mennesker (ikke en individuel person - men mennesker!) Ikke er ideelle?
Hvad får dig til at tro, at fysikkens love (?!) Er ideelle?


Der er ingen ideelle mennesker, der er mennesker, der skjuler deres fejl. (Mikhail Shchetinin)

Idealet er en ledestjerne. Uden den er der ingen fast retning, og der er ingen retning - der er intet liv. (Lev Nikolaevich Tolstoy)

Enhver person, stor eller lille, er en digter, hvis han ser et ideal på grund af sine handlinger. (Henrik Ibsen)

Man skal ikke tro, at kun en, der er upåklageligt ren og stærkt moralsk, bidrager til dyrkning. Alle store ting danner en person. (Johann Wolfgang Goethe)

Sandsynligvis den mest tragiske af ufuldkommenheder er menneskelig ufuldkommenhed. (Evgeny Mikhailovich Bogat)

Folk forbedrer sig sjældent, medmindre de har et andet forbillede end dem selv. (Oliver Goldsmith)

En person er aldrig så tæt på perfektion, som når man udfylder en ansøgningsskema. ()

Synd er ham, der lever uden et ideal! (Ivan Sergeevich Turgenev)

Gode ​​venner, gode bøger og en sovende samvittighed er det ideelle liv. (Mark Twain (Samuel Lenghorn Clemens))

Høj dig ikke op ved at ydmyge andre. Det er ubrugeligt. Dit niveau vil stadig vise sig på det mest upassende tidspunkt for dig. Bedre forbedre. ()

En væsentlig del af vores ekspertise er at lægge mærke til vores ufuldkommenheder. (François Lamotte-Levays)

Hold ikke for hårdt fast på dine mangler under påskud af, at perfektion ikke er af denne verden. (Jules Renard)

Ydmygelse er i virkeligheden ikke andet end en sammenligning af ens personlige værdighed med moralsk perfektion. (Immanuel Kant)

Idealet er en måde at brokke sig på. (Paul Valerie)

Perfektion er bare lidt kedelig. Dette er virkelig livets ironi: Det, vi alle stræber efter, er bedre, når det ikke er fuldt ud opnået. (William Somerset Maugham)

Magt og overskud, pragt og herlighed: den, der ikke rører ved dem, er virkelig ren. Men den, der rører, og ikke har snavs på sig selv, er dobbelt ren. Meget viden og snedighed, skarphed og dømmekraft: den, der fratages dem, er virkelig ophøjet. Men den, der er udstyret med dem og ikke bruger, er dobbelt ophøjet. (Hong Zicheng)

Der er lige så få ideelle kvinder som ideelle mænd, men du møder dem oftere. (Hildegard Knef)

Med en, der benægter idealet, kan det let ske, at han tager det vulgære for det smukke. (Johann Wolfgang Goethe)

Vores ideal er ikke en kastreret, berøvet kropslighed, abstrakt væsen, vores ideal, det er en integreret, ægte, alsidig, perfekt, uddannet person. (Ludwig Andreas Feuerbach)

Idealet er i dig selv. Hindringerne for at opnå det er i dig. Din position er det materiale, hvorfra du skal realisere dette ideal. (Thomas Carlyle)

Intet er så perfekt, at det er fri for alle bebrejdelser. (Æsop)

Selvom du kun vil være dit ideal, bliver du nødt til at tvinge hele verden til at gøre det. (Friedrich Nietzsche)

Kun bevidstheden om fælles opgaver og ultimative idealer gør en person vedholdende og konsekvent. (Semyon Ludvigovich Frank)

En perfekt mand søger alt i sig selv, en ubetydelig hos andre. (Confucius (Kun-Tzu))

Mit øje ser andre menneskers idealer, og dette syn glæder mig ofte; men I, nærsynede, tror, ​​at det er mine idealer. (Friedrich Nietzsche)

Anstrengelse er en nødvendig betingelse for moralsk forbedring. (Lev Nikolaevich Tolstoy)