タグ

ブックマーク / developers.microad.co.jp (22)

  • 効率的なダッシュボードの作成 - MicroAd Developers Blog

    京都研究所・TechLabの田中です。 マイクロアドでは、主にエンジニア以外のメンバーが広告配信実績などの各種データにアクセスする際にRedashを利用しています。 Redashから接続しているデータソースには、以前このブログでも紹介した分析用Hadoopクラスタ*1に加えて、MySQLのレプリやBigQueryなどがあります。 これらの異なるデータソースに対してRedashからは同じインターフェースでアクセスでき、手軽にデータの抽出や可視化・分析などが可能です。 また、クエリで抽出したデータを利用して、Redash上にダッシュボードを作成することもできます。 稿では、そんなRedashの活用方法の1つとして、 スケジューリング機能とキャッシュ機能を利用した簡易的なデータパイプラインを使ってダッシュボードを作成する例をご紹介します。 なお、この記事で扱うRedashの説明はバージョンv1

    効率的なダッシュボードの作成 - MicroAd Developers Blog
  • CDH (Hadoop) 入門 - MicroAd Developers Blog

    はじめに 初めまして。マイクロアド21年新卒インフラ担当の森( id:bosq )と申します。 7月に新卒研修を終えてからは、基盤開発グループにて日々勉強しています。 配属後は新しいことのインプットが多いため、今回は学んだことの整理とアウトプットを兼ねて、マイクロアドのデータ基盤で利用しているHadoopについて紹介したいと思います。 はじめに 分散処理基盤 Hadoop / CDH とは Hadoop エコシステム データストレージ (HDFS) と リソース管理 (YARN) HDFS (Hadoop Distributed File System) YARN (Yet Another Resource Negotiator) ノードの役割 分散処理エンジン (MapReduce, Tez, Spark) MapReduce Apache Tez Apache Spark クエリエンジ

    CDH (Hadoop) 入門 - MicroAd Developers Blog
  • redis threadedI/Oの検証 - MicroAd Developers Blog

    はじめに マイクロアドでインフラエンジニアをしている柏木です。 マイクロアドでは広告配信に高速なKVSであるRedisを使用しています。 Redisはシングルスレッドでの高速性、安定性を売りにしていました。しかし6.0でマルチスレッド機能であるThreded I/Oが追加されました。 広告配信で多用している、Redisを高速化できるのであれば積極的に導入したいので検証を行いました。 はじめに Threded I/Oとは シングルスレッドでのRedisの処理 マルチスレッドでのRedisの処理 io-threads io-threads-do-reads + io-threads 検証環境 OSの追加設定 今回の検証結果 前提条件 指標の取得方法について loopbackアドレスを利用した検証 実行CPUの指定 Redisの起動コマンド Redisのconfigについて 暖機運転 検証1:I

    redis threadedI/Oの検証 - MicroAd Developers Blog
  • Moleculeのdelegatedドライバ + OpenStackでAnsibleのテストを行う - MicroAd Developers Blog

    インフラエンジニアの長田です。 今回は、Ansibleのテスト支援ツールであるMoleculeの実践例について記事にしたいと思います。MoleculeはDockerPodmanでコンテナを起動し、その中でAnsibleロールのテストを簡潔に行うことができる便利なツールですが、Ansibleで実行したいロールの中にはgrub2のようなブートローダのコンフィグやカーネルパラメータの変更、ネットワーク機器の操作など、コンテナ上でのテストが困難であるケースも存在します。そこで、Moleculeのdelegatedドライバを用いてOpenStack上にインスタンスを構築し、これらのテストを実現したいと思います。 以下、各ツールのバージョンについて、Ansibleは 2.9.9 を、Moleculeは 3.0.4 を前提としています。 OpenStackインスタンスの作成・削除 Moleculeのd

    Moleculeのdelegatedドライバ + OpenStackでAnsibleのテストを行う - MicroAd Developers Blog
  • 新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog

    はじめに モノイド 代数学 圏論 Scalaでモノイドを実装する 代数学的な定義に従った整数を加算するモノイドの実装 圏論的な定義に従った整数を加算するモノイドの実装 モノイドの合成 Catsによるモノイドの利用例 おわりに はじめに こんにちは。マイクロアドでソフトウェアエンジニアをしている飛田と申します。私は主に UNIVERSE Ads というプロダクトの開発に携わっています。 UNIVERSE Ads では、より関数型ライクな設計や実装を取り入れることにより、高い保守性を目指しています。 この記事では、関数型プログラミングの入門的な話として、モノイドについて調べてみたので、この記事で共有させていただきたいと思います。 モノイドについてより深い理解をするために、まず、圏論と絡めたモノイドの説明をしたいと思います。 そしてその次に、より理解を深めるために、Scala のサンプルコードを

    新卒2年目のエンジニアがモノイドの数学的な定義について調べてScalaで実装してみた - MicroAd Developers Blog
  • Jestを使ったVueコンポーネントのテストを導入した話 - MicroAd Developers Blog

    はじめまして、フロントエンドエンジニアをしている川上です。 業務では、主にサービス要件に沿ったフロントエンド開発を担当しています。 今回は、私自身初めての経験だったフロントエンドのテスト導入手順や、 導入するにあたって気をつけた点などをお話しできればと思います。 はじめに Vueコンポーネントのテストについて Jestの導入について Jestを利用したテスト おわりに はじめに マイクロアドには様々なプロダクトがありますが、私の担当しているUNIVERSEというプロダクトについては、 フロントエンドフレームワークにVue.jsを利用しています。 jp.vuejs.org テストの導入を行うにあたって、今後、現在利用しているVue2をVue3へ移行していくことを考えると*1 TypeScript*2でテストを書いていくのがいいということになりました。 また、TypeScriptのメリットでも

    Jestを使ったVueコンポーネントのテストを導入した話 - MicroAd Developers Blog
  • 新卒がMLOpsに挑戦していく話 - MicroAd Developers Blog

    システム開発部のデータサイエンスユニットに所属している19新卒の豊原です。 巷で結構耳にするMLOpsですが、結構苦労していらっしゃる組織も多いと考えます。 今回の記事では、マイクロアドで挑戦するMLOpsについての概要と、その挑戦について解説します。 機械学習システムが抱える根的な問題 私たちの思うMLOpsとは CEという概念 レコメンドシステムが抱える根的な性質 マイクロアドが作るシステムの現状 MLOpsで実現すること 技術的詳細 Airflowを用いて学習を同時並行で回す MLflowを用いて学習結果を保存する 機械学習エンジニア絶賛採用中 機械学習システムを構築する上で、他の通常のシステムと決定的に違うことがあります。 それはシステムの劣化の早さ*1と問題調査という点にあります。 機械学習システムが抱える根的な問題 機械学習システムが抱える根的な性質として、データを基

    新卒がMLOpsに挑戦していく話 - MicroAd Developers Blog
  • Digdagバッチの基本設計とビルドの実例紹介 - MicroAd Developers Blog

    サーバサイドエンジニアの大澤です。主にETL処理のバッチ開発を行っています。 以前の記事で紹介していますが、マイクロアドではバッチ処理のワークフローを主にDigdagを使用して管理しています。 今回は、Digdagを1年以上使ってきてたどり着いた構成について紹介したいと思います。 Digdagバッチ CI/CDの構成 GitHub Enterprise上のバッチを管理しているリポジトリの変化に応じてJenkinsがビルド、テスト、コードチェック、デプロイまで行うようになっています。 バッチはDigdagとDockerを使用して動作するように作っているので、DockerレジストリとDigdagサーバに成果物を登録します。 成果物は対象のブランチに応じて行き先が変化し、masterブランチの変更の場合番用の環境へ、その他の場合開発用の環境にデプロイされます。 CIの内容はリポジトリ内のJen

    Digdagバッチの基本設計とビルドの実例紹介 - MicroAd Developers Blog
  • Google Compute Engine を用いた機械学習モデル学習バッチのスケジュール実行 - MicroAd Developers Blog

    こんにちは、機械学習エンジニアの河 (@nnkkmto) です。マイクロアドのシステムにおいて、機械学習が必要な部分の研究開発及び実装を担当しています。 この記事では GCP (Google Cloud Platform)、特に GCE (Google Compute Engine) を用いた機械学習モデル学習バッチのスケジュール実行について紹介できればと思います。 はじめに 前提 全体の流れ 各処理の詳細 スケジューリング Cloud Scheduler Cloud Pub/Sub Cloud Functions インスタンス起動による学習バッチの実行 preempted 時のリトライ処理 終わりに はじめに 現在マイクロアドでは、以下にあるようにGCP を用いた機械学習基盤の構築を進めていて、Kubeflow を用いた実行環境へ移行予定です。 オンプレ×Google Cloud Pl

    Google Compute Engine を用いた機械学習モデル学習バッチのスケジュール実行 - MicroAd Developers Blog
  • Builderscon2019の参加レポート - MicroAd Developers Blog

    こんにちは、まっつーです。 Builderscon2019が終わって早1ヶ月が経とうとしていますが、builderscon2019の2日目に参加してきたのでそのレポートを書きたいと思います! ↓ マイクロアドのエンジニア達です。スポンサー特典で招待枠をもらったので参加させてもらいました! 目次 Open SKT: メルペイ開発の裏側 CN Buildpacksが作る未来 非同期処理の歴史から見たコンピューティングの進化 ウォレットアプリ「Kyash」の先 〜「Kyash Direct」のアーキテクチャ〜 まとめ Open SKT: メルペイ開発の裏側 speakerdeck.com 1目は株式会社メルペイ Masahiro Sanoさんの発表を聞きました。 「Open SKT: メルペイ開発の裏側」ということで、幅広いテーマを取り上げて、タイトル通り開発の裏側を紹介されていました。 金融

    Builderscon2019の参加レポート - MicroAd Developers Blog
  • Vue.jsを使ってメンテナンスツールを作ってみた - MicroAd Developers Blog

    ご無沙汰しております。 マイクロアドでアプリケーションエンジニアをしているNです。 約1年前「JavaScriptフレームワーク(Vue.js)を導入して」というタイトルでブログを執筆させていただきました。 その時、 興味を示して頂き何らかの反応をいただければ、きっと別の社員がもう一歩踏み込んだVue.jsのお話を書いてくれるんじゃないかと期待しています。 と書いたっきり誰も続いてくれなかったので1年越しではありますが、責任持ってアプリケーションエンジニアの N 動きます。 社内メンテナンスツールをつくってみた 最近WEB開発してないんです。 実は去年の4月ころからだいたいバッチしか作らないチームのリーダーにさせていただきまして、それからずっと趣味以外でWEB開発をしてません。 (実は前回のブログを書いた時にはもう。。。) でもWEB開発したい!JS書きたい。。。 そうだ!バッチのメンテナ

    Vue.jsを使ってメンテナンスツールを作ってみた - MicroAd Developers Blog
  • Spark Structured Streaming で遅延データを処理する方法 - MicroAd Developers Blog

    マイクロアドのアプリケーションエンジニアの x です。数ヶ月前からストリームアプリの開発を担当しています。ある案件を検証する為、Structured Streaming を使ってみました。 マイクロアドでは、Spark Streaming でデータを5~10秒毎に処理しています。Spark Streaming については、順序保証型分散ストリーム処理 と、 Spark Streaming と Kryo シリアライザーの話 でも解説していますので、ご覧ください。 Spark Streaming は強力なストリーミングですが、遅延したデータを簡単に処理する方法がなく、マイクロアドでも問題となっています。さしあたり解決方法として、 処理する時に event time(実際にイベントが発生した時間)ではなく、ingestion time(データがソースに入った時間)を見る 遅延したデータを捨てる

    Spark Structured Streaming で遅延データを処理する方法 - MicroAd Developers Blog
  • ScalaMatsuri2019の参加レポート - MicroAd Developers Blog

    こんにちは。サーバサイドエンジニアの松宮です。 今年もScalaMatsuriに参加してきました。そして今年は大名スポンサーとして協賛させて頂きました! 濃い内容のセッションが盛りだくさんで非常に勉強になりましたので、いくつかピックアップしてレポートを書きたいと思います。 ↑ScalaMatsuriに参加したマイクロアドのエンジニアたち 目次 いつかは導入したい、ES + CQRS これからは小まめにCVEをウォッチします・・! 10msの世界で戦うエンジニア必見ですね 関数型プログラミングは技術的にDDDをサポートする CPSとDIはユースケースによって使い分ける また来年! いつかは導入したい、ES + CQRS speakerdeck.com 早速ですが、TIS株式会社の根来さんより「決済サービスで Akka Cluster 使ってみた」のレポートからです。 マイクロアドでもAkka

    ScalaMatsuri2019の参加レポート - MicroAd Developers Blog
  • RIDITスコアによる不正検知 - MicroAd Developers Blog

    マイクロアドでデータを分析している高橋と申します。 大学院までは物理学を専攻していましたが、縁あってデータ分析の分野に飛び込むこととなりました。 入札額の最適化アルゴリズムに取り組んでいた時期もありましたが、現在は広告表示の異常検知・不正検知周りが主テーマです。 今回は、不正検知等で役に立ちそうなRIDITスコアについての話をさせていただきます。 広告表示の不正検知 不正検知で困ること RIDITスコア 計算方法 具体例 PRIDITメソッド 計算方法 実際にやってみた まとめ 広告表示の不正検知 私が取り組んでいるテーマについて、もう少しだけ深くご説明いたします。 マイクロアドではDSP(Demand Side Platform)・SSP(Supply Side Platform)市場に参入していますが、そこで問題となるのがアドフラウド(広告不正)*1です。 一口にアドフラウドと言っても

    RIDITスコアによる不正検知 - MicroAd Developers Blog
  • PythonでDataFrameを省メモリに縦横変換する - MicroAd Developers Blog

    マイクロアドの京都研究所で機械学習エンジニアをしている田中です。 機械学習を利用したユーザーの行動予測の研究開発などを担当しています。 今回は、データの前処理に関するお話をしたいと思います。 データの縦横変換 縦横変換するためのpandasの関数 省メモリに縦横変換する サンプルデータの準備 pandas.Categoricalの活用 scipy.sparseの疎行列クラスの活用 さいごに 参考 データの縦横変換 機械学習や統計解析をする際に頻出するデータの前処理の1つに、データの縦横変換があります。 縦横変換とは、縦持ち(またはlong型)のデータと、横持ち(またはwide型)のデータを互いに変換することを指します。 縦持ちのデータの例 横持ちのデータの例 例示したこの2つのテーブルは、表現形式こそ異なりますが、表しているデータ自体はどちらも同じものになります。 ユーザーの行動予測をする

    PythonでDataFrameを省メモリに縦横変換する - MicroAd Developers Blog
  • Cloud Native Kansai #02 にて分散システムデザインパターンなどCloud Native開発に必要な事について発表しました - MicroAd Developers Blog

    マイクロアドの京都研究所からリモートでインフラチームで働いている永富です。 今回は、3/15に開催された Cloud Native Kansai #02 で、Webアプリ開発者向けに Cloud Native 開発に必要なとっかかりについて話してきました。 Cloud Native Kansai について Cloud Native Kansai は、 個人的にオーガナイザーとして参加している Cloud Native JP と言う Kubernetesに代表される Cloud Native 技術に関する地域コミュニティの関西版です。 私は、主に全体の運営と、関西地域の主催を行っています。 東京だけでなく、関西でも Cloud Native 技術について盛り上げていこうと日々活動しています。 Cloud Native JPでは、GWに全国各地でイベントをする事になっています。 北は札幌から南

    Cloud Native Kansai #02 にて分散システムデザインパターンなどCloud Native開発に必要な事について発表しました - MicroAd Developers Blog
  • Akka Streamsで例外を扱う時の注意 - MicroAd Developers Blog

    マイクロアドのサーバサイドエンジニアの松宮です。日は技術Tips記事ということで、Akka Streamsで例外を扱う時の注意点についてのお話です。 Akka Streamsはフローを分岐した複雑なグラフを作る事が簡単に出来ます。また、例外についても捕捉する手段はいくつか用意されており、エラーにも柔軟な対応が出来ます。しかし、非線形なグラフで例外を扱う時は注意が必要です。 線形なグラフにおける例外処理 まず、シンプルな一直線のストリーム処理から見ていきます。下記のコードは1~10の値を順番にprintするというストリーム処理です。 implicit val system = ActorSystem() implicit val ec = system.dispatcher implicit val materializer = ActorMaterializer() val stream

    Akka Streamsで例外を扱う時の注意 - MicroAd Developers Blog
  • Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog

    マイクロアドのサーバサイドエンジニアの松宮です。少し時間が経ってしまったんですが、今年もScala関西Summitに参加してきましたのでマイクロアドと絡めながらつらつらと感想を書きたいと思います。 ちなみに今年はマイクロアドからも初めてスポンサードさせて頂きました! 今までもマイクロアドではScalaを採用したプロダクトはいくつかありましたが、全体ではJavaがメインだったため、Scala関係のイベントへのスポンサードはしておりませんでした。しかしここ数年でApache Sparkを採用したり、主要プロダクトのScala化をきっかけに社内全体にScalaが浸透していき、その結果、今回のScala関西Summit 2018へのスポンサードができました! Apache SparkやScalaへの変遷については以前のブログ記事で紹介させて頂いていますので、良ければご覧ください。 順序保証型分散ス

    Scala関西Summit 2018に参加したので感想を書きます - MicroAd Developers Blog
  • ホワイトボックススイッチとCumulus Linuxを使った話 - MicroAd Developers Blog

    はじめまして。マイクロアドでインフラエンジニアをしているハダです。 今回の記事では、マイクロアドで採用しているホワイトボックススイッチと、 その上で動かしているCumulus Linuxについて導入から使用している感想までを書いていきたいと思います。 背景 マイクロアドでホワイトボックススイッチの検証を始めたのは、2015年4月頃からだったと記憶しています。 当時ホワイトボックススイッチが"ちまた"で話題になり始めた頃で、 インフラチーム内でも「実際どうなんだろうね…」と興味はあるけどという状況でした。 ホワイトボックススイッチとは 従来のネットワークスイッチは、購入するとハードウェアとソフトウェア(OS)がセットになって提供されてきました。 ユーザはハードウェアとソフトウェアの組み合わせを自由に行うことはできず、 操作コマンドもスイッチメーカーが提供する独自のものを利用する必要がありまし

    ホワイトボックススイッチとCumulus Linuxを使った話 - MicroAd Developers Blog
  • Digdagを使ったジョブ管理 - MicroAd Developers Blog

    はじめまして。アプリケーションエンジニアの中野です。 以前、MicroAdのデータ基盤の記事で紹介されていましたが、マイクロアドではデータ基盤刷新のタイミングでワークフロー管理ツールのDigdagを採用しました。 今回の記事では、Digdag採用の経緯やワークフローを作成する際に注意した点を紹介します。 Digdag採用の経緯 マイクロアドのDSP*1であるBLADEではBidRequestやImpression*2、Click、Conversion*3、その他BLADEから出力される様々なログやマイクロアドの他のプロダクトのログ、他社から提供されるデータなど、様々なデータを広告配信最適化の分析に活かしています。 これらのログを分析するバッチ処理は各々のジョブが複雑な依存関係を持っています。 これまではcronやJenkinsを用いてこれらの処理を行っていましたが コード管理が出来ていない

    Digdagを使ったジョブ管理 - MicroAd Developers Blog