Näin voit tehdä pilviinfrastruktuuristasi vakaan, turvallisen ja skaalautuvan.

Startup DevOps on vaikea

Käynnistyksen yhteydessä on huolehdittava paljon asioita. Markkinointi, tuotekehitys, tiimisi pitäminen yhdessä. Kaikella on taipumus ottaa käyttöön "minimi elinkelpoinen" malli saada vähimmäisarvo ylös, jotta et kaatu ja polta.

Yrityksen pilviarkkitehtina tiedän ensin, kuinka paljon työtä voidaan tehdä DevOps-kentällä. Startup-perustajana tiedän myös, kuinka vähän aikaa sinun täytyy viettää asioihin - se on enemmän kuin sinun täytyy viettää aikaa kaikkiin asioihin kerralla.

Pilviinfrastruktuurilla on valitettavasti myös taipumus noudattaa tätä sääntöä, ja kaikilla alan parhailla käytännöillä on taipumus noudattaa malleja, jotka vaativat paljon aikaa vieviä investointeja, joita aloittavilla yrityksillä ei varmasti ole.

Toivon antavan tämän oppaan avulla yleiskuvan siitä, miltä "vähimmäiskykyinen pilviinfrastruktuuri" voi näyttää, keskittyen vakauteen, turvallisuuteen ja skaalautuvuuteen.

Vakaus

Kun tarkastellaan pilviinfrastruktuurisi vakautta, on olemassa joitain avainkohtia, joihin on kiinnitettävä huomiota kehitettäessä minimaalisesti kannattavaa pilviinfrastruktuuria. Palaaminen katastrofaaliselta epäonnistumiselta, automaattinen uudelleenkäynnistys ja varmistaminen, että käytettävissä on riittävästi resursseja. Jos keskityt näihin kolmeen asiaan, sinun pitäisi olla melko hyvällä paikalla käytettävyyden suhteen.

Palauttaminen katastrofaaliselta epäonnistumiselta (automaattiset varmuuskopiot)

Tiedät pahemman tapauksen - mursasit palvelimen ja levyn. Vähimmäiskelpoinen ratkaisu tähän on suunniteltujen, automatisoitujen varmuuskopioiden ottaminen, jotta vältetään tietojen katoaminen.

Pilvipalveluntarjoajastasi riippuen on olemassa muutamia eri vaihtoehtoja. Snapshotting -levyjen käyttö on yleensä yksinkertaisin tapa toteuttaa mahdollisimman vähäinen varmuuskopiointiprosessi, mutta edistyneempiin (ja vakaampiin) menetelmiin kuuluvat tietokantakohtaiset varmuuskopiot (tietokannan tyhjentäminen) ja hajautetut järjestelmät.

  • AWS
    Jos käytät Amazonia, suosittelen CloudWatchin käyttöä. Sen avulla voit luoda ajoitettuja töitä (kuten automaattisia otoksia) - Katso tämä opas
  • GCP
    Google sallii sinun myös ajoittaa tilannekuvia - katso tämä opas
  • Cloud Agnostic
    Etkö halua lukita varmuuskopiointiprosessiasi pilvipalveluntarjoajallesi? Tärkeimmät tietosi ovat tietokanta ja mahdolliset mahdolliset lataukset. Tietokantaa varten sinun pitäisi etsiä kirjoittaa skripti, joka tyhjentää tietokannan määräajoin ja lähettää tiedot suojattuun sijaintiin (yksityinen s3-ämpäri, hajautettu tiedostojärjestelmä jne.). Tämä on alttiimpi virheille kuin alustakohtainen menetelmä, kuitenkin , joten ole varovainen.

Tarkista varmuuskopioinnin palautusmenetelmä tai riski siitä, mitä tapahtui GitLabille, missä kaikki 5 heidän varmuuskopiointimenetelmänsä epäonnistuivat, koska he eivät koskaan testanneet palautusta.

Automaattinen palvelun uudelleenkäynnistys, jos palvelin käynnistetään uudelleen

Automaattisessa uudelleenkäynnistyksessä on kaksi osaa. Yksi, käynnistyykö sovellus uudelleen, kun sovelluksesi kaatuu? Ja kaksi, kun palvelimesi käynnistyy uudelleen, käynnistyykö sovelluksesi automaattisesti?

