EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

2019-01-01から1年間の記事一覧

2019年を振り返って

もうすぐ2019年も終わりになりますが、システム部の2019年を振り返ってみたいと思います。 サービス面での振り返り 弊社のサービス的には、時系列で振り返ると 1月〜3月 クスパ 先生向け有料サービスの改善 4月〜7月 もぐナビスマフォ版UI改修 8月 クスパ 稼…

ZabbixからSSL証明書の有効期限を監視する

先日、一部のサービスで利用しているSSL証明書の有効期限が切れる障害を起こしてしまいました。 SSL証明書にはLet’s Encrypを利用しており、事前に通知が来ていたにも関わらず、更新を忘れてしまっていました。 これをふまえて、業務フローを見直すとともに…

Talend API Testerを使ってみる

今回は、API開発やテストなどに使える便利なツールTalend API Testerをご紹介します。 ※最近、プロダクト名の変更があったようなので調べる際には、Talend API Testerに変えて Restlet Clientでも情報が多くヒットします。 Talend API Testerについて 詳細に…

SMTPサーバーの逆引きエラーについて

今回は弊社で運用しているSMTPサーバー(postfix)で発生したメール送信時の逆引きエラーの調査及び対処方法についてを記事にしてみました。 正引き/逆引きとは ドメイン名に対応するIPアドレスを問い合わせることを「正引き」と言います。正引きは、主にWEB…

さくらウェブアクセラレータで使うドメインのSSL証明書更新

弊社ではサイトのCDNとして「さくらウェブアクセラレータ」を利用していて、そのドメインの証明書はLet's Encryptで発行しています。 Let's Encryptの証明書は有効期限が90日なので、3ヶ月に一度くらい証明書の入れ替えが必要です。 運用を始めた頃は、実体…

Zabbix から Spring Boot アプリケーションのデータベース接続状況を取得する

イートスマートでは、Zabbixで各サーバやコンテナのリソースを管理し、必要に応じてアラートを飛ばしています。 先日、データベースの接続数が増えてきたのでコンテナごとに接続数を把握しようと思い、Zabbixのテンプレートを使い以下の2つの項目を監視する…

SpringBootで遭遇したルーティング問題

今回は、SpringBootのプロジェクトの中で学んだことについてまとめていきます。 もぐナビのスマホページのamp対応として、別プロジェクトにSpringBootを使用しております。 簡単にプロジェクトの環境としては以下の編成になります。 SpringBoot 1.5.2 Thymel…

クスパ決済の導入について

現在クスパでは、レッスン予約のオンライン決済サービス(以降「クスパ決済」)の導入を検討しております。今回はオンライン決済の導入に向けて調査・検討している事を記事にしてみました。 cookingschool.jp クスパ決済の導入 クスパで料理教室のレッスン予…

Docker Swarmの障害への対応

イートスマートでは、提供するサービスのフロントエンドで利用するミドルウェアをDockerコンテナ化し、Swarmモード上で稼働させています。 先日発生したDocker Swarmの障害と、それへの対応をまとめました。 アラート サーバやコンテナの状態はZabbixを利用…

2019年9月のGoogleコアアルゴリズムアップデートについて

以前、2019年前半に実施されたGoogleのコアアルゴリズムアップデートについて記事を書いたのですが、 eatsmart.hatenablog.com 2019年9月の末にまたコアアルゴリズムアップデートが実施されました。 【September 2019 Core Update】Google、今年3回目のコア…

jpegtranを使った画像最適化について

今回は、jpegtranを使用した画像最適化についてまとめていきます。 経緯として、クスパ-料理教室ポータルサイトで使用している先生方のブログ画像 の容量が膨大になっており、ディスク容量を圧迫していたため画像の最適化を検討しました。 jpegtranについて …

クスパレシピページの有効インデックス数低下について

クスパでは、料理教室の先生が投稿するレシピを掲載していますが、8月下旬辺りからGoogle Search ConsoleのAMP/レシピの有効インデックス数が低下して、本日迄に行った施策を記載したいと思います。 cookingschool.jp 最初に確認したこと 有効インデックス…

ClamAVのエラーとその解決

イートスマートで提供しているサービスでは、クライアントからファイルをアップロードする機能を提供しているものがあります。 アップロードされたファイルを利用するにあたり、安全に利用するためClamAVを利用してウィルスのチェックを行っています。 ある…

re:dashで年対比のグラフを作りました

弊社ではデータを可視化するツールのひとつにre:dashを使っています。 今回、DBをデータソースにしてre:dashを使って年対比のグラフを作ったので、その方法を紹介します。 弊社サービスのもぐナビでのクチコミ投稿数で、年対比のグラフを作ってみました。 過…

rsyncで行ったデータ移行のまとめ

今回は、インフラ再編に伴って行ったクスパの画像データ移行について 内容をまとめていきます。対象となる画像は、クスパ上にあがる先生ブログの画像や各種レシピ、レッスンに使われる 画像などトータルで約500GBの容量でした。 rsyncについて 画像データの…

