Qanday qilib men Heroku-ga almashtirishni qurdim va platformamdagi xarajatlarni 4X ga kamaytirdim

Agar siz to'g'ridan-to'g'ri biznes bilan shug'ullanishni istasangiz, "U nima qiladi" bo'limiga o'tishingiz mumkin.

2019 UPDATE: CaptainDuckDuck endi rebrendlangan va CapRover sifatida tarqatilgan. Https://github.com/caprover/caprover-ga qarang

Og'riq

Bir necha yil oldin men server tillari - asosan Node JS bilan o'ynashni boshladim. Bir necha kun davom etgan kurashdan keyin men o'zimning xostimda "Hello World" dasturini o'rnatishga muvaffaq bo'ldim. Men keyingi bosqichga o'tishga va loyihalarimdan birini Internetga http://www.some-awesome-web-app.com kabi ochiq URL manzilidan kirish uchun internetga joylashtirishga qaror qilgunimcha juda qiziqarli bo'ldi.

Shu payt men veb-ilovamni o'rnatishni o'rganishim kerak bo'lgan yangi texnologiyalar to'plami borligini angladim. Men qanday qilib vositalarni va tarqatish quvurlarini, nginx marshrutizatsiyasi va SSL qanday ishlashini va boshqa ko'p narsalarni bilishingiz kerak edi ...

Aytishga hojat yo'q, joylashtirish juda og'riqli tajriba edi. Men kodni serverga joylashtirish, qaramlikni o'rnatish, o'rnatish va serverni saqlash uchun kodlash uchun sarflagan vaqtning deyarli barchasini sarflashim kerakligini tushundim. Bu shunchaki ahmoqlik! Men xuddi shu ishlarni qayta-qayta bajarishga vaqt sarflashim kerak edi.

Vaqtimni HTTPS-ni sozlashga ko'p kun va kun sarflamasdan, foydalanuvchilar foydalanadigan mahsulot / xizmatni kodlashda ko'proq vaqt sarflaganim ma'qul. Axir, mening HTTPS Internetdagi boshqa minglab HTTPS veb-saytlardan farq qilmaydi. Oddiyroq yo'l bo'lishi kerak edi.

Vaqtinchalik Najotkor

Ushbu og'riqli tajriba men Heroku-ni o'rnatishga tayyor platformani uchratganimda yakunlandi. Men o'zimga “Ajoyib! Bu tarqatish platformasi shunday bo'lishi kerak! "Men ularga oson interfeys ortida qanday murakkabliklarni qanday qilib abstrakt qilishni yaxshi ko'rardim. Siz shunchaki chertish orqali dasturni yaratishingiz va uni bosishingiz mumkin. U darhol ochiq URL manzilida mavjud bo'ladi. 30 daqiqalik harakatsizlikdan keyin uxlashning oz xarajati bilan bepul foydalanish mumkin. Ishlar yaxshi bo'lmasdi!

Hammasi yaxshi edi. Men uzluksiz 24 soat ishlashni talab qiladigan ba'zi loyihalar bilan shug'ullanmagunimcha (o'quvchi bot). Men pullik xizmatga yangilashim kerak edi. Bu juda yomon emas edi, oyiga atigi $ 7. Men ko'proq va ko'proq ilovalarni o'rnatishni boshlaganimdan keyin narsalar yomonlasha boshladi. Ba'zilari shaxsiy loyihalar edi, ba'zilari esa 512 MB (bepul chegara) dan yuqori yoki 24 soat uzluksiz ishlashni talab qiladigan biznes bilan bog'liq edi.

Ko'p vaqt o'tmay, men Herokuga 100 dollar to'layotganimni angladim. Bu shunchaki mantiqiy emas. 24 soat ishlashni talab qiladigan ba'zi mening o'quvchi botlarim faqat 128MB RAMni iste'mol qiladi. Shunday bo'lsa-da, men foydalanilmagan operativ xotirani ham to'lashim kerak edi. Ilovalar ichida RAM / CPU-ni baham ko'rolmadim. Operativ xotira tezligi yuqori bo'lgan ilovalar bilan yomonlashadi. Agar menda 1 Gb tezkor xotiraga muhtoj bo'lgan ilova bo'lsa - oyiga kamida $ 50 to'lashim kerak.

Yaxshi bitimlarni topish umidida men AWS, Digital Ocean, Vultr va boshqa server-provayderlarni ko'rishni boshladim. Men ko'rgan narxlar shunchaki xayolimni buzdi. Masalan, Raqamli Okeanda men 2 GB operativ xotiraga ega serverni oyiga 20 dollarga olishim mumkin edi. Menga 1GB operativ xotiramning ikkita nusxasini 100 dollar o'rniga 20 dollarga sotib olishim mumkin edi. Xarajatlarimni 4 baravar kamaytira olaman!

Bu arzonroq narxga erishish mumkin. Agar siz bu nima ekanligini bilmasangiz, birinchi bandni, og'riqni o'qimagan edingiz. Ushbu yalangoyoq serverlar provayderlaridan foydalanish bilan bog'liq muammo (Heroku kabi xizmatlardan farqli o'laroq) men Heroku men uchun qilgan barcha ishlarni bajarishim kerak.