Crontab —Crontab on hyödyllinen työkalu, jonka avulla voit ajoittaa työt helposti. Ehkä yksinkertaisin tapa pinojen automaattiseen käynnistykseen on luoda crontab-työ, joka suoritetaan uudelleenkäynnistyksen yhteydessä - katso tämä opas kuinka tehdä se.

/etc/init.d - Useimmat järjestelmät tukevat init.d-skriptejä. Init.d: ​​llä voit määrittää komentosarjoja, jotka voidaan käynnistää käynnistyksen yhteydessä, ja tukee myös pysäytys-, käynnistys- ja tilakomentoja (esim. Service start myscript) antaaksesi sinulle entistä paremman hallinnan sovelluksistasi. Se on vähän monimutkaisempi kuin crontab, mutta se tarjoaa sinulle enemmän ominaisuuksia - Aseta init.d-skripti tämän viestin avulla.

Jos olet kiinnostunut näiden menetelmien eroista, tutustu tähän pinovaihtovaihtoviestiin.

Automaattinen palvelun uudelleenkäynnistys, jos sovellus kaatuu

Sovellukset eivät ole aina vakaita, ja ne voivat kaatua vaikeina aikoina. Hyvä tapa ylläpitää vakautta on työkalu, joka voi käynnistyä automaattisesti uudelleen.

  • NodeJS - Ikuisesti tai PM2
  • Yleistä - Tarkista tämä viesti kuinka prosessit voidaan käynnistää uudelleen bash-komentosarjoilla

Varmista aina, että resursseja on riittävästi

Yksi yleisimmistä syistä palvelimen seisokkeihin on palvelimien resurssien loppuminen. Minulla on ollut SQL-palvelimien kuolemaa levytilan loppumisesta ja tuotanto-sovellusten kuolemasta muistin loppumisesta. Resurssien seurannan asettaminen on hyvä tapa vähentää tätä riskiä.

  • AWS - CloudWatch on hyvä seurantatyökalu. Voit määrittää tiettyjen tapahtumien sähköpostihälytykset.
  • GCP - Stackdriver-valvonta tarjoaa samanlaisia ​​toimintoja, ja se integroituu myös Slack-kaltaisten viestijärjestelmien kanssa.
  • Cloud Agnostic - Crontab on jälleen hyvä tällaiseen tehtävään, mutta sinun on kirjoitettava komentosarja, joka tarkistaa järjestelmän resurssit ja lähettää sähköpostia, kun ne saavuttavat kynnyksen.

Muista dokumentoida automaattinen käynnistystapa ja käynnistysohjelmat. Pidä koodi versionhallinnassa, muuten vaarassa on, että mittakaava tulee unohdetun mysteerikoodin takia .

Turvallisuus

Turvallisuus on valitettavasti unohdettu, kun kyse on MVP-filosofiasta. Ihmiset eivät vain näe saavutetun arvon tarvittavasta aikainvestoinnista. Tämä on vaarallisen uhkapelaamisen muoto, koska tietoturvahousut voivat aiheuttaa vakavaa tietojen, asiakkaiden luottamuksen ja ajan menettämistä. Tässä on joitain perustoimenpiteitä, jotka voit tehdä aloittaessasi turvallisuuden ajattelutavan.

SSL

Nykyään SSL on pohjimmiltaan vaatimus modernille SaaS-sovellukselle, jossa monet käyttäjät kieltäytyvät käyttämästä sovelluksia ilman https-tukea. Työkalut, kuten Let’s Encrypt, tekevät sertifikaattien hankkimisesta helppoa ja ilmaista.

Palvelimen suojaus

Yksi turvallisuuden kannalta tärkeimmistä asioista on palvelimien hallitseminen. Tässä on muutama perusvihje, jotka sinun tulisi pitää mielessä.

  • Tietokantojen ei pitäisi olla avoimen Internetin käytettävissä.
  • Pidä sovellukset ja käyttöjärjestelmä ajan tasalla. Usein on olemassa tietoturvapäivityksiä, jotka suojaavat palvelintasi uusilta haavoittuvuuksilta.
  • Sulje kaikki portit paitsi välttämättömät portit.
  • Älä käytä käyttäjänimeä / salasanoja - avainten käyttö on paljon turvallisempaa.
  • Älä anna ihmisille juuriavainta, kun he tarvitsevat pääsyä palvelimellesi. Tee uusia tilejä ja pyydä heitä antamaan sinulle julkinen avaimesi.

