👏

paizaのインフラ刷新の裏側その2

2023/03/10に公開

概要

paizaという、サービスにおいて、今後の発展を見越して、インフラ刷新を行いました。
本連載では、paizaで行われたインフラ刷新の段取りや推進、技術選定の話、その他の内情や苦労話を含めて、赤裸々に語っていきたいと思います。
paizaの中って「こんな感じなんだ〜」みたいに、paizaのことを知っていただいたり、
AWSの刷新の実態って「こんなこともあるのか〜」といった気づきだったり、何か還元できるものが一つでもあれば幸いです。

対象読者

  • paizaの内情に興味がある方
  • AWSのインフラリニューアルに興味がある方

はじめに

paiza株式会社で、エンジニアをやっております。yukimuraと申します。

paizaというエンジニア向けのサービスをご存知でしょうか?

エンジニアの成長につながるような、様々なサービスを展開しているので、聞いたことがある方もいるかもしれません。

aizaのサービスは、2013年にローンチ後、順調に会員数を伸ばし、2023年3月時点で57万人(累計会員数50万人を突破)を突破いたしました。

そのような成長を遂げるpaizaのサービスですが、創業時からあまり変わらないインフラ構成で、このままでは今後のサービス成長を支えきれそうにありません。
すぐに破綻するような状態ではないものの、課題も多かったので、「今後のpaizaを支える新たなインフラ基盤へと進化を遂げよう!」という気持ちで過酷で楽しい物語は始まります。

本稿では、具体的なBeforeのインフラ構成とAfterのインフラ構成を紹介したいと思います。

paizaのインフラ刷新前

細かいところは割愛していますが、刷新前は、以下のような構成でした。

Before

  • まず、テスト環境と同じAWSアカウントであり、別れておりません
  • また、VPCは、テスト環境と同居してしまっています
  • EC2インスタンスに必要なミドルをインストールして動かしています(EC2の中身はAnsible管理)
  • どういうサブネットで構成されているかは、ポリシーがなくよくわかりません
  • また、VPCは、テスト環境と同居してしまっています(大事なことなので、2回書きました)

paizaのインフラ刷新後

同じく細かいところは割愛していますが、刷新後は、このようにしています。(継続改善中です。)

After

  • AWSアカウントは別アカウントで分けており、誤操作の可能性が低くなっています
  • アカウントが別れているので、VPCのみならずあらゆるリソースは別管理です
  • ここには書いていませんが、terraformでコード管理することで、構成の同一性を担保しています
  • サブネットの構成ルールはポリシーとテンプレートを定めて新しくVPCを切った場合も同一構成としています

刷新にむけたネットワーク構成ポリシーの整備

刷新前のところでは、触れておりませんが、VPCに切られている、サブネットやルーティングテーブルは、とても悲惨な状態でした。。
具体的には、サブネットの切り方が何も考えられておらず、CIDRで切れることをいいことに、それぞれのサブネットが、それぞれ別のサブネットマスクを使っているような状態でした。
個人的には、クラスレスアドレスが利用できるにしても、特に明確な意図がない限りは、クラスA,B,Cを軸にサブネットを切っておくのが無難かなと思っています(私のような古い人は、それで慣れてしまっているせいかもしれないですが)
また、ルーティングテーブルも、正直たくさんありすぎて、ちょっとでも触ったら壊れそうな状態でした。

このような状態では、ネットワーク周りの修正もいれづらいですし、あとから見た人が把握するのが困難になるため、インフラ刷新にあたって、基本となるネットワーク構成を整理しました。
構成としては、大旨以下のような形で、新しくVPCを作った場合は、基本的にこの構成になるようにしています。

BaseVPC

Availability Zone等割愛している部分もありますが、VPCをする場合は、基本的にこの構成に合わせるようにして迷いづらく、一度把握したら、他のVPCも把握しやすいようにしています。

さて、AWSアカウントを分離していく方針と、移行後のネットワーク構成も整理できてきたので、次回以降の記事では、実際に刷新していく中身について紹介していきたいと思います。

GitHubで編集を提案
paiza

Discussion