AWSにおけるKubernetes――OSSを活用した、マイクロサービスアーキテクチャの課題を解決する取り組みとは
freee、マジ価値開発の現場から 第4回
Kubernetes (on AWS)や周辺ツールの成熟
「マイクロサービスにおけるRails」とは結構なことです。しかし、それが自社に許された工数や人的リソースで構築・運用でき、それを活用してビジネスの役に立たなければ意味がないでしょう。
そのために欠かせないのは、OSSの力を借りる、ということです。
freeeでは、Kubernetesを前提としたOSSを採用したり、私がメンテナーを買って出たりすることで、できるだけ自社だけで開発が閉じないようにしています。特にメンテナンスを代行するコストは相当なものですが、あえてそれをやるメリットは、「自社よりも大きな規模でKubernetesを利用しているエンジニアの要望に耳を傾けることで、自社に将来必要とされること、直面する課題を事前に察することができる」ということにつきます。
そのために、私は以下のOSSのメンテナーをしています。似たような課題感をお持ちの方は、ぜひREADMEを読むところから初めてみてください。
kube-aws
言わずと知れたKubernetes on AWSクラスタを構築し、クラスタの構成情報をコードで管理するためのツールです。AWSに詳しい方であれば、「CloudFormationのwrapper」と言えばわかるかもしれません。利用する敷居の高さは正直kopsなど他のツールと比べて高いものの、AWSのベストプラクティスを活かしてプロダクション用とのKubernetesクラスタを構築することだけを突き詰めているので、AWSに詳しい人にとってはとっつきやすく、コントロールしやすいといったメリットがあります。私自身、そのメリットを持ったKubernetesクラスタのプロビジョニングツールがほしいがために、そしてまだそこに注力した代替えツールが存在しないために、いまだにメンテナーを続けています。
Helmfile
KubernetesのためのCloudFormationやTerraformのようなものです。1チーム、1サービスなどの比較的大きな単位で必要とされるアプリケーション一式をYAMLで一元的に管理し、まとめてデプロイするといったことができます。内部ではHelmというKubernetes向けのパッケージマネージャを利用しています。
Brigade
Kubernetes向けのスクリプティングフレームワーク。LinuxにおけるBash、WindowsにおけるPowerShellのように、KubernetesをOSと見立てたときにKubernetes上で動く「ちょっとした」分散システムをスクリプト感覚で組めるもの、といえます。CI&CDパイプラインの実装などによく使われていますが、原理的にはJavaScriptとKubernetesで表現できることは何でもできます。
まとめ
本記事では、コンテナ仮想化やマイクロサービズアーキテクチャを取り巻く状況とfreeeにおける課題、またそれに対する対抗策としてKubernetes on AWSの活用、そして周辺OSSについて紹介しました。
コンテナもKubernetes on AWSも何らかの課題解決の手段で、すべてのケースで適用できるわけではないと思います。しかし、ここで紹介したことが、急激に分散し大きくなるシステムやチームに悩まされているエンジニアの皆さんの参考になれば幸いです。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- freee、マジ価値開発の現場から連載記事一覧
-
- ブランチ運用の見直しと自動化で、モバイルアプリ開発における問題を解決!
- AWSにおけるKubernetes――OSSを活用した、マイクロサービスアーキテクチャの課...
- Railsアプリケーションにおけるフロントエンド環境のモダン化
- この記事の著者
-
九岡 佑介(freee株式会社)(クオカ ユウスケ)
freee株式会社 プロダクト基盤本部 SRE, OSS Developer MO/MMO 廃人、自然言語処理、エクセラー……とジョブチェンジを重ねていたら、いつの間にかここに。現在は freeeのSRE、ChatWorkの技術顧問、kube-awsのメンテナーという3足のわらじを履いて、世界中に...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
