Siit saate teada saada, kuidas muuta pilveinfrastruktuur stabiilseks, turvaliseks ja skaleeritavaks.

Startup DevOps on raske

Startupina on murettekitav palju asju. Turundus, tootearendus, oma meeskonna koos hoidmine. Kõik kipub võtma minimaalse elujõulisuse, mis tähendab, et alammäär tõuseb üles, nii et te ei peaks alla kukkuma ega põlema.

Ettevõtte pilvearhitektina tean esmajärjekorras, kui palju on DevOpsi valdkonnas ära teha. Startupi asutajana tean ka seda, kui vähe aega peate asjadele kulutama - see on pigem selline, et peate aega kulutama kõikidele asjadele korraga.

Pilveinfrastruktuur kipub kahjuks ka seda reeglit järgima ja kõik selle valdkonna parimad tavad kipuvad järgima mustreid, mis nõuavad palju ajalisi investeeringuid, mida idufirmadel kindlasti pole.

Selle juhendi abil loodan anda teile ülevaate sellest, milline võib välja näha “minimaalselt elujõuline pilveinfrastruktuur”, keskendudes stabiilsusele, turvalisusele ja mastaapsusele.

Stabiilsus

Pilveinfrastruktuuri stabiilsust vaadates on mõned põhipunktid, millele minimaalse elujõulise pilveinfrastruktuuri arendamisel tähelepanu pöörata. Katastroofiliste tõrgete eest taastamine, automaatne taaskäivitamine ja piisavalt ressursside olemasolu tagamine. Kui keskendute neile kolmele asjale, peaksite oma tööaja osas olema üsna heas kohas.

Katastroofiliste tõrgete eest taastamine (automaatne varundamine)

Teate halvemat stsenaariumi - brikerisite oma serveri ja ketta. Minimaalne elujõuline lahendus selleks on kavandatud automatiseeritud varukoopiate tegemine, et vältida andmete kadumist.

Sõltuvalt pilveteenuse pakkujast on teil mõned erinevad võimalused. Kiirketaste võtmine on üldiselt kõige lihtsam viis minimaalse elujõulisusega varundusprotsesside tegemiseks, kuid keerukamad (ja stabiilsemad) meetodid hõlmavad andmebaasispetsiifilisi varukoopiaid (andmebaasi tühjendamine) ja hajutatud süsteeme.

  • AWS
    Kui kasutate Amazoni, soovitaksin kasutada CloudWatchi. See võimaldab teil luua ajastatud töid (nt automaatsed hetktõmmised) - vaadake seda juhendit
  • GCP
    Google lubab teil ka hetktõmmiseid ajastada - vaadake seda juhendit
  • Pilveagnostika
    Kas te ei soovi varundusprotsessi lukustada oma pilveteenuse pakkuja juures? Teie kõige olulisemad andmed on andmebaas ja võimalikud üleslaadimised. Andmebaasi jaoks peaksite otsima skripti kirjutamist, mis perioodiliselt kustutab andmebaasi ja saadab andmed turvalisse kohta (privaatne s3-kopp, hajutatud failisüsteem jne). See on tõrkele tõenäolisem kui platvormipõhine meetod, kuid siiski , nii et ole ettevaatlik.

Kontrollige kindlasti varukoopia taastamise meetodit või riskige GitLabiga juhtunut, kus kõik 5 nende varundusmeetodit ebaõnnestusid, kuna nad ei kontrollinud kunagi taastamist.

Automaatne teenuse taaskäivitamine serveri taaskäivituse korral

Automaatsel taaskäivitamisel on kaks osa. Üks, kas teie rakendus jookseb uuesti alla? Ja kaks, kui teie server taaskäivitub, käivitub teie rakendus automaatselt?

Crontab - Crontab on kasulik tööriist, mis võimaldab teil töid hõlpsalt ajastada. Võib-olla on lihtsaim viis virna automaatseks käivitamiseks luua crontabi töö, mis käivitatakse uuesti taaskäivitades - selle kohta lugege seda juhendit.

/etc/init.d - Enamik süsteeme toetab init.d-skripte. Investi.d abil saate määratleda skriptid, mida saab käivitada alglaadimisel ning mis toetavad ka stopp-, start- ja olekukäske (nt teenuse start myscript), et saaksite oma rakenduste üle rohkem kontrolli saada. See on natuke keerulisem kui crontab, kuid annab teile rohkem funktsioone - init.d-skripti seadistamiseks vaadake seda postitust.

Kui olete huvitatud nende meetodite erinevustest, vaadake seda pinu vahetuspostitust.

Automaatne teenuse taaskäivitamine rakenduse krahhi korral

Rakendused pole alati stabiilsed ja võivad ebamugavatel aegadel kokku kukkuda. Stabiilsuse säilitamiseks on hea vahend, mis saab automaatselt taaskäivituda.

  • NodeJS - igavesti või PM2
  • Üldine - kontrollige seda postitust protsesside taaskäivitamise kohta bash-skriptide abil

Veenduge alati, et ressursse oleks piisavalt

Serverite seisaku üks levinumaid põhjuseid on serverite ressursside otsa saamine. Mul on olnud SQL-serverite kõvaketta tühjenemine ja tootmisrakenduste mälu tühjenemine. Ressursside seire seadistamine on hea viis selle riski vähendamiseks.

  • AWS - CloudWatch on hea jälgimisvahend. Saate seadistada konkreetsete sündmuste e-posti teateid.
  • GCP - Stackdriveri seire pakub sarnast funktsionaalsust ja integreerub ka selliste sõnumsidesüsteemidega nagu Slack.
  • Cloud Agnostic - Crontab on jälle selline tüüpi ülesannete jaoks hea, kuid peate kirjutama skripti, mis kontrollib süsteemiressursse ja saadab meilisõnumeid, kui nad teie läveni jõuavad.