Salainen hallinta

API-avaimet, käyttöoikeustiedot, kokoonpanot ja kaikki arkaluonteiset tiedot on hallittava. Olen aina epäröivä sijoittaessani tällaista tietoa pilveen, ei vain siksi, etten tiedä, mitä pilvipalveluntarjoaja voi katsoa, ​​vaan myös siksi, että jos he saavat tilini, kaikki salaisuuteni paljastuvat.

  • Pidä niin monta salaisuutta paikallisesti kuin mahdollista.
  • Älä sulje kovakoodisalaisuuksia sovellukseesi - luo asetustiedostoja, jotka voit tallentaa sovelluskoodin ulkopuolelle.
  • Älä säilytä salaisuuksia julkisessa Github -repo-tilassa (ole varovainen pilvien suhteen yleensä).
  • Vältä selkeää tekstiä, kun tallennat käyttäjän salasanoja ja omia salaisuuksia

Skaalautuvuus

Useimmissa tapauksissa, kun kyse on skaalautuvuudesta, et tarvitse sitä (aloittaessasi) .

Jos sinulla on aikaa, tahtoa ja taitoja (tai rahaa), jonkin verran ponnisteluja skaalautuvuuteen voi antaa sinulle tulevaisuuden etuja. Jos ei, suosittelen sivuuttamatta sen ja keskittymällä kahteen edelliseen kohtaan.

Keskity tuotteen toimittamiseen viidelle ensimmäiselle asiakkaalle, ei ensimmäiselle tuhannelle. Paras mitä voit tehdä skaalautuvan infrastruktuurin rakentamisessa, on ajatella suunnittelupäälliköitä sovelluksen rakentamisen aikana, joten sen tekeminen ei ole liian paljon työtä, kun on vihdoin aika muuttaa. Minun pitäisi tietää - olen pudonnut yli-insinöörin ansaan monta, monta kertaa.

konttikuljetus

Työkalut, kuten Docker ja Kubernetes, ovat loistavat skaalaamiseen

Helppo voitto skaalaamisessa on sovelluksen säilytys. Katso Dockerilta hyvä opas. Tässä muutamia vinkkejä:

  • Salli sovelluksesi konfigurointi ympäristömuuttujien avulla. Asiat, kuten tietokantatiedot ja alkuperäinen järjestelmänvalvojan käyttäjänimi / salasana, kulkevat paljon, kun on kyse CI / CD-putkilinjan rakentamisesta ja sovelluksen käyttöönoton automatisoinnista.
  • Pidä säilytysastia niin paljon kuin mahdollista. Tämä mahdollistaa valtiottomien käyttöönottojen Kubernetesin kaltaisten työkalujen avulla.
  • Asenna moduulit osana rakennusprosessia vähentääksesi riippuvuuksia ja kuvan kokoa.

Pidä palvelimesi kokoonpanot hyvin dokumentoituina

Tallenna kaikki versionhallintaan: kokoonpanot, skriptit ja menettelyt palvelimien valmistamiseksi. Tämä säästää, kun kyse on mittakaavasta. Minun on pitänyt käsitellä skaalaamissovelluksia, jotka edellyttävät palvelimia, jotka on määritetty erittäin tietyllä tavalla, ja jos asiakirjat puuttuvat, olet mukana helpon ajan.

johtopäätös

Pilviinfrastruktuurin seisomiseen ja ylläpitämiseen liittyy paljon työtä. Startup-yrityksillä on vaikeinta, koska heillä ei ole aikaa, ja usein heidän taitojaan puuttuu DevOps-ohjelmasta. Mitä voit tehdä, on keskittyä olennaiseen. Suojaus, vakaus ja jos sinulla on aikaa, Skaalautuvuus.

ServiceBot auttaa sinua mittaamaan SaaS-järjestelmääsi automatisoimalla käyttöönottoja (CI / CD), hallitsemalla tilauksiasi ja poistamalla tavalliset kitkakohdat sinun ja asiakkaiden välillä. Tarkista se