はじめに
2020年10月 ThoughtWorks の Technology Radar Volume 23 の要約です。
主に Adopt(採用を強くおすすめ)について見ていきます。
Techniques
1. dependency drift fitness function
依存性ドリフト適合度関数は、リリースパイプラインで依存関係のドリフトを検出することで、アプリケーションの依存関係を適切に保ちます。
依存性ドリフトの検出は、アプリケーションが依存するライブラリの依存関係を追跡し、新しいバージョンや脆弱性の存在を通知します。依存性ドリフトの検出ツールにはDependabotやsnykなどがあります。
Dependabot は package.json などのマニフェストファイルから依存するライブラリのバージョン更新を検出して Pull Request を自動で作成します。
snyk も同様にマニフェストファイルから依存するライブラリの脆弱性やライセンスポリシー、アップデートの通知を行います。
これらのツールをリリースパイプラインの中に組み込みアプリケーションが望ましい特性から遠ざかっているかどうかを知らせてくれる実行可能な関数として使うという手法です。
2. Run cost as architecture fitness function
クラウドプロバイダを利用している場合のランニングコストを推定、追跡、予測を適合度関数として自動化する。
例えばサーバーレス環境におけるAPIコールの価格は、アプリケーションのアーキテクチャの進化に合わせて動的に変動します。
サービスの実行コストを観察し、期待されていたものや許容範囲からの逸脱が見られた場合には、アーキテクチャを進化させるべきかどうかを検討できるようにします。 そしてこれらのコストの観察と計算を自動化された機能として実装します。
3. security policy as code
Infrastructure as Code(IaC) と同じようにセキュリティポリシーもコードとして扱います。
システムを脅威や混乱から保護するためのルールや手順であるセキュリティポリシーをコードとしてバージョン管理下に置いたり、パイプラインに自動検証を導入したり、環境に自動的にデプロイしたり、パフォーマンスを観察・監視したりするなどの実践を行うことを意味しています。
Open Policy AgentといったツールやIstioのような統合プラットフォームにおいて、Policy as Code の手法を使うことをおすすめします。
4. Tailored service templates
新しいサービスを迅速に開始するために使用できるテーラーメイドのサービステンプレートを作成します。 テンプレートは新しいサービスをブートストラップするための賢明なデフォルトを提供し、サービスを周囲のインフラストラクチャとうまく動作させるために必要な多くのセットアップを不要にします。
テンプレートには、ウェブフレームワーク、ロギング、モニタリング、ビルド、パッケージング、デプロイのアプローチなどのデフォルトのセットを定義し、技術的な決定を一元化するための軽量なガバナンス機構を維持しつつ、協調的な進化を促します。
Platforms
Adopt は無し。
Trial としては以下が挙げられています。
- 27 Azure DevOps
- 28 Debezium
- 29 Honeycomb
- 30 JupyterLab
Tools
42. Airflow
Airflowはプログラムでワークフローを作成、スケジュール設定、監視するためのプラットフォームです。
JOBスケジューラで有向非周期グラフ(DAG)でJOBネットが組めます。
43. Bitrise
Bitrise はモバイルアプリケーションのためのCI/CDツールです。
開発者のラップトップからまで、
モバイルアプリケーションの構築、テスト、アプリストア公開までの工程を構築済みのステップのセットとして提供します。
44. Dependabot
dependency drift fitness function の中でも述べた Dependabot です。
依存関係を最新の状態に保つために利用できるツールで、スムーズな GitHub との統合を提供し、依存関係を最新バージョンに更新するためのプルリクエストを自動的に送信してくれます。
GitHub を使っていなくても、ビルドパイプライン内で Dependabot ライブラリを使うことができます。
45. Helm
Helm は Kubernetes のパッケージマネージャです。
Kubernetes のYAML設定ファイルが Chart という形で雛形としてパッケージ化されてリポジトリで公開されているため、これを元にしてKubernetesアプリケーションの管理を大幅に簡略化することができます。
46. Trivy
Trivy はコンテナイメージの脆弱性スキャナです。
DockerHub の公式イメージでも、脆弱性を含むものが公開されている場合があります。Trivy はコンテナイメージをスキャンし、OSパッケージの脆弱性やアプリケーションの依存関係定義から脆弱性を発見することができます。
Languages &Frameworks
76. Arrow
Arrow は Kotlin の型付き関数型プログラミングライブラリです。
Datatypes として Option
Either
Try
のようなデータ型、型クラス、Functor
Applicative
Monad
Monoid
Eq
といった型クラスなどの抽象化が含まれています。
jest-when
JestはJavaScriptのテストフレームワークですが、jest-when はこのモック関数を補完するライブラリです。
以下のような使い方ができます。
import { when } from 'jest-when' const fn = jest.fn() when(fn).calledWith(1).mockReturnValue('yay!') expect(fn(1)).toEqual('yay!')
まとめ
2020年10月 ThoughtWorks の Technology Radar Volume 23 の内容をかいつまんで紹介しました。
コンテナ関連とセキュリティ関連が多くリストアップされた印象です。
オリジナルは以下で読むことができます。