Kuidas ma ehitasin Herokule asendaja ja vähendasin platvormi kulusid 4X võrra

Saate jätka Mida ta teeb jaotist, kui soovite, et saada otse äri.

2019 UPDATE : CaptainDuckDuck on nüüd kaubamärgi all ja levitatud kui CapRover. Vaadake lehte //github.com/caprover/caprover

Valu

Paar aastat tagasi hakkasin mängima serveripoolsete keeltega - enamasti Node JS-iga. Pärast mõnepäevast võitlust suutsin oma rakenduse Hello Worldi juurutada localhost. See oli lõbus, kuni otsustasin astuda järgmise sammu ja juurutada ühe oma projektidest internetti, et inimesed saaksid sellele juurde pääseda näiteks avalikult URL-ilt //www.some-awesome-web-app.com.

Sel hetkel sain aru, et on olemas täiesti uus tehnoloogiate komplekt, mille pean õppima oma veebirakenduse juurutamiseks. Mul oli vaja teada, kuidas ehitada tööriistu ja juurutamistorustikke, kuidas toimivad nginxi marsruutimine ja SSL ning palju muud ...

Ütlematagi selge, et lähetamine oli valus kogemus. Mõistsin, et pean veetma peaaegu sama palju aega, kui kulutasin koodide sisestamisele serverisse koodi juurutamisele, sõltuvuste loomisele, sõltuvuste installimisele ja serveri hooldamisele. See on lihtsalt rumalus! Pidin aega veetma ikka ja jälle samade asjadega.

Pigem veedan oma aega toote / teenuse kodeerimisele, mida kasutajad kasutavad, mitte kulutades tunde ja päevi HTTPS-i seadistamisele. Lõppude lõpuks ei erine minu HTTPS teistest sadadest tuhandetest internetis asuvatest HTTPS-i veebisaitidest. Pidi olema lihtsam viis.

Ajutine Päästja

See valus kogemus sai otsa, kui sattusin rakenduste juurutamiseks valmis kasutamiseks mõeldud platvormile Heroku. Ütlesin endale “Suurepärane! See peab olema juurutusplatvorm! " Mulle meeldis, kuidas nad hõlbustasid lihtsa liidese taga kogu keerukust. Saate lihtsalt luua rakenduse lihtsa klõpsuga ja lükata seda. See muutub kohe kättesaadavaks avaliku URL-iga. Pärast 30-minutilist tegevusetust on see tasuta saadaval väikeste magamiskuludega. Asjad ei saaks paremad olla!

See kõik oli hea. Kuni osalesin projektides, mis vajasid pidevat 24-tunnist täitmist (lugejabott). Pidin üle minema tasulisele teenusele. See polnud liiga hull, ainult 7 dollarit kuus. Kuid asi hakkas hulluks minema pärast seda, kui hakkasin järjest rohkem rakendusi juurutama. Mõned olid isiklikud projektid ja mõned olid seotud ettevõtlusega, mille jaoks oli vaja kas üle 512 MB (tasuta limiidi) RAM-i või 24-tunnist pidevat kättesaadavust.

Ei läinud kaua aega, kuni sain aru, et maksan Herokule 100 dollarit +. Sel polnud lihtsalt mõtet. Mõned minu lugejarobotid, mis vajavad 24-tunnist kättesaadavust, tarbivad ainult 128 MB RAM-i. Siiski pidin maksma ka kasutamata RAM-i eest. Ma ei saanud RAM-i / protsessorit jagada rakenduste vahel. Suure RAM-i kasutamise rakendustega läheb see hullemaks. Kui mul on rakendus, mis vajab 1 GB RAM-i, pean maksma vähemalt 50 dollarit kuus.

Lootes leida paremaid pakkumisi, hakkasin vaatama AWS-i, Digital Ocean'i, Vultri ja teisi serveripakkujaid. Hinnakujundus, mida ma nägin, lihtsalt ajas mu meelt. Näiteks digitaalsel ookeanil võiksin saada 2 GB RAM-iga serveri hinnaga 20 dollarit kuus. Ma mahtusin sinna masinasse kaks oma 1 GB RAM-i eksemplari 100 dollari asemel 20 dollariga. Ma saaksin oma kulusid 4x kärpida !

