7 речей, які я хотів би знати до того, як розгортати проєкт з AWS в Китаї

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Всім привіт. Мене звати В’ячеслав Компанієць, я Director of Infrastructure & Operations в компанії MEV.

У цій статті хочу розказати про «граблі», по яких я пройшовся, ще перебуваючи на посаді System Engineer, та розгортаючи проєкт з використанням провайдера хмарних послуг AWS в Китаї.

Одразу дисклеймер — цей проєкт реалізувався в рамках нашої співпраці з великим американським ритейлером, який ще до початку повномасштабного вторгнення вирішив відкрити новий магазин в Китаї. І досвід, який я описуватиму в статті, може бути цікавий читачу з точку зору наочного прикладу, які відмінності застосування технологій можуть бути при розгортанні проєктів в різних географічних регіонах.

Згідно з певними тамтешніми законодавчими обмеженнями, тримати та обробляти будь-які дані можна лише в межах країни. Тому, щоб користувачі з цього регіону могли скористатись застосунком, було вирішено створити його копію з усією інфраструктурою вже в AWS у Китаї.

На перший погляд, здавалося б: ну це такий самий AWS, все те ж саме, що може піти не так?

Швидкий огляд статей давав кілька порад щодо того, на які моменти варто звернути увагу: чи є там взагалі необхідний вам сервіс і в яких саме регіонах він підтримується, було багато згадок про ICP (про це трохи далі), багато скарг на швидкість тощо.

Але в нашому випадку це зовсім не лякало: всі необхідні сервіси наявні, проблеми зі швидкістю стосуються лише трафіку з-за меж країни та не вплинуть негативно на користувацький досвід, а ліцензію, як і сам AWS-акаунт, замовник вже мав.

Тут я, можливо, десь переоцінив себе та недооцінив важливість повноцінного детального аналізу, оскільки субʼєктивно здавалося, що короткого дослідження буде цілком достатньо. Я помилився.

І ось тепер, вже маючи деякий досвід, хочу поділитись з вами кількома моментами, які б я дуже хотів знати ще до того, як взявся за цю роботу.

Ліцензія ICP

З цим особисто мені не довелось зіткнутись, оскільки замовник вже мав ліцензію та AWS-акаунт. Але цей момент дуже важливий для початку і його варто коротко висвітлити. Детальнішу інформацію можна отримати, наприклад, тут, але краще звʼязатися зі своїм провайдером з приводу цього питання.

Створення нового акаунту AWS в Китаї сильно відрізняється від процедури для глобальної версії, за якою новий обліковий запис може створити будь-хто за 2 хвилини.

Що потрібно для цього у Китаї:

  • Мати зареєстровану юридичну особу або фізичну особу з громадянством та реєструвати акаунт на неї.
  • Щоб публікувати або завантажувати будь-який контент, потрібно мати ліцензію ICP (Internet Content Provider).
  • Для отримання цієї ліцензії ICP потрібно надати своєму хостинг- або хмарному провайдеру необхідну інформацію про власника: доменне ім’я, IP-адресу, вміст та призначення сайту чи застосунку, обовʼязково контактну особу з питань безпеки тощо.

Тільки після цього ви матимете законне право опублікувати ваш застосунок або навіть просто сайт-візитівку. Питанням безпеки приділяється особлива увага, оскільки захист даних користувачів є одним з найвищих пріоритетів. Ну і як зазначено вище, це має бути фізична чи юридична особа зареєстрована та фізично присутня в Китаї. Таким чином отримати ліцензію іноземцям неможливо. Заради справедливості варто зазначити, що ці правила стосуються не тільки AWS, а й будь-якого іншого провайдера послуг чи хостингу.

AWS Global vs AWS China

Отже, одну з відмінностей між ними, повʼязану з реєстрацією ми вже знаємо. Але це тільки верхівка айсберга.

По суті AWS Global та AWS China — це два абсолютно незалежні один від одного сервіси, які ніяк не поєднані між собою та не мають спільних ресурсів. Це не просто ще один регіон, як, наприклад, з Європою, а зовсім інший сетап. Це стає зрозуміло відразу, оскільки і домен в них теж свій — https://console.amazonaws.cn/ (на відміну від глобального https://console.aws.amazon.com/).

Наведу кілька прикладів з кейсами, які неможливі для реалізації між Global та China акаунтами, використовуючи вбудовані механізми:

  • управління організацією та, як наслідок, консолідований білінг;
  • кросакаунт IAM ролі та політики;
  • реплікація, піринг тощо.

