2024-12-23 Developer Productivity室のWeekly News
この記事ではDeveloper Productiity室内で直近1週間で注目したソフトウェアエンジニアリング、DevOps、開発生産性などに関連する記事を紹介します!
(直近2週間お休みしていたため、今回は内容多めの3週間分になってます)
今週のトピック
Ameba Platformのマルチテナント設計と振り返り
Ameba Platformは、マルチテナント対応の設計を2023年から2024年にかけて見直しました。主な課題はセキュリティ面で、移行過程での認証システムやサーバー間通信の隔離が重要となりました。新しい設計では、セキュリティレベルに基づく通信制御や認証基盤の統一を目指し、実際の運用に則した対応を進めています。
改めて、マルチテナントの設計においては以下の要件が設定されました:
- 通信隔離: Pod間、AWSリソース間の完全隔離
- 共通認証基盤: AWS、EKSなどのリソースに対し、一元的な認証を提供
- 厳密なアクセスコントロール: RBACやABACによる管理
また、セキュリティ対策として、Kubernetes NetworkPolicyを使用し、Pod間通信の制御やAWSとの通信制限を実施しています。これらのアプローチによって、マルチテナント環境を安全に運営できる体制を整えました。
振り返ってみると、設計の柔軟性やリソースの管理の複雑さについての課題が残る一方で、Network Policyの有用性を再認識しました。
GitHub Copilotを使ったユニットテスト生成の方法
ユニットテストは、開発者にとって必須の作業ですが、時間がかかるのが難点です。そこで、GitHubのAIコーディングアシスタントであるGitHub Copilotが役立ちます。本記事では、Copilotを活用して、ユニットテストを自動生成する方法やコツを紹介します。
ユニットテストは、バグの早期発見やコードの品質向上に寄与しますが、手作業で書くのは非常に労力がかかります。GitHub Copilotは、IDE内でリアルタイムにコードの提案を行い、テストケースを生成します。特に、選択したコードに基づいて様々なシナリオを考慮したテストを自動で生成してくれるので、開発効率が大幅に向上します。
実際の運用方法としては、コードを強調表示し、右クリックまたはスラッシュコマンドを使ってテストを生成します。具体例として、PythonやTypeScriptでのユニットテスト生成プロセスが紹介されています。Copilotが生成するテストは、エッジケースやエラー条件にも対応しており、テストのカバレッジを向上させる強力なツールです。テストの価値を最大限に引き出すためには、生成されたコードを必ずレビューし、必要に応じて修正を加えましょう。
Amazon Aurora DSQLのプレビュー公開
Amazon Web Services(AWS)は、「AWS re:Invent 2024」で新しいPostgreSQL互換の分散データベース「Amazon Aurora DSQL」のプレビューを発表しました。これにより、データベースは地理的に離れた複数のリージョンで高いスケーラビリティと可用性を実現し、しかも小さなレイテンシを持つ高性能なトランザクション処理が可能となります。
Amazon Aurora DSQLの最大の特徴は、従来の分散データベースが持つデータの一貫性の問題を解決することにあります。ノード間の正確な時刻の同期を実現することで、通信を最小限に抑え、強いデータの一貫性を保ちながら低レイテンシでの操作を実現しています。これにより、多数のノードが連携しても処理が迅速です。
また、AWS CEOのマット・ガーマン氏は、Amazon Aurora DSQLが「事実上無限のスケール」を提供し、99.999%の可用性を持つことを強調しました。これにより、従来のGoogle CloudのSpannerよりも書き込み処理でレイテンシが4分の1になることが期待されています。この技術革新により、エンタープライズ向けのデータベース管理がより効率的に行えるようになります。🎉
KubeCon + CloudNativeCon JapanのCFPを提出しよう!
KubeCon + CloudNativeCon Japanが、2025年6月16日と17日に開催されます。このイベントでは、オープンソースおよびクラウドネイティブの先進技術者たちが集まり、知識交流やクラウドネイティブコンピューティングの進展を図ります。提案の締め切りは**2025年2月2日午後11時59分(日本標準時)**です。
詳細は、公式サイトで確認してください!🌟
2025年のクラウドコンピューティングの主要トレンド
2025年におけるクラウドコンピューティングは、AIやエッジコンピューティングといった技術革新によって大きく進化します。企業は、効率性やコスト削減を実現するために、これらの変革を積極的に取り入れていく必要があります。ここでは、特に注目すべき6つのトレンドを紹介します。
- AI中心のクラウド: AIは、リアルタイムでのリソース割り当てやスケーリングの自動化により、クラウド操作の最適化を図ります。
- エッジとクラウドの統合: AIワークロードはエッジとクラウド間で動的に作業を行い、迅速な応答を実現します。
- ハイブリッドおよびマルチクラウド戦略: 複数のクラウドサービスを組み合わせて、柔軟性を高め、ベンダーロックインを回避します。
- サーバーレスコンピューティング: インフラ管理の手間を省き、開発者がコードを迅速にデプロイできる環境を提供します。
- 量子コンピューティング: クラウドを介して一般企業もアクセス可能になり、さまざまな業界でのイノベーションが期待されます。
- DevEdgeOps: エッジコンピューティングの特有の課題に応じて、DevOpsのアプローチを最適化します。
未来のクラウドコンピューティングは挑戦と機会に満ちています。企業はこれらのトレンドを活用し、迅速に変革に対応することが求められています。🌟
IstioでのEnvoy Global Rate Limiting活用法
この記事では、IstioとEnvoyを用いたGlobal Rate Limitingについて、知っておくべき5つのポイントを紹介します。Envoyの機能を活用することで、Kubernetes環境におけるリクエストの流量制御が可能になり、高負荷時の問題を軽減できます。
1つ目のポイントは、ルートレベルでのRate Limit Serviceの宛先変更ができないことです。このため、同じクラスター内の異なるサービスが同一のRate Limit Serviceを使用し、負荷が集中すると他のサービスにも影響が及ぶ恐れがあります。2つ目は、最適な方法としてサイドカーのアウトバウンド通信でRate Limitを行うこと。VirtualService設定が適用されるのはあくまでアウトバウンドルートだからです。
さらに、3つ目はistioctlコマンドの活用による設定確認。これにより、Envoy proxyの設定が意図通りに反映されているかを容易に確認できます。4つ目として、EnvoyのRate LimitアルゴリズムがFixed Windowであることに注意が必要です。そして最後に、Fixed Windowの切り替えがUnix Timestampを基に行われるため、長い時間単位での設定には工夫が求められます。
これらのポイントを理解することで、Envoy Global Rate Limitingをより効果的に活用し、システムの安定性を保つことができます。
OpenAIの最新o1モデルがGitHub Copilotに登場!
OpenAIの新しいo1モデルが2024年12月17日にGitHub CopilotとGitHub Modelsで利用可能になりました!これにより、コーディングワークフローが一層強化され、開発者はより高機能なAIサポートを受けられるようになりました。
新モデルは、コーディングの柔軟性や効率を向上させるための機能を提供します。この更新により、開発者は次のことが可能になります:
- 自動コード生成: 効率的なコーディングをサポート。
- エラーチェック: リアルタイムでコードのエラーを検出。
- オープンソースの強化: より多くの開発者が利用可能に。
また、150万人以上の開発者が利用する新しい無料プランも来たため、GitHub Copilotがますます身近に感じられます。これからの開発が一層楽しみですね!🚀
GitHub Copilot for Xcode
GitHub Copilot for Xcodeは、プログラミングをより迅速かつ効果的に行うためのAIペアプログラマーです。このXcode拡張機能は、リアルタイムでコードの提案を行い、開発者の作業をサポートします。
機能と利点
- インライン提案: コーディング中にリアルタイムで文脈に沿った提案が表示されます。
- 便利なインストール手順: Homebrewや.dmgファイルから簡単にインストール可能。
- バックグラウンド動作: Xcode起動時に自動的に有効になります。
このツールは開発者の効率を高めることを目指していますので、ぜひ活用してみてください!🚀
GitHub Copilot拡張機能が環境の文脈を理解
GitHub Copilotの新しい拡張機能は、開発者が使用するエディタやGitHubでのローカルコンテキストにアクセスできるようになりました。これにより、より豊かでテーラーメイドな応答が提供され、開発体験が向上します。
まず、開発者は拡張機能と対話する際にコンテキストパッシングを利用できます。これにより、開発環境(Visual Studio CodeやGitHub.comなど)によっては、特定の情報やリポジトリデータが利用可能になります。ただし、ローカルコンテキストはデフォルトでは拡張機能に渡されませんので、管理者によるセキュリティコントロールが維持されます。
利用可能なコンテキストの概要
- Visual Studio Code: ファイル、選択範囲、リポジトリ情報がアクセス可能。
- GitHub.com: リポジトリ情報及び他のGitHubリソースにアクセス可能。
- JetBrains IDEs: コンテキストは提供されず。
開発者とビルダーの要件
- 開発者は拡張機能へのアクセスとリポジトリ管理者の承認が必要です。
- ビルダーは、エディタコンテキストを受け取るための設定を行い、APIを更新する必要があります。
このアップデートにより、開発者はさらに便利にGitHubを活用できるようになるでしょう!🚀
GitHub Actionsのリリースと変更通知
2024年12月5日、GitHub Actionsに関する重要なリリースと変更が発表されました。特に、ubuntu-latest ラベルが ubuntu 24 に移行されます。この変更に伴い、使用するツールやパッケージが異なるため、ワークフローに影響が出る可能性があります。
主要な変更点
- ubuntu-latest ラベルの移行は2024年12月5日から始まり、2025年1月17日に完了します。古いパッケージの削除により、ワークフローが破損するかもしれませんので、事前に確認が必要です。
- Ubuntu 20 イメージは2025年4月1日までに完全に退色するため、他のメジャー版へのアップデートが推奨されています。
- Artifacts v3 は2025年1月30日までに閉鎖され、指定した日時には一時的にジョブが失敗します。
セルフホストランナーとAzureプライベートネットワークの更新
新しい Immutable Actions の導入に伴い、セルフホストランナーのネットワーク許可リストを更新する必要があります。GitHub Container Registryにおけるアクションのストレージ変更にも注意が必要です。
これらの変更は、GitHub Actionsの利用者にとって重要な情報であり、事前に対応することでスムーズな運用が可能となります。詳細は公式ガイドラインを確認してください!🚀
Twelve-Factor Appのオープンソース化
Herokuは、Twelve-Factor Appの定義をオープンソース化し、今後はコミュニティ主導でアップデートされることを発表しました。この動きは、クラウドサービスにおけるSaaSやモダンなWebアプリケーションの開発プラクティスを進化させるものです。オープンソース化された定義は、開発者の協力によって、新しい技術やニーズに対応した形で再定義されていきます。
「Twelve-Factor App」は2011年にAdam Wiggins氏によって提唱され、主にクラウド環境でのアプリケーション開発に関するベストプラクティスを提供しています。しかし、近年のコンテナ型仮想化やKubernetesといった新たな技術の台頭により、現行の定義の見直しが必要になっています。オープンソース化によって、コミュニティはそれに対応する新たなプラクティスを提案する機会を得ます。
具体的な参加方法としては、GitHubでのIssueやプルリクエストの提出、ディスカッションが行える場としてメーリングリストやDiscordの利用が挙げられます。Herokuは、引き続きこのプラクティスの進化に寄与し、アプリの開発環境をさらに充実させていく意向を示しています。🚀
Amazon Q Developerの新機能発表
Amazon Web Services(AWS)が、コーディング支援AI「Amazon Q Developer」の新機能を発表しました。これにより、ユニットテストの生成、コードからのドキュメント作成、コードレビューが自動で行えるようになります。この発表は、ラスベガスで開催中の「AWS re:Invent 2024」で行われました。
新機能では、ユニットテストの生成はプロジェクト全体の知識を基に行われ、過去のコードを参考にしたドキュメント作成も対応しています。また、コードレビューにおいては、脆弱性のスキャンや重複コードの確認も自動で行い、開発者の負担を軽減します。これにより、コーディング以外の作業にかかる時間を削減し、より効率的な開発が可能となります。✨
さらに、Amazon QがGitLabでも利用可能になるとのこと。これにより、多くの開発者にとって利便性が向上します。AWSのAI支援により、デベロッパーはより創造的な仕事に集中できるようになります。🚀
国産インメモリDB「劔(Tsurugi)」による超低遅延AIシステムの実証実験
国産インメモリデータベース「劔(Tsurugi)」が、さくらインターネットと日本レースプロモーションと共に鈴鹿サーキットで超低遅延のAIシステム実証実験を行いました。本実験では、21台のフォーミュラカーから取得したテレメトリデータに基づいて、機械学習を使用したラップタイムと順位予測を行い、永続化処理を5ミリ秒で実証しました。
超迅速なデータ処理
この実験のポイントは、データ処理とAI推論のスピードです。具体的には、以下の特長があります:
- 処理速度: 書き込み処理が5ミリ秒、AI推論処理が5〜20ミリ秒で実行。
- オープンアーキテクチャ: 特殊なチップを使用せず、標準的なSQL文での実装が可能。
人間を上回る反応速度
このシステムは、人間の反応を上回る速度でのAI処理が実現できることを示しました。今後、この技術はさまざまな分野に応用されることが期待されています。また、さらなる高パフォーマンスが実現できる可能性が示唆されています。🚀
Netflixの負荷スパイク管理
Netflixは、600万人以上の視聴者を抱える中で、急激なトラフィックの増加に対処するため、数々の技術的戦略を駆使しています。特に、Mike TysonとJake Paulのイベントなど、非常に高い同時視聴数を記録するケースが増えている中、その対応力が視聴体験にどのように影響するかは重要な課題となっています。
Netflixは、AWSを活用して、自動スケーリングやトラフィック管理を行います。特に「優先的負荷軽減」や「予測型自動スケーリング」によって、サービスの負荷を optimal に管理。具体的には、数種類のバッファを立ち上げ、システムの「成功バッファ」と「失敗バッファ」を用いて、リクエストを優先順位に基づいて処理します。このアプローチにより、ストリーミング体験の質を保つとともに、サービスの健全性を組織的に防衛します。
これらの戦略を効果的に実行するためには、実際のデータに基づくモニタリングが不可欠です。Netflixは定期的にシステムの耐久性を試す「混乱テスト」を実施し、負荷がかかる状況での動作を確認することで、潜在的なボトルネックを特定し、システムを最適化しています。これにより、高負荷時でも質の高い視聴体験を提供し続けています。
GitHub Copilot Freeの発表
GitHubは、開発者向けに新たな無料サービス「GitHub Copilot Free」を発表しました。このサービスでは、Visual Studio Code内で月に2,000回のコード補完や50のチャットメッセージを利用でき、個人のGitHubアカウントで簡単に登録できます。これにより、より多くの開発者に手を差し伸べられることを目指しています。😊
新しいCopilot Freeでは、AnthropicのClaude 3.5 SonnetまたはOpenAIのGPT-4oモデルを選択でき、コーディングに関する質問や既存コードの説明、バグ探しを行えます。また、複数ファイルにまたがる編集も可能です。さらに、サードパーティのエージェントを利用したり、自分自身の拡張機能を作成することもできます。
最近、GitHubは1億5,000万人の開発者のコミュニティに到達しました。これにより、Copilotがより多くの開発者にとって魅力的なツールとなることが期待されています。学生・教育者・オープンソースメンテイナーの皆様は、引き続き無制限のCopilot Proアカウントに無料でアクセス可能です!✨
GitHub Copilot ExtensionsがJetBrains IDEsでサポート開始!
GitHub Copilot ExtensionsがJetBrains IDEに対応し、開発者は自身の環境内での機能を拡張できます!これにより、サードパーティーツールやプライベートデータへの自然言語でのクエリが可能になり、作業効率が向上します。
新機能と特徴 🌟
- JetBrains IDE全体でのCopilot Extensionsのフルサポート
- IntelliJ IDEA、PyCharm、WebStormなどとのシームレスな統合
- GitHub Marketplaceの拡張機能へのアクセス
- 自然言語での開発ツールとのインタラクションが可能
これにより、外部ツールやサービスへのクエリがスムーズになり、環境を切り替えることなく作業を進められます。
Cloudflare Zero Trust導入の具体的考慮事項
Cloudflare Zero Trustモデルの導入は、従来のVPNと比較してセキュリティ強化を図る重要な手段です。本記事では、Zero Trustの特徴や、既存のVPNから移行する際に考慮すべきポイントについて論じています。
Zero Trustの基本
Zero Trustは「信頼しない、常に検証する」原則に基づいており、内部と外部のネットワークを問わず、常にアクセス要求を検証します。Cloudflareはこのモデルを実現するための各種ツールを提供しており、特にセキュリティの強化が期待できます。具体的な機能には、mTLS接続やトンネル接続、サードパーティのIDPとの連携が含まれます。
置き換え時の重要ポイント
VPNからCloudflare Zero Trustに移行する際には、以下の点に留意しましょう:
- 固定IPの利用:必要な場合は、固定IPの利用が可能です。
- サービスとの連携:自社のIDPやクラウド環境(GCP、AWSなど)とのトンネル接続が重要です。
- CIDRの重複:VPCのCIDR重複に対応するため、仮想ネットワークの利用を検討します。
対策と注意点
導入後はWARP Clientの設定や、ログ取得に関するプライバシーへの配慮が重要です。特に、通信の分岐設定(スプリットトンネル)やTLSの複合化への配慮が求められます。これらを適切に設定することで、セキュリティインシデントのリスクを軽減できます。
Cloudflare Zero Trustの導入は、セキュリティの新たなスタンダードと言えます。今後はさらなるセキュリティ対策を進めていく必要があります。
中規模組織におけるPlatform EngineeringとModular Monolithの実践
この記事では、株式会社CAMが中規模組織において「Modular Monolith」を採用し、Platform Engineering を実践した事例を紹介します。新R25のリニューアルと新サービスの開発において、効率的な開発体験を実現するための取り組みが詳細に説明されています。
CAMは約60名のエンジニアを持ち、30のサービスを運営しています。「新R25」をリニューアルし、企業向けPR支援SaaSなどを新たに展開。また、Modular Monolith アーキテクチャによって、Microservicesの利点を享受しつつ、開発プロセスを単一アプリケーションで管理しています。
このアプローチのメリットには、セルフサービスの実現や、開発者が容易に新機能を追加できる環境が含まれています。具体的には、Module間の連携をAPI経由で行い、依存関係を簡潔に保ちながらも開発効率を向上させています。また、OpenAPI Specificationを活用し、型安全なSDKを生成することで、開発者体験の向上も図っています。今後もPlatform Engineeringを継続し、サービス開発者の生産性向上に努める方針です。
VS Code 1.96の新機能とアップデート
2024年11月にリリースされたVisual Studio Codeのバージョン1.96では、多数の便利な機能が追加されました。特に注目すべきは、GitHub Copilotの無料プランが利用可能になったことです。このプランにより、GitHubアカウントを持つユーザーが一定の補完やチャットインタラクションを毎月無料で使用できるようになります。🆓✨
注目の機能
- オーバータイプモード: 編集中のテキストを上書きする新しいモードが追加。この機能により、Markdown表を綺麗に編集できます。
- 自動インポート: JavaScriptやTypeScriptのコードを貼り付けると、自動的に必要なインポートが追加される機能が追加されました。
- チャットコンテキストの追加: コードやフォルダをチャットやCopilot Editsに追加することで、より文脈に即した提案が受けられるようになります。
使いやすさの向上
- ビューの移動: プライマリサイドバーとセカンダリサイドバー間でビューを簡単に移動できるようになりました。
- 端末のリガチャーサポート: 端末でリガチャーを使用できるようになり、文字が美しく表示されます。
多くの新機能で開発がさらに快適になりますので、ぜひアップデートして体験してみてください!🎉
最後に
いかがだったでしょうか?みなさんが気になった記事はありましたか?他にもこれが気になったというトピックがあればぜひコメントで教えてください!
Discussion