タグ

omohayuiのブックマーク (197)

  • メルカリの検索基盤の変遷について | メルカリエンジニアリング

    ※この記事は、"Blog Series of Introduction of Developer Productivity Engineering at Mercariの一環で書かれています。 はじめに こんにちは、メルカリ、サーチインフラチームのshinpeiです。今回はメルカリの検索基盤の裏側について、そのアーキテクチャ変遷について書こうと思います。2018~2021年の4年間で、大きく3回、変化をしました。設計の段階では希望と期待にあふれているアーキテクチャでも、問題は後からやってきます。設計には良し悪しがあり、変化することで知見を得ながら、改善を続けています。え、これだと危ないのでは?、、あぁ、やはりそうなるのね。などと、ご笑覧いただければ幸いです。 前回までのお話 メルカリの検索は、創業時から、Solrをベースにしたシステムで組まれてました。その変遷はこちらのスライドにまとめてあ

    メルカリの検索基盤の変遷について | メルカリエンジニアリング
    omohayui
    omohayui 2022/02/08
  • 機械学習システムの設計パターンを公開します。

    メルカリで写真検索とEdge AIチームに所属している澁井(しぶい)です。機械学習のモデルを番サービスに組み込むための設計やワークフローをパターンにして公開しました。 GithubでOSSとして公開しているので、興味ある方はぜひご笑覧ください! PRやIssueも受け付けています。私の作ったパターン以外にも、有用なパターンやアンチパターンがあれば共有してみてください! GitHub:https://github.com/mercari/ml-system-design-pattern GitHub Pages:https://mercari.github.io/ml-system-design-pattern/README_ja.html なぜ機械学習システムのデザインパターンが必要なのか 機械学習モデルが価値を発揮するためには番サービスや社内システムで利用される必要があります。そのた

    機械学習システムの設計パターンを公開します。
    omohayui
    omohayui 2020/04/23
  • https://engineering.mercari.com/entry/2019/12/01/microservices-migration-progress

    https://engineering.mercari.com/entry/2019/12/01/microservices-migration-progress
    omohayui
    omohayui 2019/12/02
  • マイクロサービス環境でのメルカリWebのリリースフロー | メルカリエンジニアリング

    メルカリJP Webチームの@urahiroshiです。 Webチームでは、メルカリWebのマイクロサービス化や機能開発を行なっています。メルカリWebのマイクロサービス化の概要については、昨年のTech Conferenceの資料がよくまとまっているので、そちらを参照していただけると良いかと思います。 https://speakerdeck.com/mercari/mtc2018-web-application-as-a-microservice-3a161f5c-07fa-4dca-99e9-bd0e8feeeddf 現在、メルカリWebのトップページはマイクロサービス環境から配信されており、他のページも随時マイクロサービス環境に移行していく予定です。 この記事では、マイクロサービス環境で導入した、メルカリWebの新しいリリースフローについて記載します。 まずメルカリWebのマイクロサ

    マイクロサービス環境でのメルカリWebのリリースフロー | メルカリエンジニアリング
    omohayui
    omohayui 2019/10/31
    assetとのリビジョンとのねじれ問題めっちゃ分かる...大抵「コンテントハッシュを付加することで特定のリビジョンの...」で無理やり回避してたけど、sessionで切り替える方が断然便利。
  • 今、SPA/ReactNativeにとっての必要な PaaS を考える - mizchi's blog

    当方ボーカル、フルスタックPaaS募集 ほしいもののコンセプト SPA職人としてそこに全力を尽くしたいので、それ以外を全部やってほしい とはいえストレージへのアクセスはAWS Lambda/Cloud Function等を介してちゃんとしたコントロールをしたい プロトタイピング時は何も考えずにORMを叩いていたい 運用フェーズでは金を払ってスケールしたい。とはいえボトルネックは常に監視したい。極端にやばいスケールサイズはどうせ人を雇うのでその先は考えなくていい。 より細かい要求 認証はPaaS側が全部持ってほしい JSONSchema でクライアント/サーバーサイドのアクセス制限を定義したい サーバーはフルマネージド Lambda/CloudFunction で関数単位でパフォーマンス監視/障害検知 ローカルで番と同じ構成が建てられる アセットは勝手にCDNに投げといてほしい バックエン

    今、SPA/ReactNativeにとっての必要な PaaS を考える - mizchi's blog
  • React + Redux- Animation - - DeNA Design

    デザイン戦略室フロントエンドエンジニアの吉井です。 昨今の React 実装は、StatelessFunctionalComponent(SFC)を用いて Flux や Redux に状態管理を委譲するデザインパターンが定着していますね。アプリケーションの UX に欠かせないアニメーションですが「SPA とは相性が悪い」という噂を聞いたことがあります。従来の html アニメーションといえば jQuery.animate によるものが定番ですが、jQuery.animate は以下の理由で React と相性が悪いです。 jQuery を使用しないことがほとんどで、ほかライブラリに頼る必要がある。 DOM 参照(ref 参照)のために SFC を諦めないといけない。 Animation 実行中に component を unmount すると参照エラーになる。 Animation の状態を

    React + Redux- Animation - - DeNA Design
  • Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」

    « Re: Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる | Main | Ruby の a = a + 1 はなぜ undefined method '+' for nil:NilClass なのか » golang にはパッケージマネージャが無数にあります。 PackageManagementTools · golang/go Wiki · GitHub Home Articles Blogs Books BoundingResourceUse cgo ChromeOS CodeReview CodeReviewComments CodeTools C... https://github.com/golang/go/wiki/PackageManagementTools 僕もその一つの gom というのを開発している

    Big Sky :: golang オフィシャル謹製のパッケージ依存解決ツール「dep」
  • アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~ | CyberAgent Developers Blog | サイバーエージェント デベロッパーズブログ

    みなさんこんにちは、サイバーエージェントフロントエンドを中心に開発しています原(@herablog)です。 アメブロでは、2016年9月にフロントエンドJavaベースのアプリから、node.js・Reactベースのアプリへとシステムの移行をおこないました。記事では、その移行へといたる経緯やゴール、システム設計、その結果についてお伝えします。 リリース直後に気づいているツワモノな方もいらっしゃいました。 アメブロのSP版がReactのSSRでフルリニューアルしたのを観測した — hr (@hrloca) 2016年9月1日 システム移行へといたる経緯 2004年から始まり、日国内で最大規模のブログサービスとなったアメブロは、システムの肥大化や多数の関係者が存在したことによるモジュール・導線の急増などの理由により、ページ表示スピードが遅くなり、ページビュー数にも明らかに影響を与えるよう

    アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~ | CyberAgent Developers Blog | サイバーエージェント デベロッパーズブログ
  • GoのパフォーマンスTipsメモ

    パフォーマンス維持のコツをコツコツとメモする リフレクションは最後の手段 パフォーマンスに寄与しない部分でのみ使う。 どこがパフォーマンスに寄与するのかが不透明なうちは使用禁止のほうが良い。 一度使い出すとリフレクションは多用したくなる魔力がある。 メモリ使用量 値は8バイトアライメントに置かれるので基は8バイト長分メモリを専有。 ポインタ変数は64bitCPUで8バイト長 インターフェース型変数は16バイト長〜 (値+型識別) メモリ確保を含む型コンバートは 型キャスト、アサーションに比べると10倍以上遅い。 同じ値なのに「メモリ確保を含む型コンバート」を複数回行う場合は メモリ消費量は増えるが汎用の変数「interface{}」に 値を保存しておいて参照するほうが速度を維持できる。 ゼロメモリアロケーション 高頻度操作におけるメモリアロック1とゼロの間には大きな速度差がある。 可能で

  • Goのアンチパターン

    Go書いててなんとなく見えてきた Goでやっちゃいけないパターン WAF導入してらくらくWebアプリ WAF自体が現在群雄割拠状態。 WAF毎にハンドラインターフェースが違うので既存コードつなぐにはラッパーが必要。 どのWAFもLL言語に比べるとまだまだフィーチャーの網羅範囲が狭い。 なのでもちろんLL言語ほど楽には書けないことが多い。 リフレクション使いまくりでトータル性能はLL言語並みに遅いのもある。 Go1.7のcontextパッケージの導入で標準のHTTPハンドラが復権する可能性があり更に荒れる予想。 追記: 楽できるのを期待してWAFを導入するの「やっちゃいけない」とまでは言い過ぎだったかもしれないけれど例のsqlでPrepareを正しく使えていないで性能出なかった件とか、当面WAFを使うなら自分で概ね中身を理解して使う覚悟が必要。 構造体メソッドにロジックを詰め込む Goの思想

  • 結局 golang の HTTP Response Body はどう閉じるのが正しいのか? - 押してダメならふて寝しろ

    さっそくカウンター記事を頂きました.ありがとうございます! qiita.com たしかに必ず閉じてるように見えます.エラーがあっても Body が non-nil なら閉じるようにコード仕込んでおくというのは杞憂だったのでしょうか.そんな気もします.たぶん誰もそんな風にコード書いてないし,godoc のサンプルにもそういうのはない.(僕も元記事読んだときは衝撃的だった エラーがないときは Response Body が non-nil であることが godoc に書かれています. http://golang.org/pkg/net/http/#Client.Do なので,エラーがないときは Response Body を閉じるようにコードを仕込んでおく必要があります. それは gopher の共通認識な感じがしてるんですが,問題なのはエラーがあるときです. エラーがあるときは,たいていの場

    結局 golang の HTTP Response Body はどう閉じるのが正しいのか? - 押してダメならふて寝しろ
  • React.js界隈の人に聞きたい

    **誰かみんなの主張のまとめを作ってくれないですか?** (まあそれこそお前がやれよって話かもしれないので、誰もやってくれなかったら私がしますが。。) 最近、JQueryはもはや不要でReactさえあればOK,みたいな記事をよく見ますね。 論旨としては、どうせトランスパイラ使ってるんだからもっと便利な書き方しようぜ!ってことなんだと思います。(virtual DOMがメインだ!という話もあったけど、じゃあ何でReactなの?というのは聞きたいかな。メジャーだから?) ただちょっと個人的に違和感が拭えないので聞きたいです。 ちなみに私は昔coffeeとbackbone.jsか何かで業務用のページ(SPAではなかったような気がする)を作るお仕事をしたことがありますが、フロントエンドエンジニアというわけではないです。どちらかというとサーバー管理とかのほうがよく知っていると思いますが、Javasc

    React.js界隈の人に聞きたい
  • DeNA Engineering - DeNAエンジニアのポータルサイト

    技術を活かし、新しい価値を創造する DeNAのエンジニアは、想像を超えるDelightを届けるために何ができるかを考え、技術力と発想力で新しい価値を生み出しています。 多様な専門性を持ったエンジニアが切磋琢磨し、互いに刺激し合える環境や制度がさらなる成長へとつなげます。

    DeNA Engineering - DeNAエンジニアのポータルサイト
  • 時系列DBって結局どれがいいんだっけ #TSDB - weblog of key_amb

    ※4/6 その後調べた情報などを記事末尾に追記 前提となるニーズ サーバの負荷情報とか、アクセス状況のような KPI を取得・保存し、可視化(参照してグラフ化)したい。 リアルタイム性が要求される。5分以上前のデータしか見れませんみたいなのはお呼びでない。 古いデータはそんなに精度は気にしないけど、ロングスパンで俯瞰して見れたら便利。 最近はビッグデータ環境の時系列データ解析もビジネスではけっこうニーズがありそうだけど、そっちはもう少し要求が多そう。 ここでは考えないことにする。 選択肢になりそうなもの 古きよき RRDtool Elasticsearch + Kibana Graphite + Grafana InfluxDB + Grafana 等 Zabbix 他に、現実的には SaaS に任せるという手段もあるだろうけど、そう言うと話が終わってしまいそうなので、ここでは考えないこと

    時系列DBって結局どれがいいんだっけ #TSDB - weblog of key_amb
    omohayui
    omohayui 2016/04/07
  • ヘイトスピーチ行進に無言で抗議 銀座:朝日新聞デジタル

    東京・銀座の繁華街で6日、外国人排斥を訴える差別的な「ヘイトスピーチデモ」があり、憂慮する市民グループの呼びかけで、「ヘイト反対」の意思を示すプラカードを無言で掲げる抗議活動が行われた。 日の丸を掲げたデモ隊は「朝鮮学校をぶっ潰せ」「(中国人らへの)国費留学制度廃止」などと訴えて銀座の大通りを行進。これに対して抗議する市民らは「銀座の街はヘイトスピーチを許さない」「人種差別反対」などと書いたプラカードを掲げて沿道に立った。双方合わせて数百人規模の人々が集まり、一部で言い争う場面もあった。 銀座では、これまで何度もヘイトデモが行われており、市民グループが拡声機などで抗議をしてきたが、双方に対して騒音の苦情が出ていたという。 抗議行動を呼びかけた市民グループのひとつ、「東京給水クルー」の日下部将之代表は「五輪を開き、外国人を招く東京の真ん中で、ヘイトデモを野放しにしていいのか。今回はデモの実態

    ヘイトスピーチ行進に無言で抗議 銀座:朝日新聞デジタル
    omohayui
    omohayui 2016/03/06
  • 次世代 Web カンファレンスを開催しました #nextwebconf - Block Rockin’ Codes

    intro 次世代 Web カンファレンスを開催しました。 名称: 次世代 Web カンファレンス 日時: 2015/10/18(日) 9:00-17:30 場所: 法政大学外壕校舎 4F 後援: 法政大学情報科学部 参加費: 無料 hashtag: 全体: #nextwebconf 405: #nextwebconf405 406: #nextwebconf406 407: #nextwebconf407 実施概要 概ね開催概要の通りです。 jxck.hatenablog.com やったこと やったことはシンプルです。 テーマ毎に、今 Web がどうなっていて、これからどうなっていくのか をひたすら議論するセッションのみのカンファレンス やらなかったこと 以下はこのカンファレンスではやりませんでした。 スポンサー募集 Tシャツ/ステッカー/チラシ作成 公式サイト作成/ドメイン取得 公式懇

    次世代 Web カンファレンスを開催しました #nextwebconf - Block Rockin’ Codes
    omohayui
    omohayui 2015/10/21
  • Vimの生産性を高める12の方法 | POSTD

    1. LeaderをSpaceキーにする Leader は素晴らしい概念です。キーの 組み合わせ ではなく 並び によって、操作を行えるようにするものです。私はこれを使っているので、操作のために” Ctrl -何らかのキー”の組み合わせを押す必要はめったにありません。 私は長い間、 , を Leader キーとして使っていました。ですがある時、キーボードの中で一番目立つキーにマップすることを思い付いたのです。Space(スペース)キーです。 これで私のVim生活は激変しました。今や、私は Leader をどちらの親指でも押すことができ、他の指は常にホームポジションにあります。 Leader がとても使いやすくなったので、私が様々なキーバインドで用いるようになったことは周知の話です。 2. 自分が特によく行う操作をLeaderにマップする 私は、自分がVimで作業を行っている中で、その時間の

    Vimの生産性を高める12の方法 | POSTD
    omohayui
    omohayui 2015/06/26
  • CSS 設計の長い夢 - ペパボのフロントエンドスタンダード

    フロントエンド周りの技術は驚異的なスピードで進化し、また多様化しています。それらを全てマスターするのは途方もなく大変なので、ペパボでは、社内のエンジニア・デザイナが「最低限これだけはおさえておこう」というスタンダードを文書化することにいたしました。社内向けを想定した文書ではありますが、社内のみに留めず多くの方に役立てたいと考えたため公開します。 スタイルシートの夢 (1) 予測しやすい (2) 再利用しやすい (3) 保守しやすい (4) 拡張しやすい 代表的な CSS 設計手法 既存プロジェクトCSS に立ち向かう! (0) 流れ (1) 既存の CSS ファイルを元に SCSS ファイルに変換する (2) イニシャライズ CSS や共通の箇所のスタイルを分離する (3) CSSLint を使って、修正しやすいところから整理していく (4) コンパイル (5) スタイルのスコープ(あ

    CSS 設計の長い夢 - ペパボのフロントエンドスタンダード
  • MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!)

    MySQL 5.7.4で導入されたdefault_password_lifetimeがじわじわくる(MySQL 5.7.11でFIX!!) 【2016/01/13 10:12】 MySQL 5.7.11でdefault_password_lifetimeのデフォルトは0に変更になりました! それ以降のバージョンであればこの記事の内容は気にする必要はありません。 日々の覚書: MySQL 5.7.11でdefault_password_lifetimeのデフォルトが0になるらしい! TL;DR default_password_lifetime= 0 を秘伝のmy.cnfに入れておくつもり。 MySQL :: MySQL 5.7 Reference Manual :: 5.1.4 Server System Variables パラメーターの意味は読んで字のごとく、「最後にパスワードが更新さ

    omohayui
    omohayui 2015/06/10
    余計なおせっかい。。。
  • 【翻訳】リッチなWebアプリケーションのための7つの原則 - from scratch

    はじめに この話はGuillermo Rauch氏が書いたhttp://rauchg.com/2014/7-principles-of-rich-web-applications/ という記事の翻訳です。許可を得て翻訳しています。 ここ最近Web業界を賑わしているSingle Page Applicationの必要性、HTTP2/SPDYといった技術、リアクティブプログラミングやIsomorphicデザインという考え方について包括的にまとめたすごく良い記事になっております。 最初に断っておきますが、ものすごく長いです。各セクションがわかれているので時間がない方はセクションごとに書かれたtl;DRとまとめを読むだけでも参考になるかと思います。 ちなみに明日のNode学園祭には、記事を記述したGuillermo Rauch氏が見えるので、そこで詳しく聞いてみるのもいいのではないでしょうか。

    【翻訳】リッチなWebアプリケーションのための7つの原則 - from scratch