Це доволі незручно, особливо якщо мова йде про один і той самий продукт, як в нашому випадку. Проте варто враховувати цю особливість і при необхідності «спілкування» вашого застосунку з іншими ресурсами в глобальному AWS. Це може бути реалізовано тільки у форматі зовнішнього доступу, без використання вбудованих можливостей.

Доступні сервіси та їх обмеження

Список доступних сервісів доволі просто знайти, наприклад, тут. Це одна з речей, на які однозначно варто звернути увагу на етапі аналізу. Але те, що необхідний вам сервіс існує в цьому регіоні ще не означає, що він працює точно так само, як і в глобальному.

Так, нам потрібен був CloudFront. Цей сервіс підтримується в регіоні Ningxia (cn-northwest-1), проте, коли прийшов час його налаштувати, то виявилось, що він не підтримує сертифікати з ACM і їх не можна вказати для своєї дистрибʼюції, а підтримує він тільки завантаження сертифікатів користувачем. Тобто єдиний варіант — десь виписати собі сертифікат і завантажити його прямо в налаштуваннях CloudFront.

Багато хто вимушений купувати їх або ж використовувати обхідні шляхи у вигляді сертифікатів Let’sEncrypt, хоч це і «костиль» та вимагає більше часу в майбутньому на підтримку інфраструктури.

Цікаво те, що до EC2 Load Balancer’ів без проблем можна прив’язати сертифікат, виданий Amazon — там подібного обмеження немає.

Також варто передивитись документацію до сервісів, які плануєте використовувати. Оскільки, наприклад, в EKS є багато корисної інформації щодо деплою службових чартів в регіонах cn-north-1 та cn-northwest-1(можна ознайомитись за цим посиланням), де вказано який Account ID варто використовувати для публічних Registry компонентів.

Низька швидкість зʼєднання

Про цю проблему (чи точніше особливість) роботи сервісів ми знали заздалегідь, тому не були здивовані.

Потрібно розуміти, що швидкість з’єднання низька тільки за умови, коли трафік йде ззовні, а всередині країни все працює більш-менш нормально. А оскільки продукт розгортався для користувачів саме цього регіону, то на їх досвід це не мало вплинути.

В реальності це все ж викликало кілька проблем, в основному для команди розробників та інфраструктурних інженерів, які знаходились в США та Україні. Адже розгортання інфраструктури та управління нею, збірка, деплой та навіть моніторинг через це працюють нестабільно.

Процеси CI\CD іноді падали з помилками через неможливість отримати необхідні залежності або просто по таймауту, моніторинг міг мати багато хибно-позитивних спрацювань, а тестування продукту займало більше часу ніж зазвичай.

Також, за моїми особистими спостереженнями, швидкість доступу залежить ще й від часового проміжку. Так, наприклад, у період з 8:00 до 17:00 за Києвом швидкість прийнятна (хоч і все одно повільна у порівнянні з глобальним AWS). А от у період з 17:00 до 5:00 — найгірша. З чим це пов’язано я не знаю, але для себе вивів правило — деплой в кінці робочого дня роботи не варто.

Недоступність ресурсів

Проблеми зі швидкістю та іноді стабільністю з’єднань це ще не все. Глобальнішою виявилась проблема з недоступністю деяких ресурсів. Це вже пов’язано не стільки з обмеженнями AWS, скільки з обмеженнями самих провайдерів доступу до мережі інтернет. Привіт, Great China Firewall.

Проблеми, з якими я особисто стикнувся:

  • недоступна частина ресурсів з Docker Hub (часто через проблеми зі швидкістю);
  • недоступний Google Container Registry та частина інших сервісів Google;
  • проблеми з доступом до деяких репозиторіїв npm або python (також часто через проблеми зі швидкістю).

Це лише те, з чим я працював, але впевнений, що перелік значно більший.

Тому частину образів, які потрібні були для роботи (той же fluent-bit, наприклад) довелось перезаливати на ECR в Китай, а для частини інших — шукати доступні альтернативи.

Тут головне не піддаватись ілюзії простоти рішення та розуміти, що доступні дзеркала в Китаї є і їх багато, проте часто вони містять застарілі або навіть заражені шкідливим кодом версії образів чи пакетів, а тому можуть бути небезпечними. Обирайте дзеркала з розумом або створюйте свої registry за потреби.

Ну і, звичайно, VPN там недоступний.

Підтримка китайських регіонів вашими інструментами

Тепер перейдемо до менш очевидних, але дуже важливих речей — інструментів. Так, регіони cn-north-1 та cn-northwest-1 можуть просто не підтримуватися вашими інструментами, і це, особисто для мене, було найболючішим.

