LoginSignup
10
3

More than 3 years have passed since last update.

clusterサーバーサイドにおける技術選定について

Posted at

そういえば AWS Summit Online 2020 というのもあったなぁとというのを思いだしたので.

clusterのサービス内容,システム構成などは このへん から見ていただくとして,どういう思想で構成を考えているかなどをまとめてみたいと思います.

マネージドサービスについて

なるべくマネージドサービスを活用すること

新サービスを立ちあげることになったり,新機能を開発することになったり,機能を追加しようとなったり,理由は様々ですが,新しい「何か」が必要になる場合があります.

何が必要なのか?にもよりますが,まずはマネージドサービスを利用できないかを考えます.
逆に,マネージドサービスがあるからこういう機能を作りましょう/設計にしましょう,という話をすることもあるかもしれません.
何にしても,第一に選択すべきはマネージドサービスだと思います.

マネージドサービスを組み合せすぎないこと

先に書いたこととやや矛盾するのですが,組み合せすぎないほうが良いです.
何をもって組み合せすぎているのかは諸説ある,というかサービスや開発者の技量などにもよるので一概には言えないです.

  • DynamoDB Streams→Lambda
  • Kinesis Streams→Kinesis Firehose
  • S3→(SNS/SQS)→Lambda

など,効果的というか,もはやパターンとなっている組み合わせも存在します.
ただし,これらのパターンに安易にのっかると,すぐに長大なマネージドサービスの連鎖ができあがってしまいます.

ほとんどの場合うまく動きます.しかし,マネージドサービスは自分たちで面倒を見なくていいだけであって,障害が起きないサービスではない,というのを忘れがちです.(実際2020年,SQSやLambdaの障害が発生していました.

組み合せるものが増えれば増えるほど,そのなかの一部で障害が発生する可能性は上がっていきます.
マネージドサービスをたくさん並べて,矢印いっぱいの構成図を書くのは正直楽しいですし,イケてるものを作ってる気分にはなりますが,ほんとにそうする必要があるのかは自問したほうが良いです.

データを保存するサービスは慎重に

データやファイルを長期間置いておきたい場合は,どのように保存されるのか/取りだせるのか まで慎重に考える必要があります.

とくにデータストアを移動する場合は,すでにたまっているデータをどうするのかを考えないといけません.(破棄できるなら楽ですが,それができない場合も多い

構成管理について

Terraformなどの構成管理ツールを使うことはもはや常識となってきています.新規プロジェクトならほぼ間違いなく使うのではないでしょうか?

弊社でもTerraformを使っているので,Terraformを例にとって書きます.

基本的にはすべて実施すべき

使い捨てだから手で作ってしまったほうが早い,とくに慣れてくるとそう考えてしまうことが多々あります.
しかしその誘惑に負けずに書くべきです.(自分が全部書けているとは言ってない😔めんどくさい

たしかに手でポチポチやればできるものをコード化してplan→applyはけっこう面倒です.でも,使い捨てるつもりということは,いつかは消すはず.そのときにtfstateがあると安全性 (まちがって別のリソースを消してしまうことがない/何かが残ってしまって余計な料金が発生する可能性も減る) が増します.
むしろ使い捨てるつもりだからこそ書いたほうが良い,とも言えます.

Terraformで対応してないサービスを使いたい場合どうすべきか

これはけっこう難しいです.

そもそもTerraformが対応していない

ニッチなサービスだとそういうこともあります

どうしても必要であれば,pluginを書くか,何か別の管理方法を考えて使うしかありません (が,あとでTerraform対応できるよう独立性を持たせる

一部だけCloudFormationを使うとかはありなんでしょうか?

  • CloudFormationでも全部対応されてるとは限らなかったりする.
  • 面倒を見なければいけないツールは増えてしまう
  • 境界線が曖昧になってしまう (後日Terraformの対応が追加されたら書き直すのか

あたりを考えるとなかなか難しい気はしている.

新機能/新設定がTerraformでは書けない

時間が解決することもあります.バージョンアップしたらサポートされてる,など.

どうしてもすぐ使う必要があるなら,pluginを書くか?
手で設定変更して,後日Terraformが対応したときに謎の差分として発生してしまう場合もあるので,そのあたりをどう解消できるかにもよりそうです.

  • 設定変更だけで解消できる
  • 削除→再作成になってしまう

あたり.(ただし,設定変更だけだとしてもダウンタイムが発生しうるかは検討しなければなりません

まとめ

書き散らかした感じになってしまった.

あらためて書こうとしてみたけど,わりとふわふわした理由で選定してたりするので,もうちょっと明確に選べるようになりたいなぁと思った2020年でした.

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3