+
Вход

Въведи своя e-mail и парола за вход, ако вече имаш създаден профил в DEV.BG/Jobs

Забравена парола?
+
Създай своя профил в DEV.BG/Jobs

За да потвърдите, че не сте робот, моля отговорете на въпроса, като попълните празното поле:

101+58 =
+
Забравена парола

Въведи своя e-mail и ще ти изпратим твоята парола

Как да проектирате Forex услуга в AWS

*Текстът е предоставен от Runa

Създайте дистрибутирана услуга за обмен на валути в реално време с no-code подход.

Мисията на екипа на Runa Treasury е да направим задаването, осчетоводяването и отчитането на финансовите транзакции безпроблемни и ефективни за нашите клиенти със 100% надеждност при нарастващ обем от данни. За нас е удоволствие да ви представим нова форекс услуга, която осигурява лесна и незабавна обмяна на валута в платформата!

Услугата предоставя обмен на валута в реално време, като използва технологиите на AWS. Дългосрочната визия на тази услуга е да предостави на клиентите възможността да правят заявки в своята основна валута и да закупят активи в различни валути, като конвертирането се извършва в движение. Ето защо нашата услуга трябва да може да скалира и да е високо надеждна, за да обработва хиляди транзакции в секунда. Нека разгледаме някои от важните решения, които взехме, за да проектираме тази услуга.

База данни

Изборът на правилната база данни беше от решаващо значение за нашия дизайн, за да се гарантира ниска латентност и висока производителност. Основната операция в базата данни беше да се извличат оферти по различни параметри. Първоначално обмисляхме DynamoDB и AuroraDB, тъй като те съответстват на визията за безсървърна архитектура на Runa. След като преценихме вариантите обаче, се спряхме на DynamoDB, тъй като тя отговаряше на изискванията ни за ниска латентност, висока наличност и мащабируемост и не изискваше ACID транзакции.

Друго съображение беше DocumentDB, която предлагаше гъвкавост по отношение на схемата и заявките. Тя е напълно управлявана база данни с минимална необходимост от конфигурация и е високодостъпна. Изборът на този подход ни насърчи да експериментираме без страх от провал, тъй като винаги можем да преработим схемите според новите изисквания, докато при DynamoDB е изключително важно дизайнът да бъде правилен от самото начало. По-дълбокият анализ обаче показа, че мащабируемостта на DocumentDB е ограничена в сравнение с DynamoDB. В DocumentDB основната инстанция на базата данни обработва както операции за четене, така и за запис, което може да се превърне в проблем за нашата услуга, изискваща голям обем от записи.

В крайна сметка DynamoDB се оказа най-подходяща за нашата Forex услуга, предлагайки ниска латентност и висока мащабируемост, като същевременно гарантира висока достъпност на данните.

Оркестриране без сървър

Целта на нашия екип от самото начало беше да създаде нова и независима Forex услуга от нулата. Обмисляхме използването на Lambdas в комбинация със Simple Notification Service (SNS), Simple Queue Service (SQS) или AWS Step Functions за управление на работните процеси между компонентите. AWS Step Functions се очерта като ясен избор за нашето решение, тъй като нашият случай на имплементация не изискваше сложна архитектура, управлявана от събития. Вместо това приоритетът ни беше да имаме прост и последователен дизайн, при който лесно да се отстраняват грешки. Предишният ни опит ни показа, че управлението на безсървърна система с твърде много Lambdas може да бъде предизвикателство и трудно за мащабиране.

Силата на Step Functions се крие в способността ѝ да действа като „оркестратор на функции“, който свързва различните стъпки на нашето приложение. Step Functions могат да се справят със задачи като вземане на решения, повторения, паралелни процеси, обработка на грешки и таймаут, което води до по-малко код за писане и поддръжка. Step Functions предлагат и директна интеграция с други услуги на AWS, като DynamoDB, S3, EC2 и Batch, което ни позволява да намалим броя на необходимите ни Lambdas и да подобрим общата латентност на услугата Forex.

На диаграмата по-долу можем да видим пример за нашата настройка на Step Functions за обмен на валути. Тя отговаря за получаването на котировка от доставчик, извършването на изчисления и съхраняването на резултата в нашата база данни. Възможността за визуализиране на стъпките позволява на екипа ни ефективно да отстранява грешки, да наблюдава, да си сътрудничи и да оптимизира, тъй като всеки преход може да бъде прегледан по-подробно, без да се налага да се рови в кода. На всяка стъпка ние директно се интегрираме с друга услуга на AWS, извършваме трансформации на данни, обработваме грешки и създаваме логика за повторение, която може лесно да се конфигурира.

Днес те питаме…

Kаква нетна месечна заплата получаваш в IT сектора?
Loading ... Loading …
Дизайн на Step Function за обмен на валути
Внедряване

Основният доставчик на облачни услуги за Runa е AWS, а различните екипи и хранилища използват различни инструменти за инфраструктура като код (IaC) за разработка и внедряване. Четирите инструмента, които се използват активно, са Terraform, SAM, Cloudformation и AWS CDK. Използвахме тази възможност, за да прегледаме съществуващите си инструменти за внедряване и да направим промяна, ако е необходимо. След внимателно обмисляне избрахме Terraform по няколко причини.

Един от най-привлекателните фактори беше неговият декларативен език (Hashicorp Configuration Language), който улеснява разработката, и възможността му да използва модули, което улеснява повторното използване на кода, четенето и поддръжката. Terraform също така има по-широк набор от налични доставчици, което беше от решаващо значение при избора му пред другите инструменти за IaC.

Освен това при вземането на това решение екипът ни взе предвид механизма за връщане към предишна версия, откриването на отклонения и сигурността при деплойване. Въпреки че AWS CDK осигурява механизъм за връщане, предимствата на Terraform в тези други области го направиха предпочитан избор за този проект.

Обобщение

В крайна сметка нашият екип постигна решение без код с по-малко от 300 реда код в Python. Използвахме стека AWS serverless, за да свърши по-голямата част от работата вместо нас, като елиминирахме затрудненията с поддръжката и експлоатацията, свързани с писането на код. За да свържем всичко заедно, използвахме Terraform за създаване, управление и разгръщане на всички наши ресурси. Това решение без код има няколко предимства, включително намаляване на времето и ресурсите, необходими за разработване и поддръжка, подобряване на мащабируемостта и надеждността и осигуряване на възможност за по-бързи итерации и иновации. Можете да намерите окончателната архитектура на Forex по-долу.

Проектиране на архитектурата на Forex на високо ниво