В быстро меняющемся мире технологий использование передовых решений имеет решающее значение для любой организации, стремящейся оставаться впереди конкурентов. В SleekFlow мы осознаем важность внедрения инновационных подходов, и одним из таких примеров является использование Pulumi Infrastructure as Code (IaC). В этом сообщении блога мы подробно рассмотрим, как Pulumi сыграл важную роль в нашем росте и как он помог нам эффективно и действенно управлять нашей сложной инфраструктурой.

Давайте посмотрим на наш сценарий развертывания GitHub Actions с Pulumi. Просто и лаконично.

name: Pulumi Deploy - Dev

on:
  push:
    branches:
      - dev

concurrency: dev

env:
  NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages

jobs:
  update:
    name: Update
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up .NET Core
        uses: actions/setup-dotnet@v3
        with:
          dotnet-version: '7.0.x'
          include-prerelease: false

      - uses: actions/cache@v3
        with:
          path: ${{ github.workspace }}/.nuget/packages
          key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
          restore-keys: |
            ${{ runner.os }}-nuget-

      - name: Restore with dotnet
        run: dotnet restore

      - name: Build with dotnet
        run: dotnet publish -c Release

      - name: Validate krakend.json
        working-directory: ./Sleekflow.KrakenD.Generator/
        run: dotnet run

      - name: Build images locally
        run: |
          docker-compose -f docker-compose.common.yml build
          docker-compose -f docker-compose.yml build

      - name: Deploy Everything
        uses: pulumi/actions@v4
        with:
          command: up
          stack-name: dev
          work-dir: ./Sleekflow.Infras/
        env:
          PULUMI_ACCESS_TOKEN: ${{ secrets.PULUMI_ACCESS_TOKEN }}
          ARM_CLIENT_ID: ${{ secrets.ARM_CLIENT_ID }}
          ARM_CLIENT_SECRET: ${{ secrets.ARM_CLIENT_SECRET }}
          ARM_SUBSCRIPTION_ID: ${{ secrets.ARM_SUBSCRIPTION_ID }}
          ARM_TENANT_ID: ${{ secrets.ARM_TENANT_ID }}

1. Укрощение сложной инфраструктуры с помощью IaC

Инфраструктура SleekFlow состоит из более чем 20 служб, управления шлюзом API и более 100 ресурсов Azure, распределенных по трем средам. Управление такой сложностью может быть сложной задачей, но с Pulumi IaC мы можем управлять 80% нашей инфраструктуры в виде кода. Этот подход упрощает развертывание, позволяет лучше контролировать наши ресурсы и снижает риск человеческой ошибки в процессе развертывания. Это также способствует согласованности между средами, упрощая общее управление.

2. Программирование нашей микросервисной архитектуры для обеспечения масштабируемости

Наша микросервисная архитектура играет жизненно важную роль в обеспечении того, чтобы наши приложения оставались масштабируемыми и адаптируемыми к нашим растущим потребностям. Pulumi IaC позволяет нам рассматривать эти микросервисы как программируемые строительные блоки, что позволяет нам с легкостью определять, развертывать и управлять нашими сервисами. Этот подход имеет решающее значение для поддержания гибкой и масштабируемой архитектуры, которая может развиваться по мере изменения наших бизнес-требований.

3. Улучшение адаптации и совместной работы с документацией через код

Поскольку наша команда продолжает расти, мы осознаем важность четкой и краткой документации для облегчения адаптации и эффективного сотрудничества. С Pulumi IaC мы можем «документировать с помощью кода», гарантируя, что наша инфраструктура не только хорошо документирована, но также контролируется версиями, проста для понимания и доступна как для новых, так и для существующих членов команды. Этот метод способствует обмену знаниями, сокращает время обучения новых сотрудников и способствует развитию культуры сотрудничества.

4. Использование C# и экосистемы .NET для выразительного кода инфраструктуры

Одним из выдающихся преимуществ Pulumi по сравнению с такими альтернативами, как Terraform, является возможность использовать C# для определения нашей инфраструктуры. Это преимущество позволяет нам использовать всю мощь экосистемы .NET, включая циклы, условные операторы и переменные среды. Используя C#, мы можем создавать более выразительный, удобный в сопровождении и повторно используемый код инфраструктуры. Это позволяет нашим разработчикам работать более эффективно и последовательно, снижая вероятность ошибок и обеспечивая надежность и надежность нашей инфраструктуры.

5. Расширенная поддержка адаптеров для комплексного управления инфраструктурой

