tanksuzukiのブックマーク (533)

  • バッチコマンドをテストしやすいようにリファクタリングする | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の8日目は、メルペイ backend payment platform チーム の @knsh14 がお送りします。 はじめに 私はメルペイでお客様の残高を管理しているマイクロサービス(以下Balance Service)の開発を担当しています。 Balance Serviceは次のような定常的に動かしているバッチがあります。 有効期限があるポイントの失効処理 会計データの突合 毎日知りたいデータのレポート Balance Serviceではメルペイリリースに向けて限られたスケジュールの中で開発を進めていました。 サービスとしての実装を優先して開発をしていたため、まずはテストのカバレッジを挙げて動作を担保する方針をとっていました。 結果としてリリースから今まで大きな事故もなく運用できています。 ですが、1日目の記事にもあるように7月か

    バッチコマンドをテストしやすいようにリファクタリングする | メルカリエンジニアリング
  • Write Your Own Go Linters with Parser Package | Mercari Engineering

  • NOINへのメルペイ導入に関する考察① 導入理由編|Chiba Hisayoshi

    NOINでは2019/9/11より決済手段の一つとしてメルペイを導入しました。もっと「NOINでメルペイが使えるんだ」ということを知ってもらいたいので是非この記事のシェアをお願いします。 今回はなんでメルペイを導入するに至ったか、導入してどうだったかという内容について触れようと思います。 はじめに私自身メルカリのヘビーユーザーです。私は比較的を読む方なのでAmazonを買って届いたら即メルカリに出品して読み終わったときには売れてるのでAmazonで届いた封筒に戻して発送するというようなことを繰り返しています。(あるタイミングから出品から売れるまでの時間が劇的に短くなった記憶があります) 一方でメルカリで私が買い物することはあまりなく、売上金を引き出すのがとても面倒でした。。そこに登場したメルペイに感動しました。iDやQR決済が使えるのでメルペイが登場してから私のコンビニでの支払いはす

    NOINへのメルペイ導入に関する考察① 導入理由編|Chiba Hisayoshi
  • 決済システムのマイクロサービス化に伴うデータ移行について | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Monthの16日目の記事です。 こんにちは。株式会社メルペイのPayment Platform teamに所属している @ogataka50 です。 メルペイではマイクロサービスアーキテクチャで決済システムを開発、運用をしています。 メルペイはNFC決済・QR/バーコード決済・ネット決済を提供しています。それらに加えて、メルカリ内決済のコンビニ/ATM払い、キャリア決済、クレジットカード決済等も提供しています。 メルペイの決済システムはメルカリの決済システムをマイクロサービスとして切り出されたのが始まりになっています。 メルペイはアプリとしては2019年2月13日にサービスリリースしましたが、システム的にはその少し前からメルカリ内の決済機能をマイクロサービス化するため先にリリースされていました。 今回はメルペイリリース前に行われ

    決済システムのマイクロサービス化に伴うデータ移行について | メルカリエンジニアリング
  • » マイクロサービスを数年間実践して見えた課題とその対策 TECHSCORE BLOG

    こんにちは。Synergy! 開発チームの松です。 前回の記事で、マイクロサービスアーキテクチャスタイルが持つ 9 つの特徴について解説しました。今回はその流れで、当社がここ数年、マイクロサービスアーキテクチャスタイルを実践してきて直面した課題と、現時点でのその対策をご紹介します。 サービス間のコミュニケーションが失敗する オンプレ環境はモノリス化しやすい サービスをコンテキスト境界できれいに分割することが難しい 特定のサービス強化にリソースを集中投下したいケースがある アラート対応による割込みで集中力も開発時間もうばわれる サービス間通信における結合度をいかに下げるべきか Synergy! に関するマイクロサービスへの取り組みをご紹介した過去記事はこちらです。 ローンチから10年を経たSaaSシステム開発が抱える問題にどう取り組んだのか (2016/07/08) martinfowle

  • mongo-go-driver/examples.go at master · mongodb/mongo-go-driver

    tanksuzuki
    tanksuzuki 2019/08/16
    “Session”
  • GopherCon 2019 - Design Command-Line Tools People Love

    Jennifer Davis for the GopherCon Liveblog July 25, 2019 Presenter: Carolyn Van Slyck Liveblogger: Jennifer Davis Overview It is a joy to build command-line tools that are not only easy to learn, but that other developers are willing to maintain. Often a team's engineering efforts are spent on the backend, while the cli doesn't receive the same level of attention. This can result in hard-to-test to

  • MongoDBにおける関連(Relation)のスキーマ設計 - masa_wの日記

    前回、MongoDBSNSつくるぞという記事を書いてから随分時間がたってしまいました。単に私がだらけていたということもあるのですが、一番ひっかかって時間を取られていたのが、MongoDBにおけるスキーマ設計の考え方です。 いまだに試行錯誤中ではありますが、現時点において私がこうあるべきと理解しているところをアウトプットしてみたいと思います。 1.One to Many のケース たとえば注文と注文明細のケースを考えてみます。RDBで1対多のリレーションを設計する場合、 というように、注文明細を別テーブルにするのが普通かと思います。しかし、ドキュメント指向のMongoDBにおいては、RDBと違ってオブジェクト内に柔軟なデータ構造を実現できるため、 というように一つのCollection内にデータを埋め込んでしまうのが、パフォーマンスの点からも良しとされています。 ただし、以下の2点について

    MongoDBにおける関連(Relation)のスキーマ設計 - masa_wの日記
  • Shape Up: Stop Running in Circles and Ship Work that Matters

    Heads up! This page uses features your browser doesn’t support. Try a modern browser like Firefox or Chrome for the best experience. sidebar#close mouseup->tweet#update input->tweet#update keydown->tweet#update scroll@window->tweet#update" data-bookmark-id="/shapeup"> � !nkU � �nkU Shape Up Stop Running in Circles and Ship Work that Matters by Ryan Singer Buy the print edition Start reading →

    Shape Up: Stop Running in Circles and Ship Work that Matters
  • 【独占】メルペイCTOが語る金融サービスの未来「お金がなくても使えるサービスに」

    WebPay時代を含めると、すでに8年間も決済事業に携わってきた曾川氏。事業拡大に耐えうるシステム設計を、メルペイ立ち上げ当初からスピーディーに進めたことが、現在展開しているサービスを実現できた要因のひとつと語る。 「会社としてメルペイをつくる前から、ソウゾウ※1という会社があって、メルカリ自体がマイクロサービス化※2、プラットフォーム化というところを進めた」 ※1 ソウゾウとは: メルカリの100%子会社として2015年に設立。メルカリの新規事業の開発を担当。メルカリは6月13日に、7月末に開催される株主総会の決議によってソウゾウを解散すると発表している。※2マイクロサービス化とは: 大きなサービスの中身を個別のサービスに分割し、開発すること。より小さな単位での開発となるため、最適な技術を選択したり、開発者の適切な配置にもつながり、より高速かつ将来のスケールアップを見越した開発が可能にな

    【独占】メルペイCTOが語る金融サービスの未来「お金がなくても使えるサービスに」
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
  • メルペイにおけるお客さま残高の管理手法 | メルカリエンジニアリング

    はじめに この記事はMERPAY TECH OPENNESS MONTHの19日目の記事です。 こんにちは。株式会社メルペイのPayment Platformチームでエンジニアをしている knsh14 です。 メルペイの様々な決済手段でどのように決済の整合性を保とうとしているかは15日目の記事で紹介しました。 メルペイでは決済の手段をもつマイクロサービス(Payment Service)と決済のための原資を管理するマイクロサービス(Balance Service)を分けています。 今回はこのお客さまの残高を正しく管理するためのマイクロサービスがいかにして正確に増減をしているかを説明します。 Balance Service の提供する機能 Balance Service ではお客さまの残高を増減させるという機能を提供しています。 決済のフローや他のマイクロサービスとの整合性の管理などは上位レ

    メルペイにおけるお客さま残高の管理手法 | メルカリエンジニアリング
  • sync.Mapでロック付きのmapを使用する

    Go Advent Calender 2017(その4)の11日目の記事です。 Golangの並行処理では、共有リソースにアクセスする場合は競合が発生しないようにロックを用意する必要がある。 例えば、標準のmapgoroutine safeではない。Write同士が競合した場合や、Write中のReadが発生するとPanicを起こしてしまう。 そのため、従来はmapとmutexを併用することでロックを用意し、複数goroutineから安全にアクセスできるようにする必要があった。 Go1.9ではsync.Mapが標準パッケージとなり、自身でRWMutexを備えたマップを書くことなく、ロック付きのマップを使用することができる。 どのように使うか 以下コードの通り(Playground)。 package main import ( "fmt" "sync" ) func main() { /

    sync.Mapでロック付きのmapを使用する
  • ボトムアップドメイン駆動設計

    はじめに この記事は前後編に分かれています。 順序だてた解説になっているので最後までお付き合いいただけると幸いです。 後編記事: https://nrslib.com/bottomup-ddd-2/ 順序立っての説明になっておりますので、前編からご覧になることを強くお勧めします。 セミナー情報 こちらの内容のセミナーを不定期で開催しています。 ◆セミナーページ 第一回: https://ddd-community-jp.connpass.com/event/103428/ 第二回: https://ddd-community-jp.connpass.com/event/107106/ 第三回: https://nrs-seminar.connpass.com/event/117283/ ◆あとがき 第一回ボトムアップドメイン駆動設計勉強会を開催しました セミナースライド まえがき この章は

    ボトムアップドメイン駆動設計
  • Hugo で PlantUML のようなシーケンス図を描画する - tellme.tokyo

    Hugo で PlantUML を描画して埋め込めないものかと調べていると、 Add exec shortcode #796 - gohugoio/hugoGitHub Hugo の Shortcodes の機能を使って、HTML の生成をフックにしてレンダリングした後に埋め込む、みたいなことをできるようにする議論自体はあったものの進んでいないようで、他の案はないかと調べると PlantUML ではなく mermaid が良いとわかった。 vjeantet/hugo-theme-docdock にあったディレクトリ構成を真似て以下のようにした。 b4b4r07/tellme.tokyo - f8fe64c・GitHub Shortcodes を使って以下のようなシーケンス図を書くと、 {{\< mermaid align="left" \>}} sequenceDiagram parti

    Hugo で PlantUML のようなシーケンス図を描画する - tellme.tokyo
  • Thread by @_rsc: "@mattfarina @Crell @sdboyer This is an absolutely fair criticism - we have not handled the community process around dependency management we […]"

    @mattfarina @Crell @sdboyer This is an absolutely fair criticism - we have not handled the community process around dependency management well. The core Go team was not involved early or often enough for that process to lead to a smooth landing. As tech lead for Go, that was my fault, and I apologize. @mattfarina @Crell @sdboyer Ever since I wrote “go get,” we on the core Go team hoped the communi

    Thread by @_rsc: "@mattfarina @Crell @sdboyer This is an absolutely fair criticism - we have not handled the community process around dependency management we […]"
  • サイバー警察に家宅捜索を受けた際の体験談

    はじめに これは、私が2018年4月に埼玉県警のサイバー警察に自宅の家宅捜索を受けた時の体験談です。 事実を出来るだけ詳細に記載致します。また、大変稚拙で恐れ入りますが私自身の正直な気持ちも一緒に書き留めています。 また、事件内容の詳細につきましては、警察に口止めされている上、私も捜査を妨害する意図などは全くなく捜査上の秘密が守られることは個人的にも大切だと理解し同意もしているので掲載しないこととします。 この記事の掲載目的は、主権者(納税者)である私以外の国民の皆様に、行政組織の1つである警察から私と同じような体験をして頂きたくないという点と、サイバー警察組織の現状を垣間見た一市民、一ITエンジニアとして私が感じたこと、体験致しましたことを皆様に共有させて頂ければと思い執筆させて頂きました。 登場人物の紹介 ここでは、少し話が長くなりますので先に登場人物をまとめさせて頂きます。 私:自営

    サイバー警察に家宅捜索を受けた際の体験談
  • 最近のUXデザインにおける、スマホアプリのインターフェイスに使用されているアイデアのまとめ

    ここ数年の間に、スマホは単なる電話以上に多くの機能を持つようになりました。スマホはさまざまな目的のために使用され、わたし達の日常のアシスタントをこなしています。 そんな便利なスマホアプリのユーザーインターフェイスに注目し、最近のUXデザインにおけるクリエイティブなすごいコンセプトを紹介します。 15 Creative UX Design Concepts for Everyday Needs by Tubik Studio 下記は各ポイントを意訳したものです。 ※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。 植物の水やりを管理するアプリ 安眠アプリ ハンバーガーショップのアプリ TODOアプリ 料理レシピアプリ ベジタリアン用のレシピアプリ アラームアプリ 家電操作アプリ 家計簿アプリ 名刺管理アプリ バランスアプリ ファイナンスアプリ フィットネスアプリ カレン

    最近のUXデザインにおける、スマホアプリのインターフェイスに使用されているアイデアのまとめ
  • Custom Scrolling Carousel in React Native

  • Introducing Sideswipe: a cross-platform carousel for React Native

    Recently I found myself in need of a flexible carousel solution that could support some pretty tough requirements, mainly: Support an infinite number of itemsFeel identical on iOS and AndroidSupport snapping to nearest indexAccount for force (need to be able to move many items in one gesture)Be flexible enough to accommodate custom animationsHave an easy-to-use API Round 1My first attempt was to u

    Introducing Sideswipe: a cross-platform carousel for React Native