Blog

Bakit Inilipat ng Mythex ang mga Server Nito sa ARM

Noong Setyembre 19, inilipat namin ang production backend ng Mythex mula sa x86 servers patungo sa mas maliliit na ARM-based na AWS Graviton servers, at inilipat din namin ang platform database sa isang Graviton instance. Simple ang nag-udyok: pagkatapos naming ilipat ang mabibigat na trabaho, ang pagpapatakbo at pagbuo ng app ng bawat user, sa mga hiwalay na sandbox ng bawat project, ang aming pangunahing mga server ay umaabot sa humigit-kumulang isang-katlo ng memory nila sa pinakamataas. Kasya sa aktwal na load ang mas maliliit na ARM machine at nabawasan ng humigit-kumulang 30% ang buwanang bill sa server.

Ano ang aktwal na ginagawa ng mga server namin ngayon

Noong una, direktang gumagawa ng maraming trabaho ang mga backend server. Mga kalagitnaan ng Setyembre nang matapos naming ilipat ang mahal na bahagi, ang pagpapatakbo ng code ng bawat project, pag-i-install ng packages, at pagbuo ng app, sa mga pribadong cloud sandbox, isa bawat project. Iyon din ang nagbibigay sa bawat project ng sarili nitong hiwalay na kapaligiran at live preview.

Ang naiwan sa sarili naming mga server ay ang koordinasyon: ang API, ang orchestrator na namamahala sa mga sandbox at publishing, authentication, billing, at ang gateway. Matatag at magaan ang trabahong iyon. Pagkatapos ng paglipat, humigit-kumulang 1.3 GB ng memory ang pinakamataas ng mga server sa mga makinang may humigit-kumulang tatlong beses na mas malaki.

Bakit ARM

Ang mga Graviton processor ng AWS ay mga ARM chip na dinisenyo ng AWS. Sa parehong halaga, karaniwang mas malaki ang kapasidad na nakukuha mo kumpara sa katumbas na x86 instance, o parehong kapasidad sa mas mababang presyo. At para sa trabahong tulad ng sa amin (Node.js services, Docker, Postgres), walang nakatali sa amin sa x86.

Inilipat namin ang:

  • Dalawang app server mula sa mid-size na x86 instances patungo sa maliliit na Graviton instance na may tig-2 GB na RAM.
  • Ang platform database mula sa maliit na x86 database instance patungo sa katumbas nitong Graviton.

Ang isang tunay na komplikasyon: mga image para sa dalawang architecture

Tumatakbo pa rin ang staging environment namin sa maliit na x86 server. Nasa ARM na ang production. Hindi tatakbo sa isa ang container image na ginawa para sa isa pa.

Kaya ngayon, bawat image ay ginagawa para sa parehong architecture sa ilalim ng iisang tag, isang multi-arch image. Pinipili ng Docker ang tamang variant sa bawat makina nang awtomatiko, at hindi kailangang malaman ng deploy pipeline kung aling environment ang pinapadalhan nito. Ang kapalit ay mas mahabang CI build; ang benepisyo ay eksaktong parehong code mula sa eksaktong parehong tag ang tumatakbo sa staging at production.

Pagpaplano ng rollback bago ang paglipat

Ang pagpalit ng CPU architecture sa ilalim ng buhay na serbisyo ay uri ng pagbabagong gusto mong mabawi sa loob ng ilang minuto. Bago lumipat, ginawa namin ang mga ito:

  • itinago ang nakaraang server template version bilang pinangalanang rollback target,
  • kumuha ng database snapshot kaagad bago baguhin ang laki ng database, at
  • sumulat ng runbook na sumasaklaw sa paglipat at sa pagbabalik.

Hindi namin kinailangan ang rollback. Gagawin pa rin namin ito sa parehong paraan.

Ang dapat bantayan

Mas kaunti ang espasyo ng mas maliliit na server. Dalawang bagay ang kasunod nito:

  1. Kapag bumalik sa mga server na ito ang mabibigat na trabaho, hindi sapat ang 2 GB. Ang ayos sa puntong iyon ay mas malaking Graviton size, hindi pagbalik sa x86.
  2. Kailangan ng swap ng maliliit na makina. Makalipas ang isang linggo, nag-freeze ang isa sa mga server na ito dahil sa memory pressure nang hindi teknikal na naubusan ng memory: ang kuwento ng nawawalang swap file.

Ang natutunan namin

  • Sukatin muli pagkatapos ng pagbabago ng architecture. Nagbago ang kailangan ng mga server namin nang ilipat ang trabaho sa mga sandbox; hindi pa nakakasabay ang laki ng mga instance.
  • Mababang-panganib na panalo ang ARM para sa karaniwang web stacks kapag multi-arch na ang mga image mo.
  • Isulat muna ang rollback. Mas kalmado ang pagbabago kahit hindi mo ito magamit.

Mythex · Pricing · Gumawa ng kahit ano gamit ang AI · Mga template ng website at app · Paghahambing ng Mythex · Glosaryo ng paggawa ng app gamit ang AI · Mga libreng tool sa paggawa ng app gamit ang AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)