Наприклад, для зручності розробники користувались Apex UP і для запуску проєкту локально, і для деплою на всі оточення. Виявилось, що він не підтримує ці регіони. Звісно, на момент написання статті у нашої команди вже було кілька Issue на GitHub з цього приводу, але прогресу по них немає вже близько року.

Також не зайвим буде переконатись, що ваші Terraform модулі також мають підтримку цього регіону, тому що, як виявилось, всі IAM ролі в Китаї мають трохи інший вигляд, а саме arn:aws-cn:iam::012345678901:role.

Подібна участь спіткала й Terraform код або модулі, яким потрібно sts:AssumeRole, оскільки для цього регіону Service Principal також відрізняється — має бути ec2.amazonaws.com.cn.

Те ж саме вплинуло і на побудову CI процесу. Ми використовуємо Bitbucket pipelines у якості CI і в налаштуваннях OIDC вашого пайплайну він також не сприймає ролі arn:aws-cn:iam::... через те, що парсер просто не знає такої форми запису і чекає на стандартний arn:aws:iam::....

Тому з особливою увагою віднесіться до всіх ваших інструментів та перевірте заздалегідь, чи працюватимуть вони.

CDN

Це те, що ви точно захочете використовувати, навіть якщо не планували, через низьку швидкість з’єднання і особливо за межами країни. І тут теж є моменти, які варто зауважити.

Раніше я вже згадував про особливості імпорту сертифікатів до CloudFront. Часто як альтернативу йому (і, до речі, кращу) обирають AliCDN від AliCloud. Це доволі великий та відомий хмарний провайдер азійського регіону.

Притому, що він дотримується всіх тих самих правил відкриття акаунтів, він має більшу мережу серверів у країнах Сходу та надає кращий сервіс. Тому зверніть на нього увагу, якщо вирішите додати CDN до вашого продукту.

So, long story short

  • Зареєструйте акаунт AWS China та отримайте ліцензію ICP. Для цього вам потрібні будуть або юридична, або фізична особа громадянина в цій країні.
  • Памʼятайте, що AWS Global та China не мають спільних ресурсів, це два повністю самостійні та незалежні сервіси.
  • Перевіряйте всі аспекти роботи необхідного вам сервісу. Навіть якщо він і існує в цьому регіоні, не факт, що все працюватиме так само як і в глобальному. Зокрема, CloudFront не підтримує сертифікати з ACM.
  • Закладайте деякий запас у свій час на будь-які роботи з AWS в Китаї через повільне з’єднання та плануйте роботи заздалегідь.
  • Перевіряйте доступність усіх необхідних вам ресурсів.
  • Перевіряйте усі ваші інструменти на предмет сумісності та можливості роботи з Китайським регіоном.

P. S. Дякую Сергію Носалю за допомогу і у написанні цієї статті, і у розгортанні проєкту.

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Якщо відкинути моральність співпраці з нефритовим стержнем...
Дуже дякую, цікаво було почитати

У меня в день на халяве сидят примерно до 800 китайцев. Попытка перевести их на коммерческий продукт не получилась. Тяжелый и специфичный рынок. Поэтому давно на них забил. Антипод ему японцы, никаких коммуняцких ограничений . Поддержка пользователей — это вооще песня. Они перед тем, как обратиться к тебе за помощью, изучат доку. Ни разу проблем с ними не было. Единственная проблема это война, практически все обнулила.
Единственное, что можно еще попробовать, это Тайвань. Только здесь нужно адаптировать продукт под их запросы. Но это после войны, сейчас что то делать бесполезно.

в день на халяве сидят примерно до 800 китайцев.

це як? на безкоштовному сапортi?

Достатньо знати одну річ. Китай — спонсор росії у війні проти України.

Спонсор — це той, хто оплачує ведення бойових дій. В цьому плані називати Китай спонсором Росії некоректно. Те що вони морально на її боці — не робить їх спонсором, і така їхня позиція є лише наслідком протистояння з США.

Не варто плутати пропаганду/жовту пресу і реальність. Китай є спонсором рашки не більше ніж Індія, чи більшість країн заходу, які забезпечили за 2022-й рік рекордні надходження нафто-газових прибутків до їхнього бюджету. Якщо ми всіх запишемо у спонсори і вороги, то залишимось сам на сам із справжнім ворогом. Тому варто не шукати ворогів там де їх нема, а працювати дипломатично і інформаційно для того щоб забезпечити собі підтримку. Нагадаю, шо в тому самому Китаї в нас досі НЕ БУЛО ПОСЛА. Це стосується і більшості незахідних країн, де в нас або немає диппредставництва, або їх там не видно і не чути (і не було чути протягом всього часу незалежності). А потім дивуємось, чого вони більше за рашку, яка десятиліттями активно там працює дипломатично і розповсюджує свою пропаганду, ніж за нас. Але так, це не ми винні, а хтось інший.