Pulumi IaC может похвастаться впечатляющим набором адаптеров, включая Azure, Auth0 и многие другие, используемые SleekFlow. Его поддержка Azure Native почти полностью совместима с шаблонами Azure ARM, что гарантирует, что мы сможем быстро внедрить новейшие функции Azure и оставаться на шаг впереди. Эта всесторонняя поддержка адаптеров означает, что мы можем управлять всей нашей инфраструктурой, используя единый унифицированный подход, упрощая управление и обеспечивая согласованность всего нашего стека технологий.

6. Надежное управление состоянием для повышения видимости и контроля

Одним из часто упускаемых из виду аспектов управления инфраструктурой является управление состоянием, с которым Pulumi справляется исключительно хорошо. Возможности управления состоянием Pulumi позволяют нам отслеживать изменения в нашей инфраструктуре и управлять ими, обеспечивая повышенную прозрачность и контроль над нашими ресурсами. Это позволяет нам заранее выявлять потенциальные проблемы, снижать риск сбоев при развертывании и гарантировать, что наша инфраструктура остается в стабильном и предсказуемом состоянии.

7. Ожидание политики как поддержки кода для поставщиков C# и упор на проверки кода

Хотя политика Pulumi в отношении поддержки кода для поставщиков C# еще недоступна, мы с нетерпением ждем ее появления, поскольку она позволит нам программно применять лучшие практики и политики безопасности. Тем временем наш процесс проверки кода инфраструктуры гарантирует, что мы поддерживаем высокий уровень качества и придерживаемся лучших практик. Эти проверки кода способствуют сотрудничеству, раннему выявлению потенциальных проблем и формированию культуры постоянного совершенствования в нашей команде.

8. Интеграция Pulumi в GitHub Actions для упрощения развертывания

Одним из наиболее значительных преимуществ внедрения Pulumi IaC является возможность его интеграции с популярными инструментами CI/CD, такими как GitHub Actions. Плавно включив Pulumi в наш конвейер GitHub Actions, мы можем автоматизировать развертывание и управление нашей инфраструктурой, еще больше снизив риск человеческой ошибки и повысив общую эффективность.

8.1. Автоматическое развертывание инфраструктуры
Когда изменения в коде нашей инфраструктуры помещаются в репозиторий, действия GitHub автоматически запускают развертывание Pulumi. Этот автоматизированный процесс обеспечивает постоянное обновление и управление нашей инфраструктурой, позволяя нашим разработчикам сосредоточиться на написании кода приложения, не беспокоясь о ручном развертывании изменений инфраструктуры.

8.2. Улучшенная совместная работа и контроль версий
Интеграция Pulumi с GitHub Actions также улучшает совместную работу членов команды, поскольку изменения инфраструктуры управляются и отслеживаются с помощью той же системы контроля версий, что и код нашего приложения. Этот унифицированный подход к контролю версий упрощает процесс разработки, облегчая членам команды совместную работу как над кодом приложения, так и над обновлениями инфраструктуры.

8.3. Повышенная безопасность и соответствие требованиям
Используя GitHub Actions для управления развертываниями Pulumi, мы можем гарантировать, что наша инфраструктура соответствует необходимым политикам безопасности и требованиям соответствия. Процесс автоматического развертывания можно настроить для принудительного выполнения определенных проверок и проверок, предотвращения несанкционированных изменений и обеспечения безопасности и соответствия нашей инфраструктуры.

8.4. Ускоренная обратная связь
Интеграция Pulumi с GitHub Actions обеспечивает более быструю обратную связь для наших разработчиков. Когда изменения инфраструктуры передаются в репозиторий, автоматический процесс развертывания обеспечивает немедленную обратную связь об успешном или неудачном развертывании. Эта быстрая обратная связь помогает нашим разработчикам быстро выявлять и устранять проблемы, обеспечивая стабильность и надежность нашей инфраструктуры.

Заключение

Инфраструктура Pulumi как код изменила правила игры для SleekFlow, помогая нам эффективно управлять нашей сложной инфраструктурой, оптимизировать развертывание и поддерживать масштабируемую и гибкую микросервисную архитектуру. Интеграция Pulumi с GitHub Actions еще больше улучшила наши процессы управления инфраструктурой, позволив автоматизировать развертывание, улучшить совместную работу, повысить безопасность и соответствие требованиям. Используя мощь C#, экосистему .NET и обширную поддержку адаптеров Pulumi, мы можем оставаться впереди в конкурентном технологическом ландшафте и продолжать предлагать инновационные решения для наших клиентов. По мере того, как мы растем и развиваемся, мы по-прежнему уверены, что Pulumi IaC и его интеграция с GitHub Actions будут продолжать играть решающую роль в нашем технологическом стеке, способствуя нашему успеху и продвигая нас к новым высотам.

Посетите нас на https://sleekflow.io/
Посетите нас на https://www.linkedin.com/company/sleekflow/
Посетите нас на https://sleekflow. medium.com/