Get Appointment

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² GraphQL, NestJS ΠΈ Apollo Server

БоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π³ΠΈΠ±ΠΊΠΈΡ… ΠΈ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… API, способных быстро Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ трСбованиям бизнСса. Одним ΠΈΠ· самых вострСбованных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² сСгодня являСтся использованиС GraphQL β€” языка запросов ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π³ΠΈΠ±ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ сочСтании с популярным сСрвСрным Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ NestJS ΠΈ ΠΌΠΎΡ‰Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Apollo Server ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΈ быстрыС API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ идСально подходят для соврСмСнных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° использования GraphQL

  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ запросов: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ сам опрСдСляСт, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎ сниТаСт ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Единая Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°: всС запросы ΠΈΠ΄ΡƒΡ‚ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, упрощая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° ΠΈ бэкСнда.
  • ЛСгкая интСграция с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ источниками Π΄Π°Π½Π½Ρ‹Ρ…: ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ нСсколько Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, микросСрвисов ΠΈ сторонних API.
  • Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ докумСнтация: благодаря инструмСнтам, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ GraphQL Playground, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ способ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ API.

NestJS β€” соврСмСнный сСрвСрный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ

NestJS β€” это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ сСрвСрный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π½Π° TypeScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сочСтаСт Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ: ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡŽ зависимостСй. Благодаря встроСнной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ GraphQL, NestJS позволяСт быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ комплСксныС API, сохраняя Ρ‡ΠΈΡΡ‚ΡƒΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

Apollo Server β€” Π»ΠΈΠ΄Π΅Ρ€ Π² ΠΌΠΈΡ€Π΅ GraphQL сСрвСров

Apollo Server β€” это популярноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для создания GraphQL сСрвСров, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅Π΅ΡΡ высокой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ инструмСнтов для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Apollo Server Π»Π΅Π³ΠΊΠΎ интСгрируСтся с NestJS, обСспСчивая ΠΌΠΎΡ‰Π½ΡƒΡŽ связку для построСния ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… API.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ GraphQL API Π½Π° NestJS ΠΈ Apollo Server

  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ схСмы (Schema First Approach): Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ описываСтся схСма Π΄Π°Π½Π½Ρ‹Ρ… (SDL), Ρ‡Ρ‚ΠΎ позволяСт Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ структуру Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡ… связи. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄- ΠΈ бэкСнд-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ.
  2. ИспользованиС Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€ΠΎΠ²: NestJS прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹ для описания запросов, ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΉ ΠΈ подписок. Π Π΅Π·ΠΎΠ»Π²Π΅Ρ€Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с источниками Π΄Π°Π½Π½Ρ‹Ρ….
  3. ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°: Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ API Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.
  4. АутСнтификация ΠΈ авторизация: соврСмСнныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ JWT, OAuth ΠΈΠ»ΠΈ кастомных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ управлСния доступом.
  5. Валидация ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок: NestJS ΠΈ Apollo Server ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ошибки ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ входящиС запросы для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности ΠΈ надСТности.
  6. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ DataLoader для устранСния N+1 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов ΠΈ использованиС подписок для real-time ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ.
  7. ВСстированиС: благодаря Π΅Π΄ΠΈΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌ ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΊ unit, Ρ‚Π°ΠΊ ΠΈ e2e тСсты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ API.

Π­Ρ‚Π°ΠΏΡ‹ создания GraphQL API Π½Π° Π±Π°Π·Π΅ NestJS ΠΈ Apollo Server

  1. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° NestJS, установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GraphQL ΠΈ Apollo Server.
  2. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ схСмы: созданиС SDL-Ρ„Π°ΠΉΠ»ΠΎΠ², Π³Π΄Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹, запросы, ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ, подписки.
  3. РСализация Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€ΠΎΠ² ΠΈ сСрвисов: написаниС бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, интСграция с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ внСшними сСрвисами.
  4. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ middlewares ΠΈ guard-ΠΎΠ²: Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ бСзопасности, логирования, контроля доступа.
  5. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ тСстированиС: использованиС встроСнных инструмСнтов для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ тСстирования API.
  6. Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°: Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Π½Π° соврСмСнных ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ GraphQL API

  • Π‘Ρ‚Ρ€ΠΎΠ³ΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π½Π° Ρ€Π΅Π·ΠΎΠ»Π²Π΅Ρ€Ρ‹, сСрвисы ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ.
  • ИспользованиС DTO ΠΈ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€ΠΎΠ² для контроля входящих Π΄Π°Π½Π½Ρ‹Ρ….
  • РСализация ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ сортировки для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Π±ΠΎΡ€ΠΎΠΊ.
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ логирования запросов.
  • АвтоматичСскоС созданиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GraphQL Playground ΠΈΠ»ΠΈ Apollo Studio.
  • ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ CI/CD ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² для рСгулярного дСплоя ΠΈ тСстирования.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ИспользованиС связки NestJS ΠΈ Apollo Server для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ GraphQL API позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ соврСмСнныС, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для бизнСса любого ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ обСспСчиваСт быстроС Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° измСнСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с соврСмСнными Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ.

Если Π²Ρ‹ Π·Π°Π΄ΡƒΠΌΠ°Π»ΠΈΡΡŒ ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ собствСнного API ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ пСрСвСсти ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Π½Π° соврСмСнныС Ρ€Π΅Π»ΡŒΡΡ‹, наша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ любой слоТности, учитывая всС Π½ΡŽΠ°Π½ΡΡ‹ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ отрасли. Π£Π·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Avatar
Raman Sapezhka

CEO Plantago/CTO