Бүгд
Бакенд

Хурдан, аюулгүй, өргөтгөх боломжтойгоор бүтээгдсэн

Rust, Actix болон микросервис архитектур ашиглан хурдан, аюулгүй, өргөтгөх боломжтой Бакэндийг хэрхэн бүтээснээ танилцуулж байна.

Боловсролын сүлжээ бүтээнэ гэдэгт Бакэнд бол зүгээр дэд бүтэц биш
энэ бол итгэл, хурд, найдвартай байдлын суурь юм.

Анхнаасаа бид Hischool дараах бүхнийг даах ёстой гэдгийг мэдэж байсан:

  • Бодит цагийн хамтын ажиллагаа
  • олон мянган зэрэг хэрэглэгч
  • зурвас, файл, медиа
  • сургууль, хөтөлбөр, кохорт
  • энэ бүх зүйл нэгэн зэрэг явагдах орчин

Тиймээс бид эртнээс нэг шийдвэр гаргасан:

Бид бакэндийг хялбар байлгахын төлөө биш — гүйцэтгэл, тогтвортой байдал, урт хугацааны өсөлтөд зориулж бүтээнэ.


Яагаад эхнээсээ микросервис сонгосон бэ

Hischool бол энгийн апп биш.
Энэ бол сургууль, хүмүүс, харилцааны сүлжээ.

Тиймээс бид бакэндээ бие даасан микросервисүүд болгон зохион байгуулсан — тус бүр нь тодорхой үүрэгтэй:

  • ойлгоход хялбар
  • өргөжүүлэхэд хялбар
  • хамгаалахад хялбар
  • хөгжүүлэхэд хялбар

Нэг сервис өсөхөд бусдыг эвдэхгүй.


Яагаад Rust (мөн яагаад Node.js, Java биш)

Hischool-оос өмнө бид:

  • Node.js
  • Java
  • уламжлалт фрэймвөркүүд

ашиглаж байсан.

Ажиллаж байсан — гэхдээ бидний хэрэгцээнд бүрэн нийцээгүй.

Бидэнд дараах зүйлс хэрэгтэй байсан:

  • бага санах ойн хэрэглээ
  • тогтвортой гүйцэтгэл
  • жинхэнэ зэрэгцээ гүйцэтгэл
  • runtime гэнэтийн асуудалгүй байх
  • илүүдэл зардалгүй хийсвэрлэл

Олон туршилт, судалгааны дараа бид нэг дүгнэлтэд хүрсэн:

Rust нь C-тэй ойролцоо гүйцэтгэл, бусадтай харьцуулахад өндөр аюулгүй байдал, бүтээгдэхүүн дээр итгэл өгдөг.

Веб фрэймвөркийн хувьд бид Actix-ийг сонгосон:

  • маш хурдан
  • async-д суурилсан
  • бодит орчинд туршигдсан
  • микросервист төгс тохирно

Манай бакэнд архитектур

Гол функц бүр өөрийн микросервист байрладаг — бүгд Rust + Actix дээр.


Auth микросервис

Хариуцдаг:

  • хэрэглэгч бүртгэл
  • нэвтрэх
  • authentication
  • нууц үг
  • баталгаажуулалт
  • аюулгүй байдлын дүрэм

Энэ сервис тусгаарлагдсан — учир нь authentication бол хамгийн чухал.


Realtime микросервис (WebSocket сервер)

Фронтэнд болон бакэндийг шууд холбодог.

Үүнийг ашиглан:

  • live зурвас
  • онлайн байдал (presence)
  • typing indicator
  • бодит цагийн шинэчлэлт
  • хамтын ажиллагаа

ямар нэг зүйл болох үед — хүн бүр шууд харна.


Storage микросервис

Хариуцдаг:

  • хэрэглэгчийн зураг
  • сургуулийн cover
  • чат медиа
  • файл
  • upload

Бид ашигладаг:

  • AWS S3 — динамик файлд
  • local filesystem — статик asset-д

Ингэснээр:

  • хурд
  • хяналт
  • уян хатан байдал
  • зардлын хэмнэлт

бий болдог.


Proxy микросервис

Шийддэг:

  • зургийн оптимизаци
  • медиа дамжуулалт
  • эмбэд харуулах
  • линк харуулах
  • гадаад контент боловсруулах

Үндсэн системийг хамгаалж, контентыг зөв харагдуулна.


API микросервис

Энэ бол системийн “тархи”.

Хариуцдаг:

  • сургууль
  • бүлэг
  • календарь
  • онлайн сургалт
  • роль
  • эрх
  • зурвас
  • нийтлэл
  • аналитик
  • бизнес логик

Бүх зүйл энд холбогдоно — цэгцтэй, аюулгүй.


Бага нөөц, өндөр хурд

Анхнаасаа бидний зорилго:

Бага нөөц ашиглах, өндөр гүйцэтгэл гаргах, илүүдэлгүй байх

Rust + Actix бидэнд боломж олгож байна:

  • нэг сервер дээр илүү олон хэрэглэгч
  • дэд бүтцийн зардал багасгах
  • ачаалалд тогтвортой байх
  • санаа зовохгүй ажиллах

Garbage collection pause байхгүй.
Нуугдмал удаашрал байхгүй.
Ажиллах үед гэнэтийн асуудал байхгүй.


Нэг бакэнд, олон клиент апп

Энэ бакэнд дараах бүх платформыг ажиллуулж байна:

  • Веб (PWA)
  • Андройд
  • iOS
  • Десктоп

Бүх клиент апп нэг бакэндтэй холбогдоно.
Бүгд нэг сайжруулалтаас ашиг хүртэнэ.
Бүгд шинэчлэлтийг шууд авна.


Дараа нь юу байна?

Бид дараах зүйлс дээр ажиллаж байна:

  • илүү сайн caching стратеги
  • илүү ухаалаг realtime fanout
  • background job систем
  • distributed tracing
  • auto-scaling
  • илүү хурдан эхлэх

Гэхдээ суурь аль хэдийн бэлэн болсон.


Зорилготойгоор бүтээгдсэн

Бид Rust болон микросервис архитектурыг тренд болохоор нь сонгоогүй.

Бид сонгосон учир нь:

  • боловсрол найдвартай байх ёстой
  • коммунити хурдан байх ёстой
  • бүтээгчид итгэлтэй байх ёстой
  • ирээдүй бат бөх суурьтай байх ёстой

Энэ бакэнд удаан хугацаанд ажиллахад зориулагдсан.

Бид дөнгөж эхэлж байна.

Hischool-ийн хамгийн сүүлийн хувилбарыг ашиглаж эхлээрэй

Сургуулиа үүсгэж, платформыг туршиж, шинээр гарч буй боломжуудыг шууд мэдэр.

🚀 Сургууль үүсгэх Платформ