Abadiy Qutqaruvchini qidirishda

Men o'zim xohlagan narsani bilardim: menga yalang'och serverni (masalan, AWS yoki Digital Ocean) Heroku platformasiga aylantiradigan narsa kerak edi. Men ko'proq tajriba orttirganim sababli, Githubda o'tirgan Herokuga o'xshash ochiq manbali manbalar bo'lishi kerakligini bilardim. Albatta, men haq edim. U erda faqat bitta emas, balki bir tonna.

Ammo har biri bilan bir yoki ikki soat vaqt o'tkazgandan so'ng, men ularning hech biri haqiqatan ham Heroku-oson echim qidirayotganimni angladim. Ba'zilar juda sodda va shunchaki ingichka interfeys qatlamiga ega edilar, ammo hujjatlari deyarli yo'q. Ba'zilari juda ko'p ilg'or xususiyatlarga ega bo'lib, ular foydalanmaydilar. Va bu xususiyatlarga ega bo'lish oddiy o'rnatish jarayoni va texnik xizmat ko'rsatishni anglatadi. Men oson, ammo ijro etuvchi echimni qidirardim.

Abadiy Qutqaruvchini qurish

Heroku uchun yaxshi zaxira topishga omadim yo'qligi sababli, uni qurishga qaror qildim. Yaxshiyamki, menga kerak bo'lgan barcha vositalar bepul taqdim etildi - marshrutlash uchun so'rovlar uchun nginx HTTP veb-serveridan, ilovalarni konteynerlash uchun Docker va hokazo.

Bir necha oylik rejalashtirish, loyihalash, qurish, yo'q qilish va noldan boshlab, loyiha tayyor edi.

Men CaptainDuckDuck-ning dastlabki versiyasini 2017 yil oktyabr oyida chiqardim. Bu bor-yo'g'i ikki oy bo'lib o'tdi va bir necha ijobiy natijalar bo'ldi. Asosan veb-ilovalarni o'rnatish uchun mo'ljallangan birinchi nashrdan keyin hamjamiyat ko'proq narsani talab qildi. Ular asosan ma'lumotlar bazalarini va bir marta bosish uchun ilovalarni joylashtirish qobiliyatini xohlashdi. Faqat shu haftada men ushbu talab qilingan barcha xususiyatlar bilan 0.2.1 versiyasini chiqazdim :)

U nima qiladi

Mening maqsadim odatiy veb-dastur ishlab chiqaruvchisiga Heroku-ga o'xshash server nusxasini 10 daqiqadan kamroq vaqt ichida yaratishga imkon berish edi. Men buni qilganimni aytishdan xursandman!

Siz shunchaki bitta satrdan nusxa ko'chiring va serveringizga qo'yasiz va sizda o'z Heroku bo'ladi.

  • Siz oddiy veb-ilovalarni (nodejs, php va boshqalar) CLI tarqatish buyrug'i bilan o'rnatishingiz mumkin.
  • Siz "HTTPS-ni yoqish" tugmachasini bosish orqali HTTPS-ni yoqishingiz mumkin.
  • WordPress, MongoDB, MySQL, Parse va boshqalar kabi bir marta bosish orqali ilovalar / ma'lumotlar bazalarini tanlashingiz mumkin.
  • Veb-UI-da faqat IP manzillari va server ma'lumotlarini kiritish orqali serverlar klasterini yaratish uchun bir nechta serverlarni ulashingiz mumkin.

CaptainDuckDuck NodeJS-da yozilgan. Ammo bu sizning oxirgi foydalanuvchilaringiz shug'ullanadigan NodeJS emas. Kapitan kaput ostida ishlatadigan asosiy motorlar nginx va dokerdir. Ikkalasi ham eng ishonchli, ishlab chiqarishga tayyor vositalar qatoriga kiradi. CaptainDuckDuck-ning NodeJS qismi faqat dasturga serverga joylashtirilganda ishlatiladi. Nazariy jihatdan, siz o'rnatganingizdan so'ng serveringizda CaptainDuckDuck jarayonini yo'q qilishingiz mumkin va foydalanuvchilar hech qanday o'zgarishlarni sezmaydilar.

Qo'llanma

Agar siz to'liq qo'llanmani xohlasangiz, men video darsini va Github sahifasini o'qishni maslahat beraman. Video birinchi versiyada qilingan, shuning uchun unda ma'lumotlar bazasi va bitta bosish uchun ilovalar yo'q. Ammo bu juda yaxshi boshlang'ich joy.