Промышленность приняла статически напечатанные языки, но дизайн API остается двадцать лет в прошлом. Разработка в схеме разработка представляет возможность потянуть дизайн API в настоящее время.
Два десятилетия назад было широко утверждено, что языки динамического программирования были более продуктивными, потому что вам не нужно было проводить время с видами типа. Единственная причина, потом, чтобы использовать статически напечатанный язык, был для лучшей производительности. Истина рассказала, в то время этот аргумент имел некоторую достоверность, и многие организации решили отойти от Javas мира и к питонам. Однако это было в значительной степени из-за определенных статически набранных языков в широком использовании, и из-за отсутствия инструментов, доступных в то время, чтобы поддержать их. К настоящему времени эта инструмента стала намного более широко доступной. Фактически, отрасль со временем узнала о том, что статически напечатанные языки фактически включают целый хост новых возможностей для инструментов, и в конечном итоге, эта инструмента может значительно улучшить производительность разработчика и ремонтопригодность кодовой базы. Функции редактора, такие как автоматическое завершение и прыжки на определение, делают программисты гораздо более продуктивными, и в основном возможны только на статически набранных языках. Мы видим, что Teamptcript снимает, даже если оно не имеет преимущественно производительности через JavaScript, потому что оно более продуктивно. Кроме того, большие базы кода становятся легкими для управления, когда все могут иметь некоторые типизированные причину для каждого другого кода, что привело к возможности добавлять функции быстрее, с меньшим количеством ошибок. Другими словами, преимущество поддержания подписей типа теперь хорошо перевешивает стоимость.
Статус-кво для API все еще варьируется
Однако, когда дело доходит до сети API, в отрасли все еще двадцать лет. Большинство разработчиков продолжают полагаться на путь наименьшего сопротивления: определение спокойных услуг, полагаясь на JSON в качестве формата данных и HTTP в качестве транспортного протокола. Некоторые чувствуют, что динамически набрали JSON, а также свободно определенные стандарты отдыха, более продуктивны, чем альтернативы, или что кривая обучения, связанная с другими стандартами API, слишком крута. Однако аналогично динамическим языкам 20 лет назад, статус-кво развития API оставляет много места для улучшения. Разработка API сегодня подавляет свободную форму. Принципиально, это означает, что каждая компания — и каждая команда в каждой компании — что утверждает, что их услуги являются спокойными, на самом деле могут иметь совершенно разные стандарты проектирования API. Например, называемые соглашениями, страница и версию на богослужение и версию могут быть радикально отличными от одной команды по сравнению с другой. Зачастую команда может перегружать объект с ненужными полями и использовать непоследовательные типы данных. К сожалению, это вызывает ряд проблем.
APIFORM Freeform могут вызвать серьезные проблемы
Простота, чтобы понять, почему apis структурированы по-разному, наносит ущерб сервисной гастромобельности. Когда API конструированы по-разному, не всегда очевидно, как следует использовать услугу, предотвращая быстро и уверенно создавать приложения для создания команд.
Организации делают попытки стандартизировать структуру обслуживания, в основном путем гидов стилей API. Установка руководства в стиле — это головная боль в самом и сам по себе, либо требует команды для создания одного или выбора популярного. Команды и частные лица могут редко договориться о руководстве в стиле, поэтому это решение часто игнорируют и регулярно игнорируются в обзорах кода. В конечном итоге, даже если был внутренний консенсус по подходу к стилю, нет хорошего способа принуждать, монитора или лицевых API для приверженности.
Непосеченный подход к дизайну и техническому обслуживанию обслуживания имеет другой непреднамеренный эффект: нарушение изменений. В среде API Freeform вы не можете полностью понять воздействие ниже по потоку внесения изменений в договор. Это работает в противоположном направлении; Клиенты с обновленным видом на мир разговаривают с серверами, которые остаются нуждающимися в обновлении, в том числе во время обновлений Rolling, могут отправлять запросы, которые серверы не понимают. Там нет хорошего способа обойти это как организацию. Вы либо ожидаете, что услуга будет последовательно сломать пользователям, или вы разрабатываете какой-то внутренний процесс, чтобы лучше управлять изменениями в договоре. Многие команды не позволяют вообще разрабатывать изменения, выбирая вместо того, чтобы добавить только к их API, поскольку необходимо изменить. В любом случае, значительное время потрачено впустую на внутреннее общение, API-дрейф и пользователи все еще ломаются. В конечном счете, команды хотят и нуждаются в API эволюции, чтобы быть более строго управляемым.
Возможность для развития схемы
Пришло время в отрасли перейти от подхода к свободному фигуру к миру, где все API будут определены программно с схемами. Развитие на основе схемы решает многие проблемы, обобщенные выше. API гораздо проще для GROK и могут быть полагаться на один день. Организации могут устанавливать и поддерживать стандарты API в нескольких группах. Владельцы услуг могут внести изменения, которые им нужны для их обслуживания, с большим количеством структуры, чтобы предотвратить нарушение клиентов. Это уже серьезное улучшение, но полная возможность для схем для улучшения производительности разработчика намного больше. Подобно тому, как статически напечатанные языки позволили новый потенциал инструментов для улучшения производительности разработчика, основное обещание разработки приводчика схемы — это активы, которые схема может генерировать автоматически. Это тема достаточно большая, чтобы исследовать в другой статье, но достаточно сказать, полагаясь на схему может автоматизировать весь код котельной, необходимый для фактического взаимодействия с сервисами.
Сегодня протоколы API приводят к схему API иногда рассматриваются как то, что вы используете только в том случае, если эффективность. Таким же образом, которые набрали языки, необходимые инструменты для поддержки их усыновления, необходима инструментальная экосистема для поддержки использования протоколов API схемы.
Мы в Buf почувствуем, что лучший вариант, доступный сегодня для разработки на основе схемы, является протокол, буферы протокола (тема, которую мы исследуем в будущей статье), и мы усердно работаем на работе, создаем такую инструмент для поддержки организаций, использующих Protobuf, чтобы определить их услуги. Мы надеемся, что с таком видом инструментов команды будут смотреть на схемы API для всестороннего роста производительности, а не просто производительность.
Оригинал: «https://dev.to/buf/api-design-is-stuck-in-the-past-kj4»