shibatch's journey

日々考えていることをつらつら書くだけです

AWSでDNSをRoute53を使わずに構築する

このエントリは、GMOペパボエンジニア Advent Calendar 2020 – Adventar の7日目の記事です。6日目は、 Osamtimizer さんの ペパボのカンファレンス情報を表示するアプリをFlutterで作った - stone's throw でした。


はじめに

GMOペパボが提供しているネットショップ作成サービス「カラーミー」ではユーザーさんが自由に決めたドメインでECショップを開設できる機能があります。その機能を実現するためには設定するドメイン用のDNSサーバをシステム内に持っておく必要があるため、nyah と呼ばれる OpenStack を使ったプライベートクラウド上にDNSサーバを構築し、運用しています。

さてこの自社DNSサーバですが古いOpenStackバージョンの基盤にあり(nyahは複数のOpenstackバージョンの基盤で構成されています)、別の環境へ移設する必要が出てきました。そこでまずAWS Route53を筆頭としたパブリッククラウドへの移設も検討したのですが大量のドメイン(ゾーン)をRoute53で運用するのはコスト的な足かせがあります(Route53などのパブリッククラウドDNSはゾーン毎に課金される料金体系です)。そこで移設後も自社でDNSサーバを管理、運用することにしました。このようにプライベートクラウドを自社で運用しながらパブリッククラウドの採用も柔軟に検討できることはGMOペパボの強みです。

DNSサーバを設計する

移設するにあたり新しいOpenStack基盤のnyahを使用することも考えたのですが、結論としてはAWSへEC2 + RDS(MySQL)の構成にしました。nyahへの構築もできましたが、バックエンドのDBサーバはPaaS型であるRDSのほうが管理コストは少なくて済むだろう、という判断です。

構成はこちら。

f:id:shibatch:20201206232531p:plain
DNS構成図
DNSのシステムはPowerDNSを採用しました。複数AZにEC2を配置し、バックエンドをRDS(MySQL)で構成しています。特徴は内部の通信はDNSの名前解決とは別の経路で、AWS Direct Connectを利用し、専用ネットワーク接続を使用していることです。APIの通信は専用線を用いることでセキュリティリスクを低減しています。PowerDNSはRESTベースのAPIを持っているので、nyahにあるカラーミーのシステムからDNSレコード更新の処理を叩く方式にすることでシステム間の依存を低くしています。

また、インフラのオーケストレーションツールはTerraformで行っており、プロビジョニングはPuppetを利用し、すべてコード管理しています。

現時点ではまだ移設は完了まではしていません。動作は確認できているので、そう長くかからずこの方式が稼働するよう目指しているところです。

まとめ

GMOペパボではプライベートクラウドパブリッククラウドのマルチクラウド構成を推進しています。それはつまり、より低コストで、より可用性が高く、より安全にするにはどうすればよいか?という設計の自由度が高いことを意味します。今回で言えば、DNSサーバを

  • nyahに構築することもできた
  • Route53に構築する案もあった

中で、AWSへPowerDNSを用いた構成を選択しました。また、nyahとはDirectConnectで専用線を用いた通信を採用し、セキュリティリスクの低減に作用しています。安心と安全が安価に提供できればそれはユーザーさんの利益にもなりますし、何より構成を設計する上でもやりがいがありますね。

明日はtkpさんです!