Sellel odavamal hinnal on konks. Kui te ei tea, mis see on, siis te ei lugenud esimest lõiku "Valu" . Nende barebones-serveripakkujate kasutamise probleem (erinevalt sellistest teenustest nagu Heroku) seisneb selles, et ma pean tegema kogu töö, mida Heroku minu heaks tegi.

Igavest Päästjat otsides

Teadsin, mida tahan: vajasin midagi, mis muudaks barebone-serveri (näiteks AWS või Digital Ocean) Heroku-laadseks platvormiks. Kui sain rohkem kogemusi, teadsin, et kuskil Githubis istudes peab olema mingi avatud lähtekoodiga Herokuga samaväärne. Kindlasti oli mul õigus. Neid pole mitte ainult üks, vaid tonn.

Kuid veetnud mõlemaga tund või kaks, mõistsin, et ükski neist polnud tõeliselt Heroku jaoks lihtne lahendus, mida otsisin. Mõned olid ülipõhised ja neil oli lihtsalt õhuke liidese kiht, kus dokumente oli vähe või vähe. Mõni neist oli äärmiselt arenenud paljude funktsioonidega, mida ei kasutatud. Ja nende funktsioonide olemasolu tähendas lihtsalt keerulist seadistusprotsessi ja hooldust. Otsisin lihtsat, kuid siiski tulemuslikku lahendust.

Igavese Päästja ehitamine

Kuna mul polnud õnne leida Herokule head asendajat, otsustasin selle ehitada. Õnneks olid kõik vajalikud tööriistad tasuta saadaval - alates HTTP-veebiserverist nginx marsruutimise taotluste jaoks, kuni Dockerini rakenduste konteinerisse viimise ja nii edasi.

Mõne kuu pärast kavandamist, kujundamist, ehitamist, kustutamist ja nullist alustamist oli projekt valmis.

Avaldasin CaptainDuckDuck'i esialgse versiooni oktoobris 2017. See on olnud umbes kaks kuud ja positiivseid tagasisidet on olnud palju. Pärast esimest väljaandmist, mis oli mõeldud peamiselt veebirakenduste juurutamiseks, palus kogukond rohkem. Nad tahtsid peamiselt võimalust juurutada andmebaase ja ühe klõpsuga rakendusi. Just sel nädalal andsin välja versiooni 0.2.1 koos kõigi nende nõutud funktsioonidega :)

Mida see teeb

Minu eesmärk oli võimaldada tüüpilisel veebirakenduse arendajal luua Heroku-laadse serveri eksemplar vähem kui 10 minutiga. Mul on hea meel öelda, et ma tegin seda!

Kopeerige ja kleepige lihtsalt üks rida oma serverisse ja teil on oma Heroku.

  • Veebirakendusi (nodejs, php jne ...) saate juurutada lihtsa CLI juurutuskäskuga.
  • Saate lubada HTTPS-i, klõpsates lihtsalt nupul „Luba HTTPS”.
  • Saate valida ühe klõpsuga rakenduste / andmebaaside vahel, nagu WordPress, MongoDB, MySQL, Parse ja teised.
  • Serverite klastri loomiseks saate ühendada mitu serverit, lihtsalt sisestades veebiliidesesse serverite IP-aadressid ja mandaadid.

CaptainDuckDuck on kirjutatud NodeJS-is. Kuid teie lõppkasutajad ei tegele NodeJS-iga. Peamised mootorid, mida kapten kapoti all kasutab, on nginx ja docker. Mõlemad kuuluvad kõige usaldusväärsemate, tootmisvalmis tööriistade hulka. CaptainDuckDucki osa NodeJS kasutatakse ainult rakenduse serverisse juurutamisel. Teoreetiliselt võite pärast juurutamist oma serveris CaptainDuckDucki protsessi tappa ja kasutajad ei märka muudatusi.

Õpetus

Kui soovite täielikku juhendit, soovitan vaadata videoõpetust ja lugeda Githubi lehte. Video tehti esimese versiooniga, nii et sellel pole andmebaasi ja ühe klõpsuga rakendusi. Kuid see on hea lähtepunkt.