ぐるなび 店舗 ログイン。 株式会社ぐるなびプロモーションコミュニティのアルバイト・バイト求人情報|【タウンワーク】でバイトやパートのお仕事探し

ログイン|エキテン 店舗管理画面

ぐるなび 店舗 ログイン

こんにちは!店舗開発チームの滝口です。 ぐるなびでは、認証・認可のプラットフォーム開発に携わったのち、現在はレストランデータの運用をしつつ、ぐるなび掲載ページや、店舗向け管理画面の開発をしています。 はじめに このたび、オンプレで稼働していた「非構造化データストレージ(通称:UDS)」をAWSに移行しました。 UDS は NAS に保存されているファイルを REST API を介して CRUD 操作できるシステムで、ぐるなびで掲載している店舗の画像や CSS 、Javascript 等の保存に利用されています。 この記事では NAS に保存されたファイルをどのようにして AWS に移行したのか、その移行方式や AWS アーキテクチャを紹介します。 UDS 基本情報 アクセス数 データ参照 約 900 万/日 CDN 経由を除くオリジンリクエストのみ データ登録・更新・削除 約 100 万/日 データ量 データ数 約 2 億 ぐるなびで掲載している店舗の画像や javascript 、 css はほぼここに入っています データサイズ合計 約 20 TB 今回使った主な AWS サービス名 用途 CDN サービスで、S3のオリジナルキャッシュとして利用しました。 AWS を自動構築するためのサービスで、本記事では S3 の自動構築を紹介します。 データ移行中のエラー検知仕組みとして利用しました。 NAS のデータ移行先として利用しました。 オンプレ-AWS 間のデータ同期を実現するために利用しました。 AWS を活用して実現したいこと UDS のサーバが保守切れを迎えるため、その対応を検討していました。 以下がその候補です。 保守延長• 単純リプレイス 新しいサーバへの乗せかえ• 新アーキテクチャ UDS は物理サーバ上で稼働していたのですが、サーバが古かっため、保守延長は今回除外しました。 単純リプレイスでも良かったのですが、サーバリソースの最適化やコストの可視化および削減をしたいと思い、新アーキテクチャも検討することにしました。 ぐるなびではクラウドとして AWS の利用が推奨されているため、新アーキテクチャとしては、AWS への移行を前提に構成を検討しました。 総合的に判断して、新アーキテクチャを採用することになりました。 他にも色々あると思いますが、クラウドのメリットをあげておきます。 サービスに対して最適なアーキテクチャを考えて適応できる• 特にAWSはサービスが豊富で選択肢が多いところが魅力• サーバリソース最適化• ガラガラなCPUやメモリが最適化される• マシンリソースの増減を調整できる• 繁忙期だけマシンを増設することも容易に可能• コストが可視化されることでROIが明確になる• サービスのクローズが容易• サーバは一度購入してしまうとしばらく運用し続けなければならないが、クラウドであればいつでもやめられる• コピー環境を容易に作れる• (こちらは 2020 年 6 月 30 日に提供終了予定です)• AWSオフィスアワー• 弊社では、AWS の方に月に数回、オフィスアワーを実施していただいてます• S3 は、NAS に API が追加されたようなサービスで、UDS が提供していたようなファイルの CRUD 操作ができました。 画像の最適化(リサイズ、クロップ、圧縮等)のために Lambda Edge を使用しています。 AWS への移行方式 これまでは UDS がファイルを NAS で一元管理していましたが、移行後はファイルを登録したチームが直接ファイルを管理できるようにするため、移行時に各チームが保持している AWS アカウントにファイルを配布していきました。 また、並行稼働中に新旧ドメインでアクセス可能なように逆同期の仕組みを用意しました。 データ移行アーキテクチャ スケジュール 以下のスケジュールで AWS 移行を実施しました。 初期データ転送が終わったあとは、差分データを転送し続けていました。 転送方法 S3 Sync でデータ転送をしました。 S3 Sync は rsync のようなコマンドで、ローカルファイルと S3 を同期してくれます。 ただし、NAS をまるごとそのまま S3 Sync で同期すると、ファイル数が多すぎるため、途方もない時間がかかってしまいます。 そこで、NAS のディレクトリをある程度の単位に分割し、並列で転送するようにしました。 以下は NAS のディレクトリ階層例です。 具体的には以下のようなディレクトリ変換をしました。 jpg 上記の変換を実現するために、テンポラリーの S3 バケットにデータを入れ、それをトリガーに Lambda を実行させ変換処理をしました。 クロスアカウント 今回、複数の AWS アカウントに対して、ファイルを振り分けながらデータ転送しました。 クロスアカウントは S3 のバケットポリシーで実現しました。 (クロスアカウントするサービスが、S3 のみであれば AssumeRole は使わずとも実現ができます。 ) 以下はバケットポリシーの例となります。 CloudFront から S3 参照(公開権限)• S3 のクロスリージョンレプリケーション(オーナー権限) レプリケーションするにはファイルにオーナー権限が必要なため、別AWSアカウントから登録したファイルには、オーナー権限を付与する必要があります。 そのため、同期先にファイルを更新後、以下のように権限を変更しました。 以下はそのときのサンプルコードです。 nodejs (プリセットのACLにpublic-readがありますが、これだと公開権限しか付かないため、別途オーナー権限を付与する必要があります。 Owner. amazonaws. 原因はサービスと同じプロキシサーバを使っていたためでした。 S3 Sync ように一度に大量データを同期する場合、ネットワーク帯域を制限するか、サービスとは別のプロキシサーバを構築することが必要です。 今回のデータ移行では、後者で対応しました。 SDK は、今回のデータ移行で、S3 を更新するように改修しました。 更新はデータ不整合が発生しないようにメンテナンス日にサービスを停止して切り替えを実施しました。 SDK切り替えイメージ パフォーマンス改善 AWS に限った話ではありませんが、クラウド化することでオンプレに比べ、物理的に距離の遠くなるクラウドは、レスポンス性能が劣化します。 オンプレのときは、以下の処理のようにファイル更新をファイル数分ループするような処理でもパフォーマンスはそこまで問題にはなりませんでした。 そこで、大量更新にも耐えられるように、一件ずつループするのではなく、一括で処理できるようにSDKを改修しました。 以下はそのときのサンプルコードです。 PHP を使っています。 gnst. gnst. jpg UDSの参照は、利用者が多いため以下の方針で切り替えを実施しました。 S3 への更新をトリガーに Lambda を実行させ、UDS API を経由してファイルを NAS に保存しました。 並行稼働イメージ ドメイン救済措置 UDSのファイル(主に画像)は、個人ブログ等にリンクが貼られていたり、検索エンジン等のサムネイルで参照されていたりと、こちらからはコントロールできない部分のアクセスがそこそこあります。 そのため、旧ドメインへのアクセスをしばらくの間、新ドメインへリダイレクトさせる救済措置を行いました。 参照救済イメージ バックアップ これまでは NAS の snapshot 機能でデータの断面を定期的に取得していましたが、S3 にその機能はありません。 代替として、S3 のバージョニング機能を使いました。 バージョニングは、有効化することで、ファイルに更新があるたびに履歴を持ってくれます。 これにより、誤ってファイルを削除してしまっても、履歴から復元することができるようになります。 バージョニング設定 災害対策 S3 は東京リージョンを使っているのですが、万が一東京リージョンがダウンした場合に備えて、ソウルにも同じファイルをレプリケーションするようにしました。 ソウルとマルチリージョン化することで可用性を向上させました。 レプリケーションルールは以下となります。 レプリケーションルール設定 移行中にエラーが発生した場合のエラー通知 Lambda でエラーが発生した場合に、Slack 通知するような仕組みを作りました。 細かい部分は割愛しますが、エラー通知は以下の流れで設定できます。 CloudWatch Logs にメトリクスフィルターを追加 フィルターパターンは"ERROR"とする 2. アラームを作成 3. トピックを作成 4. サブスクリプションを作成 Slack通知はLambdaでします。 以下はLambdaのサンプルコードです。 env. env. env. env. Records [0 ]. host, port : 443, path : parser. env. setEncoding 'utf8' ; res. write JSON. stringify PAYLOAD ; req. CloudWatch Logs Insights でエラーリストを作成し、それをバッチオペレーション経由で Lambda を実行させました。 エラーリストは以下のクエリ結果となります。 ここでは、S3 構築時の設定ファイルを紹介します。 CloudFormation は json or yaml で記述ができますが、コメントが入れられるので yaml での記述がおすすめです。 Parameters S3 バケット名は、世界一意にする必要があるため、環境名をパラメータとして受け取るようにしました。 Parameters : テスト環境 or 本番環境 ENV : Type : String Description : Required "test" or "prod" AllowedValues : - test - prod ConstraintDescription : must specify prod, or test. S3バケット名 UdsBucketGroup : Type : String Description : Required enter the UDS bucket group. Mappings : Map01 : 移行用AWSアカウントのID 以下は、UDSのAWSアカウントIDが設定です。 UdsAwsAccountId : prod : 111111111111 test : 222222222222 Resources サービスの構築内容を Resources に記述していきます。 Resources : -. S3 -. ContentS3Bucket : Type : AWS::S3::Bucket DeletionPolicy : Retain Properties : S3バケット名 BucketName :! Join [ '', [ 'arn:aws:s3:::',! UDS移行後に、設定は削除するため、ドリフトとして検出されます。 Join - '' - - 'arn:aws:lambda:ap-northeast-1:' -! FindInMap [Map01, UdsAwsAccountId,! Join - '' - - 'arn:aws:lambda:ap-northeast-1:' -! FindInMap [Map01, UdsAwsAccountId,! Ref ENV ] - ':function:uds-sync' バケットポリシー ContentS3BucketPolicy : Type : AWS::S3::BucketPolicy DeletionPolicy : Retain Properties : Bucket :! Join [ '', [ 'arn:aws:s3:::',! Ref ContentS3Bucket ]] -! Join [ '', [ 'arn:aws:s3:::',! Join - '' - - 'arn:aws:iam::' -! FindInMap [Map01, UdsAwsAccountId,! Ref ENV ] - ':root' S3バケットの削除を制限 - Action : - s3:DeleteBucket Effect : Deny Resource : -! Join [ '', [ 'arn:aws:s3:::',! Join [ '', [ 'arn:aws:s3:::',! Join [ '', [ 'arn:aws:s3:::',! Ref ContentS3Bucket ]] Principal : CanonicalUser : - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Outputs 構築内容を参照して CloudFormation の画面に表示させることができます。 Outputs : S3BucketSecureURL : Value :! GetAtt [ContentS3Bucket, DomainName ]]] Description : Name of S3 bucket to hold website content さいごに 今回のデータ移行は多くの方にご協力いただきました。 関係者のみなさまありがとうございました。 本記事のノウハウがどなたかの一助になれば幸いです。 Special Thanks アマゾン ウェブ サービス ジャパン株式会社 ・武市 慶太郎 さん ・桑野 章弘 さん.

次の

株式会社ぐるなびプロモーションコミュニティのアルバイト・バイト求人情報|【タウンワーク】でバイトやパートのお仕事探し

ぐるなび 店舗 ログイン

こんにちは!店舗開発チームの滝口です。 ぐるなびでは、認証・認可のプラットフォーム開発に携わったのち、現在はレストランデータの運用をしつつ、ぐるなび掲載ページや、店舗向け管理画面の開発をしています。 はじめに このたび、オンプレで稼働していた「非構造化データストレージ(通称:UDS)」をAWSに移行しました。 UDS は NAS に保存されているファイルを REST API を介して CRUD 操作できるシステムで、ぐるなびで掲載している店舗の画像や CSS 、Javascript 等の保存に利用されています。 この記事では NAS に保存されたファイルをどのようにして AWS に移行したのか、その移行方式や AWS アーキテクチャを紹介します。 UDS 基本情報 アクセス数 データ参照 約 900 万/日 CDN 経由を除くオリジンリクエストのみ データ登録・更新・削除 約 100 万/日 データ量 データ数 約 2 億 ぐるなびで掲載している店舗の画像や javascript 、 css はほぼここに入っています データサイズ合計 約 20 TB 今回使った主な AWS サービス名 用途 CDN サービスで、S3のオリジナルキャッシュとして利用しました。 AWS を自動構築するためのサービスで、本記事では S3 の自動構築を紹介します。 データ移行中のエラー検知仕組みとして利用しました。 NAS のデータ移行先として利用しました。 オンプレ-AWS 間のデータ同期を実現するために利用しました。 AWS を活用して実現したいこと UDS のサーバが保守切れを迎えるため、その対応を検討していました。 以下がその候補です。 保守延長• 単純リプレイス 新しいサーバへの乗せかえ• 新アーキテクチャ UDS は物理サーバ上で稼働していたのですが、サーバが古かっため、保守延長は今回除外しました。 単純リプレイスでも良かったのですが、サーバリソースの最適化やコストの可視化および削減をしたいと思い、新アーキテクチャも検討することにしました。 ぐるなびではクラウドとして AWS の利用が推奨されているため、新アーキテクチャとしては、AWS への移行を前提に構成を検討しました。 総合的に判断して、新アーキテクチャを採用することになりました。 他にも色々あると思いますが、クラウドのメリットをあげておきます。 サービスに対して最適なアーキテクチャを考えて適応できる• 特にAWSはサービスが豊富で選択肢が多いところが魅力• サーバリソース最適化• ガラガラなCPUやメモリが最適化される• マシンリソースの増減を調整できる• 繁忙期だけマシンを増設することも容易に可能• コストが可視化されることでROIが明確になる• サービスのクローズが容易• サーバは一度購入してしまうとしばらく運用し続けなければならないが、クラウドであればいつでもやめられる• コピー環境を容易に作れる• (こちらは 2020 年 6 月 30 日に提供終了予定です)• AWSオフィスアワー• 弊社では、AWS の方に月に数回、オフィスアワーを実施していただいてます• S3 は、NAS に API が追加されたようなサービスで、UDS が提供していたようなファイルの CRUD 操作ができました。 画像の最適化(リサイズ、クロップ、圧縮等)のために Lambda Edge を使用しています。 AWS への移行方式 これまでは UDS がファイルを NAS で一元管理していましたが、移行後はファイルを登録したチームが直接ファイルを管理できるようにするため、移行時に各チームが保持している AWS アカウントにファイルを配布していきました。 また、並行稼働中に新旧ドメインでアクセス可能なように逆同期の仕組みを用意しました。 データ移行アーキテクチャ スケジュール 以下のスケジュールで AWS 移行を実施しました。 初期データ転送が終わったあとは、差分データを転送し続けていました。 転送方法 S3 Sync でデータ転送をしました。 S3 Sync は rsync のようなコマンドで、ローカルファイルと S3 を同期してくれます。 ただし、NAS をまるごとそのまま S3 Sync で同期すると、ファイル数が多すぎるため、途方もない時間がかかってしまいます。 そこで、NAS のディレクトリをある程度の単位に分割し、並列で転送するようにしました。 以下は NAS のディレクトリ階層例です。 具体的には以下のようなディレクトリ変換をしました。 jpg 上記の変換を実現するために、テンポラリーの S3 バケットにデータを入れ、それをトリガーに Lambda を実行させ変換処理をしました。 クロスアカウント 今回、複数の AWS アカウントに対して、ファイルを振り分けながらデータ転送しました。 クロスアカウントは S3 のバケットポリシーで実現しました。 (クロスアカウントするサービスが、S3 のみであれば AssumeRole は使わずとも実現ができます。 ) 以下はバケットポリシーの例となります。 CloudFront から S3 参照(公開権限)• S3 のクロスリージョンレプリケーション(オーナー権限) レプリケーションするにはファイルにオーナー権限が必要なため、別AWSアカウントから登録したファイルには、オーナー権限を付与する必要があります。 そのため、同期先にファイルを更新後、以下のように権限を変更しました。 以下はそのときのサンプルコードです。 nodejs (プリセットのACLにpublic-readがありますが、これだと公開権限しか付かないため、別途オーナー権限を付与する必要があります。 Owner. amazonaws. 原因はサービスと同じプロキシサーバを使っていたためでした。 S3 Sync ように一度に大量データを同期する場合、ネットワーク帯域を制限するか、サービスとは別のプロキシサーバを構築することが必要です。 今回のデータ移行では、後者で対応しました。 SDK は、今回のデータ移行で、S3 を更新するように改修しました。 更新はデータ不整合が発生しないようにメンテナンス日にサービスを停止して切り替えを実施しました。 SDK切り替えイメージ パフォーマンス改善 AWS に限った話ではありませんが、クラウド化することでオンプレに比べ、物理的に距離の遠くなるクラウドは、レスポンス性能が劣化します。 オンプレのときは、以下の処理のようにファイル更新をファイル数分ループするような処理でもパフォーマンスはそこまで問題にはなりませんでした。 そこで、大量更新にも耐えられるように、一件ずつループするのではなく、一括で処理できるようにSDKを改修しました。 以下はそのときのサンプルコードです。 PHP を使っています。 gnst. gnst. jpg UDSの参照は、利用者が多いため以下の方針で切り替えを実施しました。 S3 への更新をトリガーに Lambda を実行させ、UDS API を経由してファイルを NAS に保存しました。 並行稼働イメージ ドメイン救済措置 UDSのファイル(主に画像)は、個人ブログ等にリンクが貼られていたり、検索エンジン等のサムネイルで参照されていたりと、こちらからはコントロールできない部分のアクセスがそこそこあります。 そのため、旧ドメインへのアクセスをしばらくの間、新ドメインへリダイレクトさせる救済措置を行いました。 参照救済イメージ バックアップ これまでは NAS の snapshot 機能でデータの断面を定期的に取得していましたが、S3 にその機能はありません。 代替として、S3 のバージョニング機能を使いました。 バージョニングは、有効化することで、ファイルに更新があるたびに履歴を持ってくれます。 これにより、誤ってファイルを削除してしまっても、履歴から復元することができるようになります。 バージョニング設定 災害対策 S3 は東京リージョンを使っているのですが、万が一東京リージョンがダウンした場合に備えて、ソウルにも同じファイルをレプリケーションするようにしました。 ソウルとマルチリージョン化することで可用性を向上させました。 レプリケーションルールは以下となります。 レプリケーションルール設定 移行中にエラーが発生した場合のエラー通知 Lambda でエラーが発生した場合に、Slack 通知するような仕組みを作りました。 細かい部分は割愛しますが、エラー通知は以下の流れで設定できます。 CloudWatch Logs にメトリクスフィルターを追加 フィルターパターンは"ERROR"とする 2. アラームを作成 3. トピックを作成 4. サブスクリプションを作成 Slack通知はLambdaでします。 以下はLambdaのサンプルコードです。 env. env. env. env. Records [0 ]. host, port : 443, path : parser. env. setEncoding 'utf8' ; res. write JSON. stringify PAYLOAD ; req. CloudWatch Logs Insights でエラーリストを作成し、それをバッチオペレーション経由で Lambda を実行させました。 エラーリストは以下のクエリ結果となります。 ここでは、S3 構築時の設定ファイルを紹介します。 CloudFormation は json or yaml で記述ができますが、コメントが入れられるので yaml での記述がおすすめです。 Parameters S3 バケット名は、世界一意にする必要があるため、環境名をパラメータとして受け取るようにしました。 Parameters : テスト環境 or 本番環境 ENV : Type : String Description : Required "test" or "prod" AllowedValues : - test - prod ConstraintDescription : must specify prod, or test. S3バケット名 UdsBucketGroup : Type : String Description : Required enter the UDS bucket group. Mappings : Map01 : 移行用AWSアカウントのID 以下は、UDSのAWSアカウントIDが設定です。 UdsAwsAccountId : prod : 111111111111 test : 222222222222 Resources サービスの構築内容を Resources に記述していきます。 Resources : -. S3 -. ContentS3Bucket : Type : AWS::S3::Bucket DeletionPolicy : Retain Properties : S3バケット名 BucketName :! Join [ '', [ 'arn:aws:s3:::',! UDS移行後に、設定は削除するため、ドリフトとして検出されます。 Join - '' - - 'arn:aws:lambda:ap-northeast-1:' -! FindInMap [Map01, UdsAwsAccountId,! Join - '' - - 'arn:aws:lambda:ap-northeast-1:' -! FindInMap [Map01, UdsAwsAccountId,! Ref ENV ] - ':function:uds-sync' バケットポリシー ContentS3BucketPolicy : Type : AWS::S3::BucketPolicy DeletionPolicy : Retain Properties : Bucket :! Join [ '', [ 'arn:aws:s3:::',! Ref ContentS3Bucket ]] -! Join [ '', [ 'arn:aws:s3:::',! Join - '' - - 'arn:aws:iam::' -! FindInMap [Map01, UdsAwsAccountId,! Ref ENV ] - ':root' S3バケットの削除を制限 - Action : - s3:DeleteBucket Effect : Deny Resource : -! Join [ '', [ 'arn:aws:s3:::',! Join [ '', [ 'arn:aws:s3:::',! Join [ '', [ 'arn:aws:s3:::',! Ref ContentS3Bucket ]] Principal : CanonicalUser : - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Outputs 構築内容を参照して CloudFormation の画面に表示させることができます。 Outputs : S3BucketSecureURL : Value :! GetAtt [ContentS3Bucket, DomainName ]]] Description : Name of S3 bucket to hold website content さいごに 今回のデータ移行は多くの方にご協力いただきました。 関係者のみなさまありがとうございました。 本記事のノウハウがどなたかの一助になれば幸いです。 Special Thanks アマゾン ウェブ サービス ジャパン株式会社 ・武市 慶太郎 さん ・桑野 章弘 さん.

次の

株式会社ぐるなびプロモーションコミュニティのアルバイト・バイト求人情報|【タウンワーク】でバイトやパートのお仕事探し

ぐるなび 店舗 ログイン

職種 ぐるなび掲載店に定期訪問し掲載情報の 更新サポートやお困りごとをヒアリング し、お客様からの要望を十分に伺いぐる なび活用のサポートをして頂きます。 育児が落ち着いたので仕事復帰したい、 平日はガッツリ働きたい!など そんな主婦 夫 さん大歓迎の職場です! ブランクがある方も安心してスタートで きる充実した研修制度が整っています。 最低勤務日数 …… 週3日• 最低勤務時間 …… 1日6. 新機能等業務に必要なことを会社から伝えるミーティングがあります。 お休みは他の曜日に振替可能です!!子育てしながら責任もって仕事をし充実した時間を過ごしているママも沢山活躍中です。 採用予定人数 1名 【急募】すぐに働きたい!そんな方大歓迎です! 人気グルメサイト「ぐるなび」に掲載中の飲食店様を定期訪問し、お困りごとを ヒアリングし、お客様からの要望を十分に伺い、ぐるなび活用のサポートを して頂きます。 飲食店・地元エリアを一緒に盛り上げましょう。 これまでのキャリアも活かせます。 営業経験・ラウンダー経験のある方歓迎! 交通費詳細• 交通費支給有無 …… あり•

次の