タグ

ブックマーク / ameblo.jp/principia-ca (50)

  • 『Spark StreamingでHyperLogLogを実装してみた』

    この記事は、CyberAgent エンジニア Advent Calendar 2014 の18日目の記事です。 日12/18は@sitotkfmが担当いたします。 昨日は@yuichiro.nakazawa1さんの「ログ解析にNorikraを使ってみた」でした。 明日は@strskさんです。 さて、唐突な上に私事で大変恐縮ですが最近秋葉原オフィスの近くに引っ越しました。 場所は秋葉原の少し西なので通勤途中に両国を通過します。 相撲といえば今年大記録が生まれました。 「巨人、大鵬、卵焼き」の中央に座する歴史的横綱大鵬と並ぶ32度目の優勝! そんな大横綱白鵬のブログが読めるのは アメブロだけ! (PCでみると、、、すごく、、、黒いです、、、) さてCyberAgentのAdvent Calendarとしての義理を果たしたところで題です。 私は秋葉原ラボに勤務しており、主にログの集積・解析シ

    『Spark StreamingでHyperLogLogを実装してみた』
  • 『Go言語でTestableなWebアプリケーションを目指して』

    はじめまして@shohhei1126です! 2016年1月にリリースされたAmebaFRESH!のサーバサイドを担当しております。 ここ1、2年社内でもGo言語を使うプロジェクトが増えてきているのですが(Go Lang in Cyberagent こちらもどうぞ)AmebaFRESH!でもGo言語をメインに使っています。 今回はGo言語のテストへのアプローチについて考えたいと思います。 テストの書きやすさGoでは言語レベルでテストをサポートしている(https://golang.org/pkg/testing/#pkg-overview)のでテストを書くという敷居は他の言語より低く感じます。実際これまでのプロジェクトの中で一番テストを書いていますし、やっぱりテストがあると安心感ありますね(・∀・) Mock化の難しさテストの取っ掛かりとしての敷居は低いですがデータアクセスまわりのテストを書

    『Go言語でTestableなWebアプリケーションを目指して』
  • 『画像システムの車窓から』

    2年半くらい画像システムを担当していたのですが、3月イッパイで異動することになりましたokzkです。 異動記念ということで、とりとめもなくエンジニアブログを書いてみます。長いです。よろしくお願いいたします。 画像システムのこれまでのストレージ事情最初にアメブロ(以下、単にブログ)のユーザ投稿画像関連でのストレージの歴史をアレコレをまとめてみようと思います。なお、以下swiftと書いたらOpenStack Swiftのことです。流行のプログラミング言語のことではありません。 はるか昔の状況昔は単純にWebDAVを複数台並べ、イッパイになったら更に次の世代のWebDAVを追加する、というような構成で、参照時に画像URLパスに含まれる年月ベースで適切な世代のWebDAVにルーティングしていました。 (参考:画像URLのパスの例) /user_images/20160401/00/shibuya/

    『画像システムの車窓から』
  • 『AWAにおけるDevOps』

    はじめに AWAでサーバサイドエンジニアをやっている山下といいます。初めてエンジニアブログを書かせていただきます。よろしくお願いします。 簡単に自己紹介をさせていただくと、2011年にSIerからサイバーエージェントに中途入社し、いくつかのコミュニティ系サービスの立ち上げ・運用、インフィード広告配信APIの作成などを経て、2015年4月からAWAチームに参加しました。 今回は、(今さら?な) DevOpsについてです。といってもスムーズな連携をするには といった話ではなく、現在のチームに参加してからというもの、「エンジニア間の役割が変わってきていて、DevOpsって現状にあってないんじゃないか」と感じており、それについてご紹介させていただきます。 AWAとは 定額制音楽配信サービスです。 スマートフォン、PCでアプリを提供しており、他のデバイスにも順次対応をすすめています。2015年のベス

    『AWAにおけるDevOps』
  • 『ネットワーク初心者の新卒がDockerでネットワークの勉強をしてみた』

    こんにちは!サイバーエジェント アドテクスタジオ新卒の黒崎 (@kuro_m88) と申します。 Dynalystというチームに配属され、一人前のサーバサイドエンジニアになるべく修行をしています(`・ω・´)最近はScalaを書くことが多くて、Sparkで大量のログを集計するバッチの開発をしています。ほぼ100%AWSで構成されているプロダクトなので業務でネットワークの運用もしませんし、構成の事を意識する事はあまりありません。 そんな中でネットワークの事が知りたくなったのは、広告の配信に関わる開発をしてみて、広告の配信の仕組み自体も技術的にめちゃくちゃ面白いんですが、それと同時に自分たちのサーバから広告が表示される端末までの間がどうなってるのか気になってしまったのがきっかけです。学んでいくにはやはり手を動かすのが一番ですよねo(((^^)))o

    『ネットワーク初心者の新卒がDockerでネットワークの勉強をしてみた』
  • 『Flexible Blue Green Deploymentのススメ』

    どうもこんにちは。@stormcat24です。前回寄稿した記事から1年半ぶりになります。 主な仕事は業務中のTwitterで、その傍らでAmebaFRESH!というサービスを絶賛開発してたりしています(この記事が公開される頃にはリリースしてるかしら?)。何かネイティブやりに意気揚々と異動してきたんですが、いつの間にかサーバサイドエンジニアになってました。まあサーバサイドといっても、自分はかなりWebオペレーション寄りなんですけど。 で、今回はFlexible Blue Green Deploymentの仕組みを作ったよっていうお話です。 そもそもBlue Green Deploymentとは Blue Green DeploymentとはImmutable Infrastructure(不変なインフラストラクチャ)思想の一貫で、サーバの内容やアプリケーションを更新したい場合に、稼働している

    『Flexible Blue Green Deploymentのススメ』
    clavier
    clavier 2015/10/15
    Flexible Blue Green Deploymentのススメ|サイバーエージェント 公式エンジニアブログ
  • 『自動購読課金について【iOS編】』

    はじめに AWAサーバサイドエンジニアの辻(jun06t)です。 今回はiOSとAndroidの月額課金のための実装について書かせていただきます。 形式として読み物と言うよりドキュメントっぽくなっています。 理由は私が実装しようとした際に実装方法についてまとめて書かれた記事が少なく、「検証時に使えるフィールドはどれだろう?」「昔はこうだったけど、今は違う?」「Androidではできるけど、iOSではできない(逆も然り)」など、色々と分からない部分が多くとても困ったためです。 やや長い記事となったため、iOSの実装を前編、Androidの実装を後編として説明させていただきます。 注意事項 ※1:開発中にプラットフォーム側の仕様変更があったなど、記載している内容は情報が古い可能性があります。 ※2:記載している動作は十分に調査できていないものも含んでいるため、内容が不正確である可能性があること

    『自動購読課金について【iOS編】』
  • 『Amebaのログ解析基盤のワークフロースケジューラー』

    技術部でログ解析基盤を担当している善明です。 Amebaのログ解析基盤Patriot向けに開発したワークフロースケジューラーをオープンソースとして公開したので、その紹介をさせて頂きたいと思います。 開発の背景Patriotのようなログ解析基盤では、データの取り込み、変換、集計という一連の処理の流れ(ワークフロー)を管理する必要があります。 これがないと、例えば、必要なデータがそろってないのに集計処理が実行され誤った数字がレポーティングされる、といった事態を引き起こしてしまいます。 PatriotではAmebaの様々なサービスのデータを扱っており、それを処理するためのワークフローは大規模で複雑なものになります。 また、例えば、ブログとピグの両方を使っているユーザ数などの複数のサービスをまたぐ集計も行っているのでサービス毎にワークフローを分割して管理するのは難しく、継続率や累計利用日数など処

    『Amebaのログ解析基盤のワークフロースケジューラー』
  • 『最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法』

    最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法 | サイバーエージェント 公式エンジニアブログ こんにちは. エンジニアの平野です. ふだんはプライベートクラウドのサーバハードウェアとストレージを担当しています. サーバのリプレイスや増設, 仮想サーバの移植などでテラバイトクラスのデータを2つのサーバ間で転送することがよくあります. こんなとき, 転送終了を待ちながら「あと何時間掛かるのかなー」とか「もっと速く転送終わらないかなー」なんて考えたことはありませんか? 今回は下記のようなシーンで活躍する, 特盛りデータを30倍高速に転送する方法をご紹介します. - サーバの交換でデータを移設したい - MySQLスレーブサーバの増設したい - 仮想サーバを別のホストに移植したい - 大量のファイルを別のサーバに移設したい - 大容量データをバックアップしたい ■ 環境を用

    『最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法』
    clavier
    clavier 2015/05/28
    最速を究める! 2つのサーバ間で特盛りデータを30倍速で転送する方法|サイバーエージェント 公式エンジニアブログ
  • 『Tellme for Androidで使ったライブラリやツールを紹介するよ』

    Tellme for Androidで使ったライブラリやツールを紹介するよ | サイバーエージェント 公式エンジニアブログ こんにちは。エンジニアの清水です。 昨年の7月まではフロントエンドエンジニアとして主にJavaScriptを書いていたのですが、2014年8月からネイティブエンジニアとしてAndroidアプリを作っていました。 4月からはまたフロントエンド仕事もしています。 今回は、私が開発に携わったTellmeというQ&AサービスのAndroidアプリで利用したライブラリを紹介してみようと思います。サンプルコードも書く意欲が湧いたものは書いていきます。 ※ちなみにこんなアプリです Libraries ButterKnife ButterKnifeはアノテーションを用いてView Injectionを行うライブラリです。 これを使うとonCreate/onCreateViewの中で

    『Tellme for Androidで使ったライブラリやツールを紹介するよ』
  • 『新米Androiderが開発する上できっと役立つであろう10のサイト』

    はじめまして、 ogaclejapan です。 昨年の6月にサーバサイドJavaエンジニアからAndroiderへ暗黙な型変換でジョブチェンジしました。会社ではAmeba事業部でAndroidアプリの開発を担当しています。

    『新米Androiderが開発する上できっと役立つであろう10のサイト』
  • 『flynnを使ったオートスケーリングシステム』

    さて、今回の記事のネタは「flynnというオープンソースを使ってオートスケーリングシステムを構築してみた」というお話です。

    『flynnを使ったオートスケーリングシステム』
  • 『golangのある生活』

    こんにちは 技術部でエンジニアというかプログラマをしております、okzkと申します。 最近ようやくとっかかり始めたgo言語についてグダグダ書いてみます。とはいえgo歴1ヵ月程度のgo弱ですので、生暖かい目で読んでみてください。 go言語について Google謹製の比較的新しめのプログラミング言語です。 詳細は「golang」でググってみてください。 最近ではDockerに代表されるようにgoで作られたメジャーなプロダクトも出てきてますし、そろそろこのビッグウェーブに(ryと思って一か月くらい試行錯誤してみた上での個人的印象は次のようなカンジです。 言語設計における機能の取捨選択が非常に特徴的。 CSPをベースにしているだけに、並列プログラムのサポートがイケてる。 gopher君はまあともかくとして、擬人化マダー? なお言語設計については、go言語FAQをみると「言語として何を取捨選択して

    『golangのある生活』
  • 『Rails4へのアップグレードを行ったお話』

    この記事は、CyberAgent エンジニア Advent Calendar 2014 の24日目の記事です。 コミュニティ事業部の後藤(@shiro166)です。 パシャっとmyペット(以下パシャペ)というサービスのシステム責任者をやっています。 パシャペでは今年の2月にPHP(CodeIgniter)からRuby(Ruby on Rails)へのリプレースを行いました。 リプレースを行った当初はRuby2.0系最新とRails3.2系最新を使用していたのですが、 6月にRubyを2.1へ10月にRailsを4.1へのアップグレードを行いました。 今回はリプレースの際のお話ではなく、 Railsを3.2から4.1へアップグレードした際に行った作業の一部の話になります。 構成サイバーエージェントでのRailsアプリケーションの基的な構成は大崎さんが 以前このブログに書いたこちらの記事を

    『Rails4へのアップグレードを行ったお話』
  • 『NewSQLのCockroachDBについて調べてみた』

    CyberAgent エンジニア Advent Calendar 2014の23日目の記事です。 秋葉原ラボの、鈴木(@brfrn169 )、Shtykh Roman、柿島大貴です。 普段は、分散DB(主にHBase)やストリーミング処理基盤の開発・運用などをやっています。 今回は、NewSQLの1つであるCockroachDBについて紹介します。 NewSQLとは CockroachDBについて紹介する前に、NewSQLについて簡単に説明します。 NewSQLとは、一言で言うとNoSQL+SQL機能(トランザクション)です。 RDBMSとNoSQLの良いとこどりをしているともいえるでしょう。 従来、RDBはスケールアウトのしづらいモノリシックな作りになっていました。 しかし、RDBでは、昨今のビックデータの潮流に対応できず、NoSQL技術が登場します。 NoSQLは、スケールアウトが容

    『NewSQLのCockroachDBについて調べてみた』
  • 『アメーバピグへのGoogle BigQuery導入までのもろもろ設定記』

    この記事は、CyberAgent エンジニア Advent Calendar 2014 の6日目の記事です。 5日目はnekoruriさんのAmeba等で利用しているOpenStack Swiftを利用したオブジェクトストレージ 7日目はoinumeさんのGoLangJavaのenumっぽいライブラリ作った話です。 こんにちは、ピグ事業部のIshimura(Twitter, Github)といいます。アメーバピグのサーバサイドエンジニアをしています。ユニットテストとリファクタリングが好物です。 今回はタイトル通りなのですが、アメーバピグでGoogle BigQueryに実際にログを突っ込むまでに行った設定を記します。アメーバピグではBigQueryを各種施策の検討・評価のための分析用に利用する予定です。 BigQueryの特徴やメリットはググれば(Googleだけに)たくさん出てくるので

    『アメーバピグへのGoogle BigQuery導入までのもろもろ設定記』
  • 『サイバーエージェントでRailsを使っているコミュニティサービスのお話』

    アメーバ事業部コミュニティ事業部の大﨑 (@hiroosak)です。 24LOGというサービスの開発を担当しています。 サイバーエージェントでは、コミュニティサービスが多数存在しているのですが、 実は、その中のいくつかのサービスでRailsが使われています。 ですが、社内・社外問わずあまり知られていないようです。 なので、今回は、Railsを使ったプロジェクトでは どのように開発が行われているかを簡単に紹介したいと思います。 基構成 構成図の概要は上の図の通りです。 (監視サーバなどは上の図から省いています) 静的なファイルは、社内の共通ストレージに置き、検索については 社内のラボチームで用意したシステムと連携しています。 なのでプロジェクトのチームでは、主に app, db, cache, queue を見ています。 ちなみに、rubyのバージョンは主に2.0, railsは3.2で

    『サイバーエージェントでRailsを使っているコミュニティサービスのお話』
  • 『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』

    サイバーエージェント公式ブログをご覧の皆さんこんばんは、インフラ&コアテク部の須藤(@strsk)です。普段はAmebaのソーシャルゲーム全般のインフラを見つつ、日語ラップの啓蒙をしながら弊社社員を素材にコラ画像をつくったりしています。好きなAAは麻呂です。 はい、というわけで今回はMySQLインデックスチューニングの基的な流れについてまとめてみました。 ソーシャルゲームは更新も参照もめちゃくちゃ多いです。数秒のレプリケーション遅延も致命的なので適切なテーブル、クエリとインデックス設計が重要です。(何でもそうですけど)インデックスが多くなると更新コストなどが懸念されますが、インデックスが正しく使われていないクエリを放置している方が悪です。そんなこんなで、割と例も偏ったりしてるかもしれませんがあしからず。 前提としてはInnoDBを想定しています。MyISAMはほとんど使っていません。

    『MySQL初心者に贈るインデックスチューニングのポイントまとめ2014』
  • 『TOTEC2014 インフラチューニング(チューニンガソン)で優勝したはなし』

    TOTEC2014 インフラチューニング(チューニンガソン)で優勝したはなし | サイバーエージェント 公式エンジニアブログ インフラ&コアテク部の仲山です。 「TOTEC2014 インフラチューニング」という社内チューニンガソンイベントで優勝をいただいたので、 技術ブログを書くことになりました。 TOTECは、サイバーエージェントグループ内の技術者コンテストで、 インフラ、フロントエンド、サーバサイドの分野ごとに、 「チューニンガソン」と呼ばれる形式でその速度向上を競い合います。 今回の「インフラチューニング」では、 参加者はソフトウェアのソースコードを改変できないため、 あくまでミドルウェア等の変更、チューニングや、サーバ構成の最適化のみで闘います。 主なレギュレーション 運営があらかじめ用意したMediaWikiの応答速度を競う。 ソースコードの変更は禁止だが、設定ファイルの編集は

    『TOTEC2014 インフラチューニング(チューニンガソン)で優勝したはなし』
  • 『Cassandraのデータ設計で注意していること』

    Ameba Smart Phone PlatformAPI開発を担当している狭間と申します。今回はAmeba Smart Phone Platformで使用しているCassandraのデータ設計時に気をつけていることを実際に起きた事例を交えてお話したいと思います。 Cassandraのverstionは1.1.5を使用していて、100台構成のクラスタを組んでいます。ピーク帯ではおよそ50000write/sec、40000read/secのリクエストを処理していて、およそ45TBのデータを保持しています。そのような条件下で発生した事例と対処方法を紹介させていただきます。

    『Cassandraのデータ設計で注意していること』