Täpselt dokumenteerige automaatne käivitusviis ja alglaadimisskriptid. Hoidke koodi versioonikontrollis, vastasel juhul võite unustada müsteeriumikoodi tõttu mastaapse koodi tõttu probleeme tekkida, kui tegemist on mastaabiga.

Turvalisus

Turvalisus on MVP filosoofia osas kahjuks tähelepanuta jäetud. Inimesed lihtsalt ei näe vajaliku investeeringu jaoks saadavat väärtust. See on ohtlike hasartmängude vorm, kuna turvapüksid võivad tõsiselt kaotada andmeid, klientide usaldust ja aega. Siin on mõned põhiasjad, mida saate turvalisuse mõtteviisiga alustamiseks teha.

SSL

Tänapäeval on SSL põhimõtteliselt nõue kaasaegsele SaaS-i rakendusele, kus paljud kasutajad keelduvad rakendusi kasutamast ilma https-toeta. Selliste tööriistade nagu Let’s Encrypt abil on sertifikaatide saamine lihtne ja tasuta.

Serveri turvalisus

Üks turvalisuse seisukohast kõige olulisemaid asju on serverite korralik haldamine. Siin on mõned põhinipid, mida peaksite meeles pidama.

  • Andmebaasidele ei tohiks olla avatud Internetti juurde pääseda.
  • Hoidke rakendused ja operatsioonisüsteem ajakohasena. Sageli on turvavärskendusi, mis kaitsevad teie serverit uute haavatavuste eest.
  • Sulgege kõik pordid, välja arvatud need, mis on hädavajalikud.
  • Ärge kasutage kasutajanime / paroole - võtmete kasutamine on palju turvalisem.
  • Ärge andke inimestele juurvõtit, kui nad vajavad juurdepääsu teie serverile. Tehke uusi kontosid ja laske neil anda teile oma avalik võti.

Salajane juhtimine

API võtmeid, mandaate, konfiguratsioone ja kõiki tundlikke andmeid tuleb hallata. Selliseid andmeid pilve paigutades olen alati kõhklev, mitte ainult seetõttu, et ma ei tea, mida pilveteenuse pakkuja vaadata saab, vaid ka seetõttu, et kui nad saavad minu konto, paljastuvad kõik minu saladused.

  • Hoidke võimalikult palju saladusi kohalikul tasandil.
  • Ärge sisestage rakendusse kõvaketta saladusi - looge konfiguratsioonifailid, mida saate väljaspool rakenduskoodi salvestada.
  • Ärge talletage saladusi avalikus Githubi repos (olge üldiselt pilve suhtes ettevaatlik).
  • Kasutajate paroolide ja enda saladuste hoidmisel vältige tavalist teksti

Skaleeritavus

Enamikul juhtudel, kui tegemist on mastaapsusega, pole teil seda vaja (alustades) .

Kui teil on aega, tahtmist ja oskusi (või raha), võiksite mõnevõrra pingutada mastaapsuse suurendamisel tulevikus kasu saada. Kui ei, siis soovitaksin seda mitte arvestada ja keskenduda kahele eelmisele punktile.

Keskenduge toote tarnimisele oma esimesele 5 kliendile, mitte esimesele 1000-le. Parim, mida saate skaleeritava infrastruktuuri ehitamisel teha, on mõelda rakenduse ehitamise ajal disainiprintsiibidele, nii et harjutamiseks on liiga palju tööd, kui on lõpuks aeg mastaapida. Ma peaksin teadma - olen langenud üle-insenerilõksu palju-mitu korda.

Konteineriseerimine

Tööriistad, nagu Docker ja Kubernetes, sobivad suurepäraselt skaleerimiseks

Suuruse suurendamine on teie rakenduse koondamine. Hea juhendi leiate Dockerilt. Siin on mõned näpunäited:

  • Luba oma rakenduse konfigureerimine keskkonnamuutujate kaudu. CI / CD torustiku ehitamisel ja rakenduse juurutamise automatiseerimisel lähevad sellised asjad nagu andmebaasi teave ja algne administraatori kasutajanimi / parool kaugele.
  • Hoidke konteinerist võimalikult palju olekuid. See võimaldab kodakondsuseta juurutamist selliste tööriistade kaudu nagu Kubernetes.
  • Installige moodulid osana ehituse protsessist, et vähendada sõltuvusi ja pildi suurust.

Hoidke oma serverite konfiguratsioonid hästi dokumenteeritud

Salvestage kõik versioonikontrollis: konfiguratsioonid, skriptid ja protseduurid serverite ettevalmistamiseks. See säästab teid, kui tegemist on mastaapimisega. Olen pidanud tegelema selliste rakenduste laiendamisega, mis nõuavad väga spetsiifiliselt konfigureeritud servereid. Kui teil puuduvad dokumendid, siis on teil selleks aega põrgu.

Järeldus

Pilveinfrastruktuuri püstitamise ja hooldamisega on seotud palju tööd. Alustavatel ettevõtetel on see kõige raskem, kuna neil pole aega ja sageli puuduvad nende oskused DevOpsil. Mida saate teha, on keskenduda olulisele. Turvalisus, stabiilsus ja kui teil on aega, siis ka mastaapsus.

ServiceBot aitab teil SaaS-i skaleerida, automatiseerides juurutamist (CI / CD), hallates tellimusi ja eemaldades teie ja klientide vahel tavalised hõõrdepunktid. Vaata järgi