Китай постачає до росії зброю через кндр та іран. Цього мало?
Ба більше, кнр і є справжнім ворогом, як і рф.

Немає ні доказів, ні свідчень того, що постачає. Крім окремих представників преси, яка часто не відповідає за свої слова. Те, що в них є — це закупка в окремих компаній через треті країни. Ми так само купуємо всякі Мавіки та інше в них. Але це не називається підтримкою нас Китаєм, оскільки подібні закупи не мають відношення до уряду Китаю.

Ну так, це США, НАТО і ЄС намагаються розсварити дружні народи. А у нас травневі шашлики.
bbc.com/...​rainian/features-64719268
radiosvoboda.org/...​iyna-rosiya/32286903.html
ukrainian.voanews.com/...​ykh-mirkuvan/6817997.html
mil.in.ua/...​u-vtorgnennya-v-ukrayinu

Причому тут шашлики? Не треба мене закидувати лінками, краще сам читай що там написано. Де конкретно в цьому сказано, що китайський уряд постачає зброю?

А спонсорство війни — то виключно прямі поставки зброї?
І так, навіщо читати довгі тексти із незаперечними фактами, якщо є власна віра у мирну панду.

От свіжа новина наприклад з цієї ж опери: СБУ викрила одеську компанію, яка постачала сировину та обладнання для кацапського ВПК. Інертний газ, необхідний виготовлення лазерних прицілів і прицільних комплексів бронетехніки, ввозили до кацапстану через фірму-прокладку на Близькому Сході. Відомо, що підприємство фактично контролювалося громадянами кацапстану та було стратегічно важливим для окупанта.
Наразі потік сировини перекритий, а керівництву компанії загрожує відповідальність за статтями 111-1 та 111-2 ККУ (Колабораціонізм та допомога державі-агресору).
Ми ж не будемо казати, що Одеса є ворогом України? Чи Україна є ворогом сама собі? :)))

Як пов’язані факти російської підривної діяльності в Україні і (не)спонсорства кнр війни рф проти України?

Це просто приклад. Продаж окремою компанією не є постачанням з боку уряду, як наприклад нам поставляють техніку та озброєння США і Європа. Слід розрізняти дії бізнесу і офіційну позицію.

Офіційна позиція може відрізнятись від реальної. Наприклад, рф не воює в Україні. Взагалі. Просто 9 років тому донбасівські шахтарі і трактористи (місцеві) масово скупились у воєнторгах, щоб не пустити нацистів з Майдану, а рік тому путін був змушений їх захистити, розпочавши сво. А так росія виключно за мир.
Так само і кнр. Можна було ще якось у цьому сумніватись рік тому, але не зараз. Особливо після «мирних ініціатив», які спрямовані на захист інтересів агресора, і нічого корисного для України в собі не містять.

Неправильний приклад. «Донбасівським шахтарям і трактристам» масові поставки озброєнь йшли з боку російського уряду, причому безкоштовно. А також бойовики і військові інструктори, які вчили цим всім користуватись. «Донбасівські шахтарі і трактристи» не купували це все за гроші в російських компаній через треті країни, тобто через сірі схеми. З боку Китаю до Росії нічого подібного немає. Відверто, я не дуже розумію, чого нам тут сперечатись, все одно кожен залишиться при своєму :)

Доказів немає, так само, як і у випадку постачань від кнр, кндр, ірану і т.ін. Отже, і росія не спонсорувала лднр 8 років...

Доказів немає,

От твоих же источников только по одному эпизоду:
www.bbc.com/...​/150729_russian_troops_sx
www.radiosvoboda.org/a/27155391.html

То ж хіба не ясно, що то був сарказм?

Ну в отличие от китайских кули, гружённых китайскими снарядами, у нас пока не ловили. Так что сарказм какой-то совсем не сарказм.

як ти уявляєш ловити китайські вантажі на території рф?

Навіть Іран важко назвати спонсором. Вони швидше їхній союзник, або навіть не союзник, а тимчасовий партнер, який продає їм зброю в обмін на іншу (літаки, чи ще можливо щось), та якісь потрібні їм технології.

за такою логікою і росію важко назвати агресором, тим більше біларусь — її союзником.

