- PVSM.RU - https://www.pvsm.ru -
Друзья, в преддверии майских праздников мы решили не заваливать вас сложными техническими статьями, поэтому нашли довольно интересный, а главное, легкий в прочтении материал, переводом которого с радостью делимся с вами. Данный материал мы хотим приурочить к запуску курса «Web-разработчик на Python» [1].
С оригиналом можно ознакомиться тут [2].
Приобретение Vivendi dailymotion [3] три года назад оказалось поворотным моментов для нашей организации. Это позволило переосмыслить вектор нашей работы, переосмыслить саму нашу работу от начала до конца. Мы использовали представившуюся возможность для оценки dailymotion в целом, переосмысления нашей инфраструктуры и, что более важно, архитектуры наших продуктов.
В конце концов, проведенный самоанализ подтвердил то, что мы уже знали: мы хотели территориально распространять нашу платформу и разрабатывать API-интерфейсы, мобильные и ТВ-приложения. Это ознаменовало отказ от нынешней монолитной структуры и принятие API-ориентированного подхода. В этой статье описан путь, по которому мы шли.
Критерии и проверки концепции
Запуск проекта мы начали с определения критериев API, которые в итоге сузили до четырех пунктов:
Дальше мы выбрали несколько моделей API и проверили несколько концепций, чтобы понять их целесообразность:
После тщательного тестирования мы выяснили, что GraphQL [4] и его реализации Graphene наилучшим образом соответствовали нашим критериями в сравнении с другими моделями. Это позволило нашим front-end разработчикам легче использовать наш API, а заодно и упростить его использование в клиентских приложениях (например, React JS и Apollo Client). В нашей архитектуре GraphQL также оказался проще и эффективнее в качестве шлюза паттернов. В итоге мы окончательно решили двигаться дальше с GraphQL и Graphene.
Путь в продакшн
В апреле 2017 года, после интенсивной полугодовой разработки, мы вышли в продакшн с нашим API. К лету мы пересадили все продукты dailymotion (веб, мобильные и ТВ) на наш API GraphQL.
Когда мы выбрали GraphQL три года назад, он еще находился в бета-версии и не достиг той популярности, которую имеет на сегодняшний день. Мы были первыми крупными игроками на этой арене и это сделало нашу внутреннюю реконструкцию еще приятнее.
Рождение Tartiflette
В первые месяцы 2018 года, после более чем полугода использования Graphene, мы решили шагнуть дальше и написать свой собственный движок GraphQL. Это позволило нам реализовать некоторые требования, которые не выполнялись Graphene. Мы разработали критерии для нашего собственного движка. Он должен:
После почти года разработки и многих недель тестирования нашей инфраструктуры (в среднем обрабатывалось более 100 миллионов вызовов в день) мы с гордостью предлагаем сообществу GraphQL наш собственный движок с открытым исходным кодом Tartiflette.
ДНК Tartiflette
Tartiflette-это реализация GraphQL Server, построенная на Python 3.6+
Схема GraphQL описывается при помощи нового языка описания SDL (Schema Definition Language) [7];
Производительность является ключевым элементом нашей работы и это отражено в Tartiflette;
Построен с учетом Zen of Python [8]. Не усложнен чрезмерно.
Hello world на Tartiflette
import asyncio
from tartiflette import Engine, Resolver
@Resolver("Query.hello")
async def resolver_hello(parent, args, ctx, info):
return "hello " + args["name"]
async def run():
ttftt = Engine("""
type Query {
hello(name: String): String
}
""")
result = await ttftt.execute(
query='query { hello(name: "Chuck") }'
)
print(result)
# {'data': {'hello': 'hello Chuck'}}
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
О новом функционале вы можете узнать в руководстве на tartiflette.io [9].
Что будет дальше с Tartiflette?
Открытый исходный код Tartiflette – это только первый шаг. Вот несколько идей и планов на будущее для развития Tartiflette:
А еще нам нужны вы!
Вы можете использовать наш проект практически для любых целей и помочь нам в развитии Tartiflette! Пожалуйста, проверяйте его на прочность, не стесняйтесь искать ошибки или противоречия в коде и поддерживайте обратную связь для улучшения продукта. Мы действительно считаем, что Tartiflette станет лучше при тесном сотрудничестве с сообществом.
Как внести свой вклад в проект?
Tartiflette на Github [10];
Читайте документацию на tartiflette.io [11];
Отправляйте отзывы и предложения в Slack [12];
Присоединяйтесь к сообществу в Twitter [13].
Автор: MaxRokatansky
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/315785
Ссылки в тексте:
[1] «Web-разработчик на Python»: https://otus.pw/rkJs/
[2] тут: https://medium.com/dailymotion/tartiflette-graphql-api-engine-python-open-source-a200c5bbc477
[3] Vivendi dailymotion: https://www.dailymotion.com/fr
[4] GraphQL: https://graphql.org/
[5] мышление: http://www.braintools.ru
[6] Использовать asyncio: https://docs.python.org/3/library/asyncio.html
[7] SDL (Schema Definition Language): https://github.com/facebook/graphql/blob/master/spec/Section%203%20--%20Type%20System.md
[8] Zen of Python: https://www.python.org/dev/peps/pep-0020/#id3
[9] tartiflette.io: https://tartiflette.io/docs/tutorial/getting-started
[10] Tartiflette на Github: https://github.com/dailymotion/tartiflette
[11] tartiflette.io: https://tartiflette.io/
[12] Slack: https://join.slack.com/t/tartiflette-io/shared_invite/enQtNTcxMjI5NjQwMzg5LWQ4NzdlYWZjMjY0MjYzY2QxYTFkZTU2YWYxYTIwMTFkZWZkMDI5Y2FiYTI4NGIxZWM5YmY1ZmI5ZDBmMTUyMzc
[13] Twitter: https://twitter.com/dailymotionEng
[14] Источник: https://habr.com/ru/post/449526/?utm_campaign=449526
Нажмите здесь для печати.