Technology Radar vol.21(2019年11月版)を読む
Technology RadarのVol. 21(Nov. 2019)を読んだので、気になった項目をまとめて、感想を記録しておく。
読んで、やっておきたい事を挙げておく。
- マイクロフロントエンド: 洋書はBuilding Micro-Frontends, 2nd Editionと第二版が出ているので読んでおきたい。
- Apache ArrowsからでVavrをしっかり触っておきたい。
その他、気になった項目を感想と共に記載しておく。
Techniques
3. Micro frontends
マイクロフロントエンドの概要
-
マイクロサービスの成功とフロントエンドの課題:
- バックエンドのマイクロサービスは、独立したデプロイと維持を可能にし、チームの拡張に貢献しました。
- しかし、多くのチームがフロントエンドで大規模なモノリス(単一の巨大なアプリケーション)を構築し、マイクロサービスの利点を無効にしています。
-
マイクロフロントエンドの登場と普及:
- マイクロフロントエンドは、フロントエンド開発における複雑さを管理する手法として人気が高まっています。
- 複数の開発者やチームが同じユーザーエクスペリエンスに貢献する際に、このアーキテクチャが採用されています。
-
最新の動き:
- 今年6月に、この技術の創始者の一人が、マイクロフロントエンドに関するリファレンス記事を発表しました。
- この記事では、様々なウェブプログラミングメカニズムでの実装方法が示され、React.jsを使用したサンプルアプリケーションも構築されています。
-
今後の見通し:
- より大規模な組織が、複数のチームにわたるUI開発を細分化しようと試みるにつれて、マイクロフロントエンドはさらに人気を博すと予想されます。
感想: この前後数回に渡ってAdoptが続いている。まだマイクロフロントエンドにできていないから6年近く遅れている。
Trial
8. Binary attestation (バイナリ証明)
-
背景と必要性:
- コンテナ利用の普及、自律的チームによる大規模サービスデプロイ、および継続的デリバリーの高速化に伴い、デプロイ時の自動化されたソフトウェアセキュリティ制御の必要性が高まっています。
-
バイナリ証明とは:
- デプロイ時のセキュリティ制御を実装するための手法です。
- デプロイされるバイナリイメージが、承認されたものであることを暗号技術を用いて検証します。
-
仕組み:
- 証明者、自動化されたビルドプロセス、またはセキュリティチームが、必要な品質チェックとテストに合格し、デプロイが承認されたバイナリに署名します。
-
関連ツール・サービス:
- GCP Binary Authorization (Grafeasによって有効化) や、in-toto、Docker Notaryなどのサービスやツールが、デプロイ前の証明作成とイメージ署名検証をサポートしています。
感想: こんなのが必要になる業界やシステムってどんなものなのだろうか。
Assess
22. JAMstack
-
起源とトレンド:
- 数年前にネイティブモバイルアプリ向けのBackend-as-a-Service(BaaS)として始まったトレンドが、現在ではウェブアプリケーションで人気を集めています。
-
JAMstackとは:
- JavaScript、API、Markupの頭文字を取ったもので、主にAPIやSaaS製品に依存するウェブアプリケーションに豊かなユーザーエクスペリエンスを提供するアプローチです。
-
デプロイメントモデル:
- HTMLはウェブブラウザまたはビルド時にレンダリングされるため、デプロイメントモデルは完全に静的に生成されたサイトと同じであり、その全ての利点(例: 高速な表示、高いセキュリティ、容易なスケーリングなど)を享受できます。
感想: JAMstackはこの頃か。
Hold
25. 10x engineers (10xエンジニア)
-
議論の対象:
- 「10xエンジニア」という古い概念が、最近になって厳しく見直されています。
-
従来の認識と問題点:
- 広く共有されたTwitterのスレッドでは、反社会的で有害な行動を容認してでも、非常に高い個人成果を上げるエンジニアを企業は維持すべきだという見解が示唆されました。
-
本質的な価値:
- しかし、真に優れたエンジニアは、個人の成果だけでなく、素晴らしいチームで働くこと、そして素晴らしいチームを構築することにモチベーションを見出すというのが一般的な認識です。
感想: そもそも元ネタの研究論文をちゃんと読まない低レベルな人達の用語なんだよな。10xの人は、最低のプログラマと比較して10xなだけで、普通のプログラマと比較すると2xか3xぐらいしかない。因みに最低のプログラマは、普通の人の1/2xか1/3xしかない。つまり10xは、最低の人よりも普通の人は3xで、凄腕のプログラマは普通の人の3xだから、最大で約10xぐらい差があるよっていう論文だった。
10xって言う人は都市伝説に騙される情弱ってレッテルが広まるといいな。
27. Lambda pinball (Lambdaピンボール)
-
課題の背景:
- 数年前からプロジェクトでサーバーレスアーキテクチャが構築されてきましたが、その過程で「分散モノリス」を構築してしまうという問題に陥りやすいことが判明しました。
-
Lambdaピンボールとは:
- リクエストが複雑なクラウドサービスのグラフ(ラムダ、バケット、キューなど)を次々に経由していくうちに、重要なドメインロジックが見失われてしまう状態を指します。
- これは、個々のサーバーレスコンポーネントが複雑に絡み合い、全体として単一の巨大なサービスのように振る舞う「もつれたウェブ」のようなアーキテクチャを示しています。
感想: 表現が面白い。確かにそんな感じになったマイクロサービスがあってコンテナに切り替えたな。この言葉を昔に知っていたら、そのチームの暴走を止めたのに。
PLATFORMS
Trial
29. Apache Flink
-
採用の拡大:
- 2016年の最初の評価以来、Apache Flinkの採用が広がり続けています。
-
主要な役割:
- 主要なストリーム処理エンジンとして認識されており、バッチ処理や機械学習の分野でも成熟度を増しています。
-
際立った特徴:
- 他のストリーム処理エンジンとの重要な違いは、アプリケーションの状態の一貫したチェックポイントを使用することです。
-
耐障害性:
- 障害発生時でも、アプリケーションは再起動され、最新のチェックポイントから状態が読み込まれるため、障害がなかったかのように処理を継続できます。
- これにより、耐障害性のための外部システム構築・運用の複雑さが軽減されます。
-
利用状況:
- 多くの企業が、データ処理プラットフォームの構築にFlinkを利用しています。
感想: 今もTrialのまま。この手のミドルウェアは決定版はないのかな。
32. Mongoose OS
-
継続的な推奨:
- Mongoose OSは、オープンソースのマイクロコントローラOSおよび組み込みファームウェア開発フレームワークとして引き続き好まれています。
-
埋めるギャップ:
- 組み込みソフトウェア開発において顕著なギャップを埋める存在です。具体的には、プロトタイピング向きのArduinoファームウェアと、ベアメタルマイクロコントローラが持つネイティブSDKとの間のギャップを解消します。
-
関連プラットフォームの活用:
- チームは、Cesantaが提供する新しいエンドツーエンドのデバイス管理プラットフォームであるmDashを、小規模な新規ハードウェアプロジェクトで成功裏に利用しました。
感想: こんなのがあったんだ。ESP32-C6のようなRISC-Vもサポートしているみたい。ちょっと触ってみたい。
33. ROS
感想: 2024年10月でも、ROS2がTrialになってたな。
Assess
34. AWS Cloud Development Kit
感想: 2021年4月にTrailで進行なし。OpenTofuでいいかな。
40. Fission
感想: Knativeみたいなもの。どっちもこの頃のAssessのまま。Assessは慌てて飛びつかなくもいいのかな。
42. GraalVM
-
開発元と目的:
- Oracleによって開発されたユニバーサル仮想マシンです。
- JVM言語(Javaなど)、JavaScript、Python、Ruby、R、およびC/C++やその他のLLVMベースの言語で書かれたアプリケーションの実行を目的としています。
-
主な利用方法と利点:
- 最も基本的な利用法としては、JVMやその他のサポートされている非JVM言語のための高性能なVMとして機能します。
- さらに、パフォーマンスへの影響がほとんどないポリグロットアプリケーション(複数のプログラミング言語を組み合わせて記述されたアプリケーション)の開発も可能です。
-
コミュニティでの反応:
- Javaコミュニティで大きな注目と期待を集めています。
- Micronaut、Quarkus、Helidonなど、多くのJavaフレームワークがすでにGraalVMの利点を活用しています。
感想: このまま、2025年現在でもAssessのまま。GraalPyは、PyTorchやSciPyを動かす事を目標としているけどいつになる事やら。バベルの塔に住み続けたい人達向けの印象が強い。Javaのリフレクションから離れないといけないみたいだし。
Tools
Adopt
51. Commitizen
- 目的: Gitのコミットプロセスを効率化するためのシンプルなツールです。
-
機能:
- コミットに必要なフィールドの入力を促します。
- コミットメッセージを適切にフォーマットします。
-
利点:
- 時間節約に貢献します。
- コミットフックによる後のリジェクト(コミットの拒否)を回避するのに役立ちます。
感想: フォーマットに従っているからって、 git logで見た時に有用なコメントって保証されている訳ではないんだよね。最低限、Jiraとかの参照がセットされていれば文句を言わないようにしよう。役に立つコメントは大歓迎だけど、コミット・コメントよりもソースコードのコメントをしっかりと書いて欲しいなあ。
Trial
62. Yocto Project
Yocto Projectの概要
-
再評価の背景:
- IoTデバイスのような特定のニーズに特化したLinuxディストリビューションを作成するためのツールとして、Yocto Projectが再び注目されています。
-
主な利点:
- リソース使用量を削減し、攻撃対象領域を減らすため、デバイス上でソフトウェアを実行するために必要なツールと依存関係のみを含むカスタムLinuxディストリビューションの構築を可能にします。
-
特徴:
- Android ThingsやUbuntu Coreといった特定の生態系に縛られない点が特徴です。
感想: その後は記述なし。自前でハードウェアを作って、デバイスドライバを書いてって組織でないと難しいか…
73. Open Policy Agent (OPA)
感想: この次の巻でも載っている。
LANGUAGES & FRAMEWORKS
78. Arrow
- 成り立ち: 既存の人気ライブラリであるkategoryとfunktionaleを統合して作成されました。
- 提供価値: Kotlin自体は関数型プログラミングの基本的な要素を提供しますが、Arrowはアプリケーション開発者がすぐに使える高レベルの抽象化のパッケージを提供します。
- 機能: データ型、型クラス、エフェクト、オプティクス、その他の関数型プログラミングパターン、および人気ライブラリとの統合を提供します。
- 評価: 当初の好意的な印象は、現在本番環境にあるアプリケーションで実際に使用したことで確認されました。
感想: 2020年10月でAdoptになっているけど、読み飛ばしていた。JavaだとVavrかな。
Discussion