タグ

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

  • Android版クックパッドアプリで採用している技術の現状確認 2015年版 - クックパッド開発者ブログ

    目次 はじめに 技術選択の基的な方針 技術選択の各論 HTTP Client Dependency Injection View Injection Asynchronous Control Flow Object Relation Mapper Logging Fragment はじめに 技術部の id:gfx です。 Androidクックパッドアプリのリニューアル*1 から約1年たちました。現在はリリースごとに5人程度がコミットし、2週間に1度リリースを行う開発体制となっています。プログラミング言語はJavaで、コメントも含めたアプリのソースコードの行数は約15万行です。 エントリでは、Androidクックパッドアプリで使っている技術、具体的にはライブラリやフレームワークについて紹介します。また、そのための技術選択のアプローチについても概説します。 技術選択の基的な方針 まず

    Android版クックパッドアプリで採用している技術の現状確認 2015年版 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/06/25
    失敗例や理由も書いてあって参考になる。 "Android版クックパッドアプリの採用している技術の現状確認 2015年版"
  • シンプルで移行しやすいデータベースシャーディング - クックパッド開発者ブログ

    技術部の小野(taiki45)です。クックパッドではこれまで様々なデータベースの負荷対策を行ってきましたが、シャーディングは行われていませんでした。しかし先日クックパッドの認可サーバーが利用している MySQL サーバーの負荷分散のためにクックパッドで初めてのシャーディングを行ったので、Rails アプリケーションでのシャーディングの事例のひとつとしてその際の手法をご紹介したいとおもいます。 構成 Before データベースは1マスター、1ホットスタンバイ、バッチ用の1リードレプリカで構成されています。Read オペレーションのほとんどはキャッシュ層に逃しています。 After データベースの各ロールにつきそれぞれ1台ずつマシンが増えています。 シャーディングが必要になった背景 認可サーバーのアクセストークンの作成・削除時の Write オペレーションが急増し、レコード数自体も急増していて

    シンプルで移行しやすいデータベースシャーディング - クックパッド開発者ブログ
    key_amb
    key_amb 2015/06/22
    ハッシュ関数による ID => shard のマッピング。MySQLマルチマスターレプリケーションによる構成の移行
  • Cognitoを使ったらAndroidアプリプッシュ通知実装にサーバサイドプログラミングが不要になった話 - クックパッド開発者ブログ

    こんにちは、id:hogelog(会員事業部 小室)です。 現在自分が開発しているAndroidアプリのプッシュ通知の実装に Amazon Cognito, Amazon SNS, Amazon DynamoDB を使ったらアプリコード(と、AWSの設定)だけで機能が実現できてしまい、予定していたサーバサイド実装がまったく不要となったのでその知見を共有します。 アプリプッシュ通知の要件 今回実装したプッシュ通知の要件は以下です。 プッシュ通知を許可したユーザ全員に共通した内容を一斉通知 通知はバッチプログラムから週に数回程度 年内には一万ユーザぐらいに利用されること目標 GCMトークンはデータストアに記録しておく 将来的にはA/Bテストなどをおこなうことも可能なように 当初はこれらの機能を実現するため、適当なRailsアプリでGCMトークンを受け取ってうまいことあれこれするAPIを実装しよ

    Cognitoを使ったらAndroidアプリプッシュ通知実装にサーバサイドプログラミングが不要になった話 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/06/16
    こういうパラダイムシフト進んでいきそう。 "Cognitoを使ったらAndroidアプリプッシュ通知実装にサーバサイドプログラミングが不要になった話"
  • クックパッドのサーバプロビジョニング事情 - クックパッド開発者ブログ

    インフラ部の荒井(@ryot_a_rai)です。この記事ではクックパッドで利用しているプロビジョニングツール "Itamae" の紹介と細々した Tips を紹介します。 式年遷宮とプロビジョニングツール 現在、弊社ではインフラの式年遷宮*1を進めています。式年遷宮以前、弊社では Puppet を利用してサーバをセットアップしていましたが、式年遷宮に際して既存のプロビジョニングに関するコードは捨てることになるため、プロビジョニングツールの再検討を行うことになりました。 Puppet, Chef, Ansible, SaltStack を検討した結果、 言語特性の観点では、Ruby DSL な Chef が良い アーキテクチャ・エコシステムの観点では、シンプルな Ansible が良い といった点から、どれも決め手に欠ける状況で、Ruby DSL で記述できるシンプルなプロビジョニングツール

    key_amb
    key_amb 2015/05/12
    流行ってから乗っかりたいけど、軽量・シンプル・大規模までスケールするっていう思想・設計は好きです。/ "クックパッドのサーバプロビジョニング事情 - クックパッド開発者ブログ"
  • ElastiCache for Redisの新機能をためしてみた - クックパッド開発者ブログ

    インフラストラクチャー部 星野(@con_mame)です。 クックパッドでは、AWSを活用してサービスを行っています。 現在クックパッドでは、各種キャッシュにMemcachedやRedisを使用しています。 しかし、用途の多様化やアクセス数の増加などでこれらのサーバのインスタンス数が増加し管理コストが増加してきています。 特にRedisサーバのインスタンス数が増加しており、AWSのサービスの中でもキャッシュのサービスを提供しているElastiCache for Redisへの置換えを検討しています。 ElastiCache for Redisは、一部管理系のコマンドがrenameされており使用出来ませんが、通常のRedisと同じ物で、現在Version 2.6.13と2.8.6が使用出来ます。 SlaveにあたるものはReplication Groupという形で指定でき、Replicati

    ElastiCache for Redisの新機能をためしてみた - クックパッド開発者ブログ
    key_amb
    key_amb 2015/04/30
    バックアップ・リストア機能うれしいですね。負荷に注意、と。/ ElastiCache for Redisの新機能をためしてみた - クックパッド開発者ブログ /
  • クックパッドにおけるサーバ監視と運用の工夫 - クックパッド開発者ブログ

    こんにちは。インフラストラクチャー部の加藤(@EugeneK)です。 今回はWebサービスを運用する上で欠かせない、モニタリングをクックパッドでどうしているかという話をします。 死活監視と性能監視 Webサービスを運用している以上、そのサービスを稼働しているサーバがあり、サーバには故障やトラブルが発生します。 また、どれくらいのパフォーマンスが出ているか、リソースをどのくらい消費しているかなどのトレンドを把握することは、成長するサービスを支えていく上で欠かせません。 故障やトラブルにいち早く気づくための仕組みを死活監視と言います。 また、サーバリソースの時系列での推移を知るために、グラフとしてトレンドを可視化する仕組みを性能監視と言います。 ポーリング監視の限界とZabbixのアクティブ監視 クックパッドでは死活監視にNagios、性能監視にMuninを使用してきましたが、サーバ台数の増加

    クックパッドにおけるサーバ監視と運用の工夫 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/04/28
    Zabbix Proxy で多リージョン展開に対応 / "クックパッドにおけるサーバ監視と運用の工夫 - クックパッド開発者ブログ"
  • Docker を利用した Web アプリケーションのデプロイ - クックパッド開発者ブログ

    技術部の鈴木 (id:eagletmt) です。 クックパッドでは一部の Web アプリケーションサーバで Docker が使われており、今回はそのデプロイ方法について紹介します。 Docker で Web アプリケーションをデプロイするときには、まだまだベストプラクティスがある状況ではありません。 たとえば、どのように無停止でデプロイするか、どのようにコンテナと通信するかといった問題があります。 最初に Apache Mesos と Marathon などのツールを検証しましたが、クックパッドの環境において使いやすそうなものはなく、最終的に自前でデプロイのしくみを作ることにしました。 しかし Docker 周辺のツールは様々な新しいものが出てきている最中です。 今はまだベストなものが無いけれども、近いうちによりよいものが出てくるかもしれません。 そのため、できるだけ単純なしくみにしておく

    Docker を利用した Web アプリケーションのデプロイ - クックパッド開発者ブログ
  • コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ

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

    コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/04/10
    素晴らしい。/ コードで行うMySQLのアカウント管理 - クックパッド開発者ブログ /
  • クックパッドの課金を支える技術 - クックパッド開発者ブログ

    こんにちは、技術部の大石です。開発基盤グループで課金システムの担当をしています。 インターネットサービスの決済・課金システムの開発や運用は、サービスの根幹を支えるために正確性と機能性を満たさなくてはなりません。また同時に、価格や料金体系、決済手段のバリエーションでユーザーに利便性を提供する必要もあります。「堅牢性」「信頼性」と「柔軟性」「開発スピード」という相反する要素の両立が求められます。 その結果、決済・課金システムは適切な設計や運用を意識しないと複雑になってしまいがちです。 課金システムの開発、運用でよくある問題 複数の決済方法を同じサービスの上で共存させる難しさ 例えば、最初にクレジットカード決済を導入して、その後にコンビニ決済、キャリア決済やアプリ内決済と決済方法が増えていくことはよくあることです。 最初の導入の際にクレジットカード決済への設計だけでなく、その後に増えていく決済を

    クックパッドの課金を支える技術 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/04/10
    共通決済機能というMicroService "クックパッドの課金を支える技術"
  • 新規サービスの管理画面を短期間で見栄え良く実装する - クックパッド開発者ブログ

    こんにちは、クックパッド料理教室の京和です。 管理画面はほとんどのウェブサービスに存在し、ユーザサポートやサービスの状況・KPIなどを確認するために、スタッフが毎日利用するとても重要なものです。にも関わらず、新規サービスでは人員が不足していることから、ついおざなりなデザインや実装になりがちなのではないでしょうか。 今回はクックパッド料理教室で採用している、RailsのMountable EngineとBootstrapのデザインテンプレートを使った、見栄えがよくメンテナンスしやすい管理画面を短期間で実装する方法についてご紹介します。 Mountable Engineとは Mountable EngineはRailsアプリケーション上で動く、ミニRailsアプリケーションのようなものです。 ミニと書きましたが、Railsアプリケーション(Rails::Application)はRails::

    新規サービスの管理画面を短期間で見栄え良く実装する - クックパッド開発者ブログ
    key_amb
    key_amb 2015/04/06
  • 新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ

    こんにちは、技術部 高井です。 春といえば、フレッシュマンの季節ですね。このブログを読む方の中には、明日からエンジニアとして新社会人になるという方もいらっしゃるのではないでしょうか。クックパッドでも新しい仲間を迎えるための準備をしていたところで、その準備の一環として「新卒ソフトウェアエンジニアのための技術書100冊」というものを作成しました。 この100冊は、職業ソフトウェアエンジニアとしてキャリアを積むにあたって、読むべき技術書に悩んだら、まずはこのリストから選ぶとよいのではないでしょうかという提案です。 リストに多少の趣味や主張がはいっているのは、まあご愛嬌ということでお許しいただければとおもいますが、職業プログラマとして知っておくべき知識を網羅できるように心がけました。古典と呼ばれる名著についてはできるだけ取りいれ、独習が難しい難解なコンピュータサイエンスの教科書は避けています。これ

    新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/31
    ( ..)φメモメモ / 新卒ソフトウェアエンジニアのための技術書100冊 - クックパッド開発者ブログ :
  • コードレビューに費やす時間を短くする - クックパッド開発者ブログ

    はじめに こんにちは、広告事業部の芳賀(@func09)です。普段はクックパッドの広告配信周りや純広告・タイアップ広告などの商品開発を行っています。 私が広告事業領域の仕事をするようになって、そろそろ1年になるのですが、初めはエンジニア以外の人(営業、編集、広告入稿、レポート、メール配信、などなど様々な担当者がいます)と業務をすることが多くてコミュニケーションが上手くいかず業務がスムーズに進まないことがありました。 当たり前のことではありますが、エンジニアにしかわからない言葉は使わないとか、できるだけ相手の業務を理解し相手の考え方や視点に立って話すなど、ちょっと工夫することで、長引きがちなMTG相談がすんなり終わったり、お互い良い気分で終わることが多くなって、費用対効果が高いなと感じています。 一方でエンジニア同士のコミュニケーションでも時間がかかってコストが高いと感じることがあります。

    コードレビューに費やす時間を短くする - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/30
    大事だと思う。/ コードレビューに費やす時間を短くする - クックパッド開発者ブログ :
  • たとえば、CTOになる計画をたててみる - クックパッド開発者ブログ

    クックパッドで広告領域の企画や実装などを担当している大野です。 2015年期から広告領域ががふたつの事業部に分かれ、私は「新規広告開発部」に所属しています。この事業部は、新しい顧客や販路から収益を上げることと、既存を含む広告の配信を技術的に最適化して収益効率を向上させること、のふたつの目的から新設されました。 事業部に所属するメンバーは、営業やエンジニアといった職種に関わらず、それぞれ収益に対してコミットしています。そして、収益源やビジネスモデルはそれぞれ異なっています。 今回は、特にエンジニアがこうした環境において、やることおよびその優先度をどのように議論して決定しているかを紹介します。やりたいことやアイディアをどう出していくかについては稿では議論しません。 ちょうど25日に公開された成田による議論 が参考になります。 優先度 = 回収可能額 * 必要投資規模 いきなり結論めいた話です

    たとえば、CTOになる計画をたててみる - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/30
    最近エモいエントリ多い気がする。 / "たとえば、CTOになる計画をたててみる"
  • 雑な発想を活かすチーム作り - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。インフラストラクチャー部は、クックパッドで扱っている全サービスのサーバを設計・構築し、運用しているチームです。2015年3月現在、6人のメンバーで運用をしています。 さて、この運用というのは外から見ていると保守的な仕事に思えるかもしれませんが、その実、とてもクリエイティブな仕事です。クックパッドのサービスは一日平均で10回以上デプロイされており、アクセスも日々増え続け、状況は刻一刻と変化しています。今日動いているサーバ構成が、一年後に通用するとは限らないわけです。そんな変化に追従するためには、サーバを常に改善していかなければなりませんし、チームにも柔軟な発想が求められます。 「さあブレストしよう」→アイデア出ない問題 さあ業務を改善しよう、と意気込んでブレインストーミングを開いても、なかなか十分なアイデアが出きらないのはよくある話です

    雑な発想を活かすチーム作り - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/25
    雑にアイディア出せる環境、大事ですね。 / "雑な発想を活かすチーム作り"
  • 日経電子版xクックパッド データハッカソンの開催報告 - クックパッド開発者ブログ

    検索・編成部の兼山です。 3/7に日経電子版xクックパッド データハッカソンが開催されました。 今回はデータハッカソンの報告をさせていただこうと思います。 開催概要: 日経電子版×クックパッド データハッカソン for students 公開されたデータ 日経電子版 記事テキストデータ 紙面画像データ 株式数値データ 他にも多くのデータにアクセスできました クックパッド レシピデータ 献立データ 検索ログデータ(1ヶ月分) 参加してくれた学生 18人 人気だったツール: R, Python, word2vec 成果 7チームに分かれて取り組んで頂きました。 3つの賞を設けた都合、3つプロジェクトを紹介させていただきます。 ハッカソン実施後に両社の主催者で話しましたが、どのチームも我々の期待値を超えていて大変面白かったです。 最優秀賞 材のつながりについての分析: このチームは材のつなが

    日経電子版xクックパッド データハッカソンの開催報告 - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/16
  • タイアップページでのLiquidの利用について - クックパッド開発者ブログ

    こんにちは。広告事業部の鈴木です。 皆さんはLiquidと呼ばれるテンプレートエンジンをご存知でしょうか? LiquidはShopifyのメンバーを中心として開発されているテンプレートエンジンの一種で、 最近ではJekyllに使われていることでも知られています。 クックパッドの広告事業部では、広告商品の一つであるタイアップページ*1でこのLiquidを活用しています。 例. マルちゃん焼そば弁当コンテスト! [クックパッド] 簡単おいしいみんなのレシピが199万品 このタイアップページでは、そこからリンクされているレシピ応募コンテストページにユーザさんが投稿してくれたレシピ数を表示するのにLiquidが使われています。 タイアップページにはデータベースに保存されたデザイン済みのHTMLに以下のようなプレイスホルダーになっているタグが含まれていて、ページがレンダリングされる際にコンテストへの

    タイアップページでのLiquidの利用について - クックパッド開発者ブログ
    key_amb
    key_amb 2015/03/13
    はて。単にテンプレートをDBに入れただけではないのかな。/ タイアップページでのLiquidの利用について - クックパッド開発者ブログ :