タグ

ブックマーク / techlife.cookpad.com (11)

  • Sisimaiを使ったバウンスメールの管理 - クックパッド開発者ブログ

    最近、Ninja650に乗り換えたSREチームの菅原です。今までマルチばかり乗ってきたんですが、ツインもなかなか面白いですね。シフトペダルをガチャコンいわせながら方々に出かける毎日です。 この記事では、サービスが配信しようとして何らかの理由で差し戻されたメール—バウンスメールの管理をどのように行っているかという話しを書きます。 バウンスメール サービスがユーザに向けてメールを配信しようとすると、多かれ少なかれバウンスメールは発生します。メールアドレスが間違っている・携帯電話の設定で受信を拒否している・メールボックスが一杯にになっている・IPアドレスがブラックリストに載ってしまったためサーバにメールの受信を拒否されている…etc。完全になくすことは難しいですが、バウンスメールを放置するとメールの到達率を下げたり、送信先から一時的にメールの受信を拒否されたりすることがあるため、差し戻されてしま

    Sisimaiを使ったバウンスメールの管理 - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2017/05/15
  • この gem を使っているアプリケーションを探す - クックパッド開発者ブログ

    技術部開発基盤グループの鈴木 (id:eagletmt) です。 Ruby アプリケーションが使っている gem を一覧できる GemCollector というツールを作りました。 今回はその GemCollector の機能と、GemCollector の利用シーンの拡大について紹介したいと思います なお GemCollector は Rails Engine の形で gem として公開しています。 https://github.com/cookpad/gem_collector GemCollector 作成の動機 GemCollector を作った元々の動機は我々開発基盤でメンテナンスしている gem を更新したいとき、とくに非互換を含む変更を行いたいときに、変更の影響を受けるアプリケーションを把握することでした。 社内でよく使われている gem であれば、事前に社内での使われ方を調

    この gem を使っているアプリケーションを探す - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2017/03/23
  • Elasticsearch の Percolator を使った地理属性判別システムの構築 - クックパッド開発者ブログ

    こんにちは、ホリデー株式会社の内藤です。Holiday ( https://haveagood.holiday/ ) というサービスの開発を行っています。 先日開催した Cookpad TechConf 2016 では、『おでかけスポット検索のむずかしさ - Holiday を支える検索技術』という題で発表を行いました。 おでかけスポット検索のむずかしさ - Holidayを支える検索技術 from Yusuke Naito www.slideshare.net この発表では、 おでかけスポットの検索では、全文検索だけでは満足のいく結果は得られない 地理空間検索に拡張することでよりよい検索体験を作ることが可能 これを実現するための Elasticsearch の機能を紹介 というような内容を紹介しました。 例えば、我々が「中目黒」を思い浮かべた時にイメージするエリア内の住所には、「中目黒」

    Elasticsearch の Percolator を使った地理属性判別システムの構築 - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2016/03/17
  • gdbを使ったrubyのデバッグ - クックパッド開発者ブログ

    技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル

    y-teraoka
    y-teraoka 2015/12/09
  • Graylog ではじめるログ管理 - クックパッド開発者ブログ

    こんにちは。インフラストラクチャー部 セキュリティグループの星 (@kani_b) です。 主に "セキュリティ" や "AWS" といったタグのつきそうなこと全般を担当しています。 Fluentd などのデータコレクタ、Kibana やその他 SaaS による可視化、Kafka, Kinesis, Spark などのストリーム処理といった様々な分野で「ログの処理」がホットですが、アプリケーションのログ (行動ログなど) に関する話題が多くを占めています。 そうしたログの他に重要なのが OS や各種ミドルウェアのシステムログです。これらはトラブルシューティングであったり、セキュリティ上の問題を見つけたり、といったことに使われますが、最低限 syslog でどこかに集約しているだけ、といった例をよく見かけます。 これらのログをきちんと検索可能にし、分析することで、今まで気づかなかったような問

    Graylog ではじめるログ管理 - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2015/11/26
    graylog って kibana と何が違うんだ?って思ってたのでありがたい
  • アラートエスカレーションシステム"Waker"の紹介 - クックパッド開発者ブログ

    インフラストラクチャー部の荒井(@ryot_a_rai)です。今回は社内で利用しているアラート通知システムであるWakerの紹介をします。 Wakerはアラートを受け付けて、指定されたユーザに電話などの手段でアラートを通知するためのアプリケーションです。 PagerDuty アラートのエスカレーション・通知といえばPagerDutyが有名ですが、弊社では主にコスト面でPagerDutyを利用していません。日国内への電話発信はGlobal Phone Alertsとしてカウントされ、通知数にもよりますが1ユーザ当たり$29〜49/月かかります。これを高いとするか、安いとするかはそれぞれかと思いますが、ユーザが増えてくると高くなるためユーザの追加がしづらく監視の委譲・分業がすすめづらいという点がありました。 また、弊社ではシンプルなエスカレーションと電話通知のみが必要されていた、という背景が

    y-teraoka
    y-teraoka 2015/11/18
    こういうの作りたいなって思ってた。Google Calendar かあ
  • nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ

    インフラストラクチャー部 id:sora_h です。クックパッドでは、社内向けの Web アプリ (以降 “社内ツール”) を社外のネットワークから利用する際、アプリケーションレベルでのアクセス制御とは別に、リバースプロキシでもアクセス制御を実施しています。*1 これまで BASIC 認証あるいは VPN による社内ネットワークを経由した接続という形で許可していました。しかし、iOS の Safari などでは BASIC 認証時のパスワードを保存できない上、頻繁に入力を求められてしまいますし、VPN はリンクを開く前に接続をしておく必要があります。これにより、社内ツールを社外で開く時に手間がかかってしまう問題がありました。 これに対し、一部では typester/gate などを導入し Google Apps での認証を行なっていました。しかしいくつか問題があり、非アドホックな対応では

    nginx で omniauth を利用してアクセス制御を行う - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2015/10/16
  • コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ

    インフラストラクチャー部の菅原(@sgwr_dts)です。 インフラストラクチャー部のメンバーはオペレーションのため強力な権限のMySQLアカウントを使用していますが、サービス開発をするエンジニアも業務のためにサービスのDBの参照・更新権限を持ったアカウントが必要になることがあります。 セキュリティやオペレーションミスのことを考えると、すべてのエンジニアのアカウントをスーパーユーザーにするわけにはいかないため、都度適切な権限を付与していますが、手動での作業は地味に手間がかかります。 そこでクックパッドではMySQLのアカウント情報をコード化し、リポジトリで管理するようにしています。 gratanによるコード化 MySQLのアカウント管理はgratanという自作のツールを使って行っています。 gratanを使うとMySQLのアカウントをRubyのDSLで記述することができるようになります。

    コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2015/04/10
    Ansible でこれやろうかなと思いつつやってない expire は便利そう
  • オリジナルフォントを使ったデザイン - クックパッド開発者ブログ

    こんにちは、ユーザファースト推進部デザイングループの元山です。 デザイナーの皆さんはWebやアプリなどをデザインする上でフォントを作った事があるでしょうか? ずいぶんと前から「これからはWebフォントの時代だ」なんて言われながらも、現実は中々使うのが難しいなぁと感じている方は多いかもしれません。 今回はクックパッドで実際に作ったオリジナルフォントを使ったWebやアプリのデザインについて事例を交えながら紹介してみたいと思います。 クックパッドでの事例 印象と機能を向上させるデザインのためのフォント ブラウザやアプリの標準のフォントではない特殊なフォントを使う理由として真っ先にあげられるのは、やはり文字の雰囲気や見た目でデザイン的な印象や見え方を向上することができる点だと思います。最近ではAppleのWebサイトもオリジナルのWebFontを使ったデザインに変わりましたね。 クックパッドでは特

    オリジナルフォントを使ったデザイン - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2014/10/14
  • 開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ

    こんにちは。技術部の吉川です。 今回はクックパッドの開発環境構成、特に開発用データベースの構成についてご紹介します。 開発環境の構成 クックパッドのシステム環境は以下のようなフェイズに分かれています。 ※ これはcookpad.comの構成で、サブシステムや個別のサービスはその規模や特性に応じて構成が異なります。 development 開発者が実際に開発を行う環境です。クックパッドでは仮想環境は用いず、手元のマシンでRailsアプリケーションを動かして開発を行っています。 データベースはローカルではなく、開発者全体で共通の開発用データベースに接続しています。 test 手元でテストを実行する場合は、ローカルマシンのデータベースを利用します。CI(rrrspec)などの場合も同様で、テスト実行サーバーのデータベースが利用されます。 staging stagingといえば準番環境として、

    開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2014/10/03
    MySQL の replication は自由度高いよなあ
  • 料理動画を支える技術 - クックパッド開発者ブログ

    インフラストラクチャー部 星野(@con_mame)です。 少し前から、一部レシピページに料理動画を掲載していました。当初はYoutubeを使用していましたが、日から自社配信に切り替わりました。現在はまだ掲載数は少ないですが、今後掲載数を増やしていきたいと考えております。 そこで、今回は、動画配信プラットフォームの裏側がどうなっているかという点を簡単にですがご紹介したいと思います。 構成図 構成図を見ていただくのが一番わかり易いと思うので、最初に掲載します。 見て分かる通り、今回は全てAWSのサービスを使用して構築しています。 今回使用したサービスは エンコード: Elastic Transcoder データストア: DynamoDB + DynamicDynamoDB ストレージ・配信: S3 + CloudFront エンコード通知など: SNS 今回、構築までの期間とエンコードや動

    料理動画を支える技術 - クックパッド開発者ブログ
    y-teraoka
    y-teraoka 2014/06/17
  • 1