Atlas: три направления использования фреймворка для .NET-инженеров

1 августа
Atlas: три направления использования фреймворка для .NET-инженеров
DataArt выложил Atlas Framework для разработки облачных приложений на GitHub под лицензией Apache 2.0.

Atlas позволяет обеспечить непрерывную интеграцию и доставку кода с первого дня разработки, помогает выбрать, развернуть и настроить основные инструменты миграции в облако. Он совместим с .NET Standard и может быть полезен и в реальных бизнес-проектах, и в качестве площадки для обучения и испытания новых интеграций.

Мы создали Atlas, внимательно изучив сложности, возникающие в проектах наших клиентов. Бизнесу использование готового фреймворка позволяет сократить время разработки и избежать рисков при миграции системы в облако или добавлении нового функционала. Инженерам может быть интересен сам код Atlas: организация модулей, абстракции, использование сторонних библиотек.

Никита Козлов, Solutions-архитектор DataArt и один из создателей проекта, рассказал о трех основных направлениях возможного использования Atlas:

  1. Поддержка нескольких платформ

    При разработке на языке C# в качестве рантайма мы можем говорить о .NET Framework или о более современном кроссплатформенном .NET Core. Статей о том, как мигрировать проект с .NET Framework на .NET Core, достаточно много. Тем не менее, найти на GitHub хороший пример, позволяющий понять, с чем реально предстоит столкнуться при такой миграции, очень сложно. Как правило, авторы рекомендаций используют простые приложения, непохожие на системы, с которыми приходится иметь дело в жизни. Atlas помогает разобраться, как параллельно поддерживать оба фреймворка и чем такая попытка чревата.

    Сам Atlas изначально разрабатывался под .NET Framework 4.5.2, позже была добавлена совместимость с .NET Standard 2.0 — проект позволяет подробно рассмотреть, как это было сделано.

  2. Песочница для новых интеграций

    Я сам с удовольствием пользуюсь кодом Atlas в качестве песочницы. Здесь есть готовые компоненты, к которым можно добавлять новую функциональность, пробовать новые библиотеки. При этом у Atlas — готовое ядро, например, с выстроенными механизмами обработки исключений и логирования, что позволяет проверить нового вендора, не отвлекаясь на частности. 

    Допустим, у нас есть брокер сообщений и несколько сервисов. Один сервис отправляет сообщение, другой его получает и что-то делает. Допустим, вы пользовались RabbitMQ, а при переезде в облако решили попробовать Azure Service Bus. Для тестирования новой интеграции удобно иметь готовое окружение — Atlas позволяет быстро поднять несколько сервисов по шаблону. Интеграция происходит через сторонние компоненты, в Atlas уже есть подходящие абстракции. Остается подложить правильную реализацию. 

    Atlas дает возможность познакомиться и опробовать различные архитектурные паттерны при разработке ПО, например: корреляция вызовов, структурное логирование и т. д.

  3. Code conventions

    На старте проекта Atlas позволяет согласовать общее видение разработки в только что сформированной команде: договориться, как разбивать код на проекты, где размещать ту или иную функциональность и т. д. Стандартов он, разумеется, не навязывает, но дает площадку, от которой можно оттолкнуться. Начать и понять, что конкретно вас не устраивает, намного эффективнее, чем согласовывать стандарты внутри команды с нуля.

    Мы будем всячески приветствовать улучшения проекта со стороны разработчиков и приглашаем всех делиться опытом его использования.