エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

DevOps Tooling Landscape の翻訳

経緯

結構知らないツールが多かったので、気になって翻訳してみた

原文

DevOps Tooling Landscape - DEV Community

独自意訳・翻訳

「DevOps」は、ソフトウェア開発とITオペレーションを統合することで、コラボレーションを向上させ、迅速な配信を実現するための人気のあるアプローチです。
そのためには、自動化やワークフローの合理化など、様々なソフトウェアツールが使用されます。
この記事では、DevOpsツールのカテゴリーと、各カテゴリーにおける人気のあるツールについて紹介しており、組織に最適なツールを選択するためのヒントも提供しています。

DevOpsツールは、様々な分野に分類され、ソフトウェア開発とデプロイメントプロセスにおいて特定の目的を果たす。
主要なカテゴリーは以下の通り

  • 継続的インテグレーション(CI)
  • 継続的デリバリー(CD)
  • インフラストラクチャ自動化
  • コンテナ化
  • テストツール
  • モニタリングとロギング
  • コラボレーションとコミュニケーション・ツール

それぞれが、開発、テスト、デプロイメント、監視、コラボレーションの分野で活用される。

  • 継続的インテグレーション(CI)

    • Jenkins
      利点の1つは、オープンソースであること。無料で使用でき、開発者の大規模で活発なコミュニティが常に改善と新機能の追加を行っていること。そのため、小規模なスタートアップから大企業まで、あらゆる規模のチームに最適な選択肢となっている。
      Jenkinsは高度なカスタマイズが可能で、ユーザーは特定のニーズに合わせてカスタムプラグインや統合機能を作成することができます。これらすべての要因が、DevOpsの世界におけるJenkinsの人気と成功に寄与しています。
    • CircleCI
      使いやすさとビルド時間の速さで知られるクラウドベースのCIツールです。
      JavaRubyPython、Node.jsなど、複数のプログラミング言語をサポートしています。
      CircleCIは、GitHubやBitbucketなどの多くの一般的なDevOpsツールと統合されており、AWSGoogle Cloud、Microsoft Azureなどの一般的なクラウドプラットフォームへの継続的なデプロイを提供します。
    • Travis CI
      クラウドベースのCIツールで、セットアップが簡単で使い勝手が良い。
      特にオープンソースプロジェクトに適しており、公開リポジトリ用の無料プランが提供されている。
    • GitLab CI/CD
      単一のプラットフォームで完全なDevOpsソリューションを提供する、強力な統合CI/CDツールです。CI/CD機能に加えて、バージョン管理、課題追跡、コードレビューなどの機能も備えています。カスタマイズ性が高く、クラウドベースとセルフホストオプションの両方を提供している。
    • Bamboo
      Jiraをはじめとする人気のDevOpsツールを手がけるAtlassian社のCIツールです。
      信頼性と拡張性で知られており、大規模な組織に適した選択肢となっています。
  • 継続的デリバリー(CD)ツール

    • Ansible
      シンプルさと柔軟性で際立つ継続的デリバリー(CD)ツール。
      オープンソースで、さまざまなオペレーティングシステムクラウドプラットフォームをサポートしています。ソフトウェアの構築、テスト、デプロイメントなど、CDプロセスに関わるさまざまなタスクを自動化することができ、シンプルで直感的なインターフェースを備えているため、簡単に学習して使用することができます。
    • Chef
      インフラ管理を自動化するために作られたCDツールです。
      システムの望ましい状態を定義するために「レシピ」と呼ばれる宣言的言語を使用します。
    • Puppet
      インフラストラクチャーをコードとして管理するために使用されるCDツールです。
      環境全体のインフラ管理を自動化・標準化することができます。
      強力な自動化機能と拡張性により、Puppetは複雑なインフラを持つ大規模な組織でよく使用されています。
    • SaltStack
      規模に応じた迅速かつ効率的な自動化を可能にする強力なCDツールです。
      プッシュ型モデルでインフラを管理するため、動的な環境に最適です。SaltStackの柔軟でモジュール化されたアーキテクチャにより、さまざまなオペレーティングシステムクラウドプラットフォームを簡単に管理することができます。また、暗号化や認証などのセキュリティ機能を内蔵しており、安全性も高いです。
    • Spinnaker
      クラウドネイティブアプリケーション向けに特別に設計されたオープンソースのCDツールです。
      カナリアデプロイメントやブルー/グリーンデプロイメントなどの高度なデプロイメント戦略を提供し、チームが自信を持って新機能やアップデートをリリースできるようにします。
  • インフラ自動化ツール

    • Terraform
      HashiCorpが提供するインフラ自動化ツールです。
      シンプルな宣言型言語を使ってインフラをコードとして定義することができ、さまざまなクラウドプラットフォームやサービスをサポートしています。
    • AWS CloudFormation
      AWSプラットフォームに特化したインフラストラクチャ自動化ツールです。
      JSONYAMLテンプレートを使ってAWSリソースを定義・管理することができます。
    • HashiCorp Packer
      AWS、Azure、VMwareなど、さまざまなプラットフォーム向けのマシンイメージを作成するためのツールです。マシンイメージをコードとして定義することができ、幅広い構成オプションに対応しています。
  • コンテナ化ツール

    • Docker
      世界中の数百万人の開発者に使用されている、最も人気のあるコンテナ化ツールです。コンテナの作成、管理、デプロイを簡単かつ効率的に行うことができ、DevOpsチームにとって最適な選択肢です。
    • Kubernetes
      オープンソースのコンテナオーケストレーションツールで、コンテナ化されたアプリケーションを大規模に管理するために使用されます。スケーラビリティ、回復力、および多くの一般的なDevOpsタスクを自動化する機能で知られています。
    • OpenShift
      Kubernetesの上に構築された、Red Hatのコンテナプラットフォームです。CI/CDパイプラインの組み込み、セキュリティの強化、複数のプログラミング言語フレームワークのサポートなどの追加機能を提供します。
    • LXC/LXD
      アプリケーションのための軽量で分離された環境を作成するために使用されるLinuxコンテナ化ツールです。1台のサーバーで複数のアプリケーションを実行するのに適しており、強力な分離とセキュリティ機能を備えています。
  • テストツール

    • Selenium
      ブラウザのアクションやテストスクリプトを自動化することができる、Webアプリケーション向けの人気の高いテストツールです。他のDevOpsツールと簡単に統合できるため、DevOpsチームにとって多用途な選択肢となります。
    • JUnit
      開発者が簡単に自動テストを書いて実行できるように設計されています。
      JUnitは、テストケースと期待される結果を定義するために使用できるアノテーションアサーションのセットを提供し、JenkinsやMavenなどの他のDevOpsツールと容易に統合することができる。
    • Postman
      HTTPリクエストとレスポンスを簡単に送受信することができるAPIテストツールです。
      自動テスト、他のDevOpsツールとの連携、チームメンバー間のコラボレーションをサポートします。
  • 監視・ログツール

    • Prometheus
      アプリケーションやシステムからメトリクスを収集し、照会するために使用されるオープンソースの監視およびアラートシステムです。拡張性、柔軟性、他のツールとの容易な統合により、DevOpsチームに人気のある選択肢です。
    • Grafana
      DevOpsチームが様々なデータソースのメトリクスをユーザーフレンドリーでカスタマイズ可能な方法で分析・表示できる、強力なオープンソースのデータ可視化・監視ツールです。クラウドサービス、データベース、監視ツールなど、幅広いデータソースをサポートしており、監視やトラブルシューティングに多用途に使用できます。また、Grafanaは柔軟なダッシュボードエディタを提供しており、複数のパネルやウィジェットを使ったカスタムダッシュボードを作成できるため、ユーザーはニーズに合った方法でデータを表示することが可能です。
    • ELK Stack
      Elasticsearch、Logstash、Kibanaという3つのオープンソースツールの組み合わせで、ログの管理・分析に使用されます。様々なソースからログを収集、保存、分析することができ、強力な検索と可視化機能を提供します。
    • Nagios
      システムリソース、アプリケーション、およびサービスを追跡する、一般的に使用されているオープンソースの監視ツールです。何か問題が発生したときにアラートと通知を提供し、プラグインを通じて他のDevOpsツールと簡単に統合することができます。
  • コラボレーション・コミュニケーションツール

    • Slack
      メッセージングプラットフォームで、チームがチャット、ファイル共有、効果的な共同作業を行うことができます。
    • Microsoft Teams
      チームコミュニケーション、コラボレーション、プロジェクト管理に使用されるメッセージングおよびコラボレーションプラットフォームです。会話をチャンネルにまとめたり、ファイルを共有したり、Azure DevOpsなど他のMicrosoftツールと統合することができます。
    • Trello
      タスクやプロジェクトの整理・管理に使用されるプロジェクト管理ツールです。ビジュアルボードとカードを使用して、作業の整理と優先順位付けを支援し、SlackやJiraといった他のDevOpsツールと統合しています。
    • Asana
      タスク、プロジェクト、ワークフローを管理・追跡するために使用されるプロジェクト管理ツールです。プロジェクトテンプレート、カスタムフィールド、タスクの依存関係などの機能を提供し、SlackやGitHubなどの他のDevOpsツールと統合することができます。
    • GitHub
      バージョン管理やコードレビューに使用される人気のコードホスティングおよびコラボレーションプラットフォームです。他のチームメンバーとのコードのコラボレーション、変更点の追跡、JenkinsやCircleCIなどの他のDevOpsツールとの統合が可能です。
    • GitLab
      コラボレーションとプロジェクト管理機能を内蔵したオールインワンDevOpsプラットフォームです。課題追跡、マージリクエスト、コードレビューなどの機能を提供し、JenkinsやPrometheusなどの他のDevOpsツールとも統合されています。

