Год у стартапе. Як аптымізаваць выдаткі AWS пры запуску.

Воблачныя вылічэнні - гэта проста лепшы спосаб весці свой бізнес

Перш чым стварыць кампанію, я недаацаніў значэнне паслуг хмарных вылічэнняў для стартавай экасістэмы. AWS, GCE, Azure і Digital Ocean адыгралі важную ролю ў распаўсюджванні стартапаў. Доступ да амаль неабмежаваных рэсурсаў вырашае мноства тэхнічных праблем, таму вы можаце засяродзіцца на тым, што неабходна для росту вашага бізнесу, а не турбавацца аб тэхнічным абслугоўванні. Але, як і ў любой вялікай дзяржавы, ёсць вялікая адказнасць.

Snap Inc., кампанія, якая распрацавала папулярнае прыкладанне абмену паведамленнямі і абмену фатаграфіямі Snapchat, пагадзілася набыць $ 1 млрд у хмарных сэрвісах Amazon на працягу наступных пяці гадоў.

Як толькі мы заснавалі Visely, праблема аплаты рахунку за AWS стала вельмі рэальнай. Ніжэй прыведзены кароткі змест таго, як мы падзялілі рахунак-фактуру на дзве часткі, уважліва стварыўшы інфраструктуру з лепшых варыянтаў, якія прапануе AWS.

Тыпы асобнікаў AWS

AWS прапануе шырокі спектр розных асобнікаў. Для Visely нам былі неабходныя кампутарныя машыны, якія эфектыўна запускаюць вэб-серверы для кліентаў-запытаў, серверы баз дадзеных (хостынг ад MongoDB) і машыннае навучанне (Cassandra + Spark).

Выбар лепшых даступных варыянтаў лёгка дадаецца да некалькіх тысяч долараў у месяц, што з'яўляецца высокай цаной для аплаты загружанасці. Звычайны, аптымізаваны кампутарам асобнік з 4 працэсарамі і 8 ГБ аператыўнай памяці можа каштаваць да 125 долараў у месяц.

Гэтыя прычыны прымусілі нас больш уважліва разгледзець выпадкі тыпу T2.

Т2 на дапамогу

Аптэкі T2 прапануюць асноўную паслугу з магчымасцю прарыву на больш высокі ўзровень за перыяд, атрыманы з крэдытаў, прысвоеных абранай машыне кіравання.

Крэдыты і іх узровень спажывання спачатку былі крыху дурнымі, але пасля ўважлівага прачытання дакументаў AWS усё было ў парадку.

Дазвольце мне прывесці прыклад. Невялікі T2 (з vCPU, 2 ГБ) пачынаецца з 288 крэдытаў. Асноўная прадукцыйнасць - 20% працэсара. Такім чынам, калі вы перавышаеце парог 20%, вашы крэдыты будуць гарэць хутчэй, чым вы хацелі. Як хутка яны гараць Даволі хутка, пры 100% выкарыстанні працэсара, вы спажываеце 288 крэдытаў прыкладна за чатыры гадзіны.

T2 нізкае выкарыстанне крэдыту

Нават у гэтых умовах вам наўрад ці патрэбны 100% працэсар. Многія стартапы маюць прадказальную схему выкарыстання з адным ці двума пікамі (гэта значыць кліентамі на ўсходнім і заходнім узбярэжжы), якія адбываюцца на працягу дня. Гэта ідэальны выпадак для выпадкаў T2, якія пакрываюць пікавае выкарыстанне крэдытаў і могуць аднавіцца на працягу ночы. Усе нашы мікрасэрвісы працуюць на T2 VM і могуць быць паспяхова адноўлены нават у непрацоўны час.

Памылкі, якіх трэба пазбягаць пры выкарыстанні асобнікаў T2

Калі вы выкарысталі ўсе крэдыты, ваш асобнік будзе працаваць на базавым узроўні. Для малога T2 гэта 20% працэсара. Працэс аднаўлення ідзе даволі павольна (г.зн. 12 крэдытаў у гадзіну для малога T2), таму вам трэба быць вельмі ўважлівым пры выбары тыпу асобніка, неабходнага для выканання задачы, каб усе крэдыты ніколі не выкарыстоўваліся ў пік.

Без крэдытаў і нагрузкі, большай, чым базавая, ваш асобнік становіцца нестабільным.

Справаздача Ops: паводзіны трох з пяці сервераў прыкладанняў даволі дзіўна (дзякуючы @devopsreactions)

Апошняе, што вам трэба - гэта асобнік, які не мае крэдытаў у гадзіны пік. У гэтым выпадку вы можаце даць толькі новы і перанакіраваць нагрузку ў яго. Мы даведаліся гэта нялёгкім шляхам. Уважліва сочыце за выкарыстаннем крэдытаў. AWS забяспечвае зручны інструмент CloudWatch, які можна наладзіць для атрымання апавяшчэнняў пры перавышэнні ўстаноўленага парога.

Як правільна выбраць асобнікі T2

Пачніце з асобнікаў, якія відавочна валодаюць дастатковай магутнасцю для вашага нагрузкі. Пракантралюйце гэта некалькі дзён, і калі вы ўбачыце плоскі графік выкарыстання пазыкі, альбо змяніце тып асобніка альбо дадайце дадатковыя паслугі.