apache benchによるWEBサービスの性能測定について

今回はWEBサーバの性能測定について記載します。 インフラ移行を行う際、新環境でWebサービス公開前の性能測定等を行う必要があるかと思います。そんなときに手軽に利用できるツールとてapache benchがあります。 今回導入~測定(確認ポイント)迄をまとめ…

PostgreSQLのパーティショニングを利用する

もぐナビはフォローした情報を閲覧する"タイムライン"の提供を開始しました。 今回は"タイムライン"で利用するイベント記録テーブルに関する工夫を書きたいと思います。 パーティショニングの利用 記録するイベントは、商品へのクチコミやイイネなどのユーザ…

Reactで実装した機能をリリースしました

先日、もぐナビのスマートフォンサイトで、Reactで実装した機能をリリースしました。いくつかの機能をReactで実装したのですが、この記事ではクチコミ投稿機能に関して使った技術や参考にしたページを振り返ってみたいと思います。 クチコミ React まずは、…

コンビニ賞ページのOGPの設定について

今回は、もぐナビで7月23より公開しているコンビニ賞 ページの実装の際に、OGPの設定について行ったので内容をまとめていきます。 OGPについて OGPは、SNS(facebook、twitterなど)へ特定のWEBページをシェアする際にそのページの内容を わかりやすく伝えるた…

DNSサーバーの移転ついて

今回は、現状運用してるDNSサーバーを別のサーバーに移転することになり、そのノウハウを記事にしてみました。 DNSサーバーの仕組み DNSサーバーを移転するに辺り、DNSサーバーの仕組みについて簡単に触れておきたいとおもいます。 DNSサーバーには2つの種…

Background Removal API を試してみる

画像の背景を切り抜くサービスを、Javaから利用してみました。 www.remove.bg 準備 まずは上記サイトで登録とAPIキーの取得を行います。 各言語ごとにサンプルが用意されているので簡単に利用出来ます。 今回はJavaから利用するので、httpclientが必要になり…

Googleのコアアルゴリズムアップデートの影響と対応について

弊社サービスの「もぐナビ」は、Googleの検索結果からサイト訪問する割合が多く、常にGoogleの検索結果の表示順位に気を配っています。 Googleは3月初めと6月初めに検索に関してのアルゴリズムを更新し、検索結果の表示順位に影響を受けました。 【March 201…

もぐナビのクチコミ一覧からもぐナビニュースへ

イートスマートの新人エンジニアが、「もぐナビ」での開発を振り返り、学んだ内容をまとめていきます。 今回は、キャッシュとシーケンシャルスキャンについて考える機会となりました。 今回の実装の内容 弊社サイト「もぐナビ」でトラフィックの大きいユーザ…

LINEのプッシュ通知について

前回の記事で「LINE公式アカウント」の統合について紹介しましたが、今回はプッシュ通知についてまとてみたいと思います。 eatsmart.hatenablog.com プッシュ通知とは プッシュ通知とは、 アプリを起動していない状態でもメッセージがユーザーのスマートフォ…

もぐナビのフロントエンド事情

イートスマートではもぐナビという食品クチコミサイトを運営しています。 私が入社する以前から続くこのサービスは、フロントエンドにjQueryと一部prototype.jsを利用しています。 jQueryでDOMを直接操作するため、いわゆるイマドキなWEBサービスに比べると…

React+Reduxについて

最近、React+Reduxでコンポーネント実装に取り組んでいるのですが、今回はそれを通して知ったことをブログにまとめたいと思います。 Reduxとは Reactでは、stateという仕組みを通してコンポーネントとデータ(状態)の双方向バインディングを実現しています。…

正規表現について

イートスマートの新人エンジニアが、正規表現について学んだことを振り返ってみます。 正規表現について 文字列のデータの中から、特定のパターン(文字の組み合わせ)にマッチするかを調べ るために用いられる表現です。文字列の完全一致だけでなく、より複雑…

LINE@のサービス統合について

既にご存知の方も多いかと思いますが、LINEは2019年4月18日に法人向けアカウントサービス「LINE@」を「LINE公式アカウント」に統合しました。今回はその辺りについてまとめてみたいと思います。 統合の概要 2019年4月18日で「LINE@」は「LINE公式アカウント…

Javaのバッチ処理をネイティブモジュールにする

昨年インフラの刷新ではフロントエンドのサーバ群をDockerコンテナ化したのと合わせて、Javaを利用するバッチ処理もDockerコンテナ化しました。 これにより、Dockerコンテナの実行さえできればどのサーバでもバッチが実行できるようになりました。 以前に比…

Reactで実装したコンポーネントのマウント時に工夫したこと

現在、Webページにオーバーレイで表示されるパーツを、React + Redux + react-router + redux-form + redux-thunk を使用して、コンポーネントとして実装しようと考えています。その辺りの話は機能リリース後にしたいと思いますが、そのReactで実装したコン…