DevOpsツールを正しく選択することは、かなり困難な作業になる。
チームに適したDevOpsツールを選択するためのヒントとして、以下がある。

  • チームのニーズを把握する
    ニーズと要件を特定することで、選択肢を絞り込み、チームのワークフローとプロセスに最適なツールを選ぶ
  • ツールの機能を評価する
    バージョン管理、継続的インテグレーション、デリバリー、テスト、モニタリングなど、チームにとって最も重要な特徴や機能について評価する
  • 使いやすさを考慮する
    使い方が難しければ、チームはそのツールを採用するのに苦労する。学習が簡単で、ユーザーフレンドリーで、明確なドキュメントがあるものを探す
  • 他のツールとの統合を探す
    DevOpsツールは、複数のツール連携させることで最大限の効果を発揮することがある。チームがすでに使用している他のツールと統合できるものを探す。
  • サポートとコミュニティ
    堅牢なドキュメント、迅速なサポート、質問への回答やベストプラクティスの共有を支援するユーザーによる活発なコミュニティがあることは、とても重要

感想

かなりの長編で疲れた。。。
流石にこれだけ長いと、概要把握しきれないから、自分で翻訳書けながら、添削してた。

知らんツールが結構あった。※知ってるツールもあったけど。
そのうち、Notionも追加される気がする。

個人的には、以下が気になってる。

以外にJIRAは出てこなかったな。
無料なものだけ紹介しているのかな?
Redmineとかあっても良さそうだけど、海外での認知度が低いのだろうか? あとは、JP1とか上がりそうだけど、やっぱり日本固有なんかな?
そういえば、Backlogとかキントーンもそうだな。

さすがに、SVNは出てこなかったな。
マージで苦労させられてるから、あったらどうしようって思った。

wikiとかも、たまに現場で見かけるけど、ここには上がってこなかった。