З логікою, все-таки бачу проблеми. Тому не бачу сенсу у подальшій дискусії.

Сорян але він прав

Ти схожий на невіруючих в російську агресію пару років тому, на Усіка, на Ані Лорак, ітд

Один діктатор приїхав до другого, і поклав на обіцяну розмову з зеленським, навіть на обіцяну розмову з дідом джо поклав болт

Це щоб не підтримати росію ;)

Ти просто вигадуєш приводи чому це не так. Яких тобі доказів взагалі хочеться? Оскароносне відіо від навального де пу бере у китайського фюрера за щоку в обмін на мішок з мікрочіпами? Це ж засекречена інформація, прем’єру кіно доведеться почекати

Може правий, може ні... Але з віруючими сперечатись все-таки марна справа :)

Це вірно. Марна справа сперечатись із віруючими у нейтралітет кнр.

У тому-то і проблема, що проблем зі своєю логікою ти не помічаєш.

Чи Україна є ворогом сама собі? :)))

Будемо. Бо уроки УНР та Скоропадьского так і залишились невивченими

в тому самому Китаї в нас досі НЕ БУЛО ПОСЛА
Після проголошення незалежності Україною 24 серпня 1991 року КНР визнала незалежність України 27 грудня 1991 року. 4 січня 1992 року між Україною та КНР було встановлено дипломатичні відносини. У березні 1993 року в Пекіні почало роботу Посольство України в КНР.

uk.wikipedia.org/...​/Посольство_України_в_КНР

Читайте уважно по цьому ж лінку. З 2021-го року посла немає. Лише тимчасовий повірений.

боже яке кончене ©
не бачить різниці між ніколи не було, та
тимчасовий повірений, назначений після смерті посла

Ого, як потужно... який рівень людини! Я мав наувазі досі немає посла...

Я мав наувазі досі немає посла...

тимчасово повірений стане послом, якщо виправдає
ні — послом стане хтось інший
це звичайні речі

Може стане, але посла немає вже більше 2 років. І помер попередній посол ще за рік до війни. Якщо нам Китай важливий, то подібні речі потрібно робити трішки оперативніше.

у період з 8:00 до 17:00 за Києвом швидкість прийнятна (хоч і все одно повільна у порівнянні з глобальним AWS). А от у період з 17:00 до 5:00 — найгірша. З чим це пов’язано я не знаю

Перерва на обід у китайського файрвола. Реалії комуністичної бюрократії

dou.ua/...​rums/topic/42594/#2594779

14 годин — нуль реакції автора на коментар.

Вже 15 :)
І це нормально, людям потрібен сон вночі

Думаю это они так свой продукт Huawei Cloud (интуитивно очень похож на AWS) защищают, я там деплоил и не было проблем с базовыми задачами

Восьма річ, яку хотілося б знати: НАВІЩО, адже чайна прямо, опосередковано чи приховано-підступно відноситься до новітньої Осі Зла, яка прямо зараз вбиває нас з вами. Хоча, якщо гроші все одно комусь не пахнуть, навіть якщо всім іншим смердять трупним запахом, то що ж...

По-перше — рішення стосовно необхідності розгортання проекту в цьому регіоні було прийнято ще до повномаштабного вторгнення, а самі роботи проводились влітку 2022 року.
По-друге — це вже зроблено і отримано певний досвід, який може бути комусь корисним. І я ділюсь саме своїм досвідом а не агітую піднімати проекти в AWS Китаю.

Все добре, все гаразд. Скажіть, будь ласка, а які граблі очікувати при розгортанні подібного проекту на росії? Раптом комусь буде цікавий саме такий досвід

Все норм, але адміну треба кал здавати два тижні перед першим логіном

Це варто було б дисклеймером розмістити на початку статті

Я розумію, Китай далеко не святий. Та на скільки мені відомо, Україна є стратегічним та економічним партнером Китаю. Крім того, ми з вами щодня купуємо товари та послуги які виробляються в Китаї повністю або частково. Тобто ми всі дружно контрібутимо в економіку Китаю і дуже залежимо від неї. Наш клієнт, великий американська ритейлер, який має магазини у багатьох країнах світу, крім росії, та підтримує Україну війні зараз, вирішив відкрити новий магазин в Китаї та запустити його на новому хмарному рішенні, яке ми розробляємо разом з ними. Саме з цим і пов’язаний досвід роботи нашої команди з AWS в Китаї.

це арахамія і ко є партнерами китаю. адекватні люди бойкотують це «диво»

Підписатись на коментарі