Экземпляр ідзе занадта добра

Гэта было ключавым сігналам таго, што мы можам узмацніць ціск на юрыдычныя асобы з гэтай крывой выплат па крэдытах. Наша стратэгія была простая. Пасля выяўлення недастатковага выкарыстання VM, мы разгарнулі сэрвісы, якія спажываюць менш працэсара.

Праз месяц маніторынгу і дапрацоўкі мы амаль удвая скарацілі колькасць запушчаных экзэмпляраў VM.

Точныя выпадкі для маштабавання некрытычных рэсурсаў і загрузкі ў аўтаномным рэжыме

У дадатак да асобнікаў T2, AWS таксама прапануе кропкавыя асобнікі, якія можна выкарыстоўваць для зніжэння кошту вашага штомесячнага рахунку. Адзінае адрозненне паміж відэаматэрыяламі па патрабаванні і экземплярамі Spot заключаецца ў тым, што EC2 можа потым перарваць іх двуххвілінным апавяшчэннем, калі AWS мае патрэбу ў іх.

Цяжкае перапыненне (альбо спячка) з двума хвілінамі апавяшчэння гучыць цяжка, але гэта можа быць ідэальным рашэннем для аўтаномных пакетных заданняў альбо маштабавання па патрабаванні.

Тут, на nemo.ai, мы выкарыстоўваем Apache Spark для двух тыпаў задач:

  • Аналіз у аўтаномным рэжыме для бізнес-панэляў
  • Запусціце алгарытм сумеснай фільтрацыі для вызначэння кліентаў, якія таксама купілі / прагледзелі адносіны

Абедзве заданні ў аўтаномным рэжыме і могуць выконвацца групамі. Гэта ідэальны сцэнарый для прызначэння асобных асобнікаў.

Як працуюць кропкавыя асобнікі?

AWS забяспечвае шырокае кіраўніцтва карыстальніка для выкарыстання асобнікаў Spot. Кажучы простай мовай, вы дасце цану за рэсурс, які вы хочаце выкарыстоўваць. Рэсурс будзе прызначаны, як толькі цана апусціцца ніжэй вашай заяўкі.

Мы можам запытаць тры экзэмпляры M3 (аптымізаваныя памяці) Spark з указанай максімальнай коштам, якая будзе працаваць пад CentOS. Пасля таго, як патрабаванне будзе выканана, усё, што вам трэба зрабіць, гэта разгарнуць кантэйнеры Docker з наладжанымі работнікамі Spark.

Пакетнае заданне выконваецца паслядоўна для кожнага з нашых кліентаў. Спатрэбіцца прыблізна гадзіна, каб зрабіць усю апрацоўку, неабходную для ўсіх кліентаў. У гэты перыяд, у выпадку з'яўлення спотавых выпадкаў, можна вярнуць іх за дзве хвіліны. Гэта не праблема, таму што праца ў аўтаномным рэжыме і можа працягвацца для кліентаў, якія засталіся пасля таго, як запыт будзе зноў выкананы.

Такім чынам, можна сказаць, ці хочаце вы стварыць прыкладанне, якое карыстаецца плямамі.

  • Разгарніце выпадкі AWS, выкарыстоўваючы TerraForm (альбо іншы інструмент аўтаматызацыі), каб як мага хутчэй загрузіць ваш экземпляр Spot з неабходнымі паслугамі. Выкарыстанне загадзя зробленага малюнка AMI таксама з'яўляецца рашэннем, хаця мы абралі Terra Form, таму што нам гэта проста прасцей.
  • Працу, якую вы робіце на кропку, не варта баяцца перапынкаў і спячкі.
  • Разгортванне неабходных прыкладанняў для кропкавых экзэмпляраў павінна быць цалкам аўтаматызавана, інакш вам давядзецца выдаткаваць шмат часу на ўстаноўку, каб выкарыстаць VM. Выкарыстанне малюнкаў Докер можа стаць аптымальным рашэннем для гэтага.

Вы можаце выкарыстоўваць гэты зручны рэсурс, каб праверыць наяўнасць кропкавых асобнікаў у вашым рэгіёне.

Іншыя выдаткі

Сетка і пастаяннае захоўванне - другі самы дарагі рэсурс, які нам давялося аптымізаваць. Тут у вас менш варыянтаў, каб гуляць з SSD. Мы вырашылі выкарыстоўваць SSD для паслуг, якія патрабуюць хуткага ўстойлівага ўводу / выводу (напрыклад, MongoDB, Apache Solr). Паслугі без грамадзянства добра працуюць для магнетычнага захоўвання.

Што тычыцца сеткі, то тут можна вельмі мала наладзіць, хоць вам абавязкова трэба пераканацца, што выкарыстанне вашай сеткі знаходзіцца ў чаканых межах.

Як запуск, які патрабуе запуску некалькіх VM, намаганні па аптымізацыі выдаткаў акупіліся і зэканомілі грошы, якія мы маглі б выдаткаваць на іншыя рэчы.

Калі вам спадабалася гэтая гісторыя, вы можаце праверыць астатніх з гэтай серыі

Год у стартапе. Як мы загрузілі стартап.