タグ

設計に関するkoemuのブックマーク (113)

  • 【メモ】良いDesign Docs(Software Design Document)を書くためのリソース集

    自分が良い Design Docs(Software Design Document)を書くために、読んだ/参考になったリソース集 一覧 Design Docs とは Design Docs at Google デザインドック(Design Doc)について デザインドックで学ぶデザインドック 残業も減らせる!? 上級エンジニアになるための Design Doc 超入門 「Design Doc」って何なのか? What Is A Design Doc In Software Engineering? (full example) What is a Design Doc: Software Engineering Best Practice #1 https://github.com/kaiinui/note/blob/master/Design--Designdoc.md Google

    【メモ】良いDesign Docs(Software Design Document)を書くためのリソース集
  • 仕様書の参考例と、こんな内容を仕様書に最低書くといいというお話|田辺めぐみ

    よく、仕様書を書いていなくて、書いてみたいけど、具体的な仕様書がネット上に落ちてなくってこまってるって相談を受けるので 「仕様書の記載内容のイメージ」を作りました! ※前提として「現在仕様書を書いていない、自社開発のMVP検証前後のフェーズのスタートアップ向け」に書いています。PMが仕様書、エンジニアがDesign Docを書く分担です。 ついでに、システム開発の基礎である「システム開発のV字モデルをベースにした設計書の紹介」も含めてまとめてみましたー! 大規模開発に使われたり、古くからあるフレームワークなので、スタートアップの方だと、システム開発のV字モデルの概念やそれにあわせた成果物を知らない人が多いけど、「要件定義書」と「設計書」を全てドキュメント化するとどうなるかを理解した上で、「仕様書」として情報を削る方が、考慮漏れ防止やエンジニアがやっている設計内容の理解につながるので、全体を

    仕様書の参考例と、こんな内容を仕様書に最低書くといいというお話|田辺めぐみ
    koemu
    koemu 2022/01/20
    SIer出身で現役PdMのmegさんならではの網羅性が高くかつ適量の仕様書テンプレでいいですねー!「概要」欄重要!
  • アジリティを支える品質特性 / Agility and Quality Characteristics Developers Summit 2021 Summer

    Developers Summit 2021 Summer[A-1]アジリティを支える品質特性 講演日時: 2021年07月30日(金) 10:00 ~ 10:45 概要: ビジネスにとってITは、「あると便利」から「有効」、「不可欠」を経て「中核そのもの」になりつつあり、柔軟かつ俊敏にソフトウェアエンジニアリングを進める力は企業の競争力の源泉となりました。セッションでは、そのような競争力あるソフトウェアを開発し続ける力を構成する要素を、品質特性等の側面から掘り下げていきたいと考えています。

    アジリティを支える品質特性 / Agility and Quality Characteristics Developers Summit 2021 Summer
  • Five Principles of Design Thinking

    koemu
    koemu 2021/08/11
    Five Principles of Design Thinking
  • The Twelve-Factor App

    Introduction In the modern era, software is commonly delivered as a service: called web apps, or software-as-a-service. The twelve-factor app is a methodology for building software-as-a-service apps that: Use declarative formats for setup automation, to minimize time and cost for new developers joining the project; Have a clean contract with the underlying operating system, offering maximum portab

    koemu
    koemu 2020/06/18
  • バッチ処理について考える - Qiita

    TL;DR ひとくちにバッチといっても色々ある 夜間バッチをもう作るな オンラインバッチはSQL以前にDB設計がんばれ はじめに Twitterのタイムラインで以下のようなツイートが回ってきました。 バッチ処理をみんな舐めてかかったり、ショボイとか思ってる人多い印象なんだけれども、数十万~数千万件規模のデータを処理したことあるのかな。テンプレ通りのコードじゃ動かないよ?ネットににも答え載ってないよ?低レイヤも意識しないと動かないよ? 2020年1月10日 ツイートされたわだっしーさんの意図がどこにあるかは確認してないですが、極限の世界でテンプレート的な処理では対応出来ないのはあるよな、と思いつつもある程度はバッチの作法としての書き方があると思っています。 このツイートとその関連ツイートを読みながら、そういえばバッチ処理に関して書いてある記事はあまり見ないなぁ、とおもったので他のネットや

    バッチ処理について考える - Qiita
    koemu
    koemu 2020/01/16
    他の人の解説は参考になる。ストアド使うところは業務系でOracle使ってた人かなと想像した。オンライン・オフラインの理解は僕と違った。夜間システムをオフラインにしてバッチを回す、そういう理解。
  • バッチ処理と冪等性 / 20191218_merpay_techtalk

    2019.12.18 Wed. 1 Tech Talk vol.2 Backend Engineer ~マイクロサービスの冪等性 ~ バッチ処理と冪等性 kaznishi

    バッチ処理と冪等性 / 20191218_merpay_techtalk
    koemu
    koemu 2019/12/19
    かずにしさんリファレンスに僕のエントリを出してくれてありがとうございます!
  • イラストで学ぶ無線LANの基本[設計・構築]

    無線LANの設計や構築に必要な基礎知識を、イラストを使って学びましょう。無線LANの設計・構築のポイントに加えて、快適な無線LAN環境を実現するための主要技術も解説します。 第1回 無線LANをきちんと設計する 電波設計の手順とアクセスポイント台数の算出 実用性が高い無線LANシステムを構築するには、ネットワークの設計に加えて電波に関する設計が必要になります。電波設計は五つの工程に分けて実施します。 2019.09.09 第2回 電波チャネルの自動調整 周囲の状況に応じて自動的に設定する 複数のアクセスポイントからなる無線LANを導入する場合、個々のアクセスポイントが使用するチャネルと電波出力を、現地の環境に合わせて設定する必要があります。すべてのエリアをくまなくカバーし、隣のアクセスポイントとチャネルが重ならないように設計するのは、結構面倒です。 2019.09.09 第3回 高密度環境

    イラストで学ぶ無線LANの基本[設計・構築]
  • 様々なrate limitアルゴリズム - Carpe Diem

    概要 インターネットに晒されているWebサービスでは TV等で紹介されたことによる大量流入 悪意ある人物からの攻撃 クライアントのバグに依る大量リクエスト など、来想定していた以上のトラフィックが来ることはよくあります。 単純にシステムを構築すると大規模トラフィックに対応できずシステムがスローダウンしてしまうため、何かしらrate limitをかけておいた方が良いです。 ただしrate limitと一口に入っても色々あるため、今回は主なrate limitアルゴリズムを紹介します。 Leaky bucket Leaky bucketはデータ転送レートを一定にする(=上限を設定する)アルゴリズムです。 下の図のように、様々な流量の水流がそのバケツに流れ込んでも小さな穴からは一定の水流が流れ出す仕組みです。 ref: What is the difference between token

    様々なrate limitアルゴリズム - Carpe Diem
    koemu
    koemu 2019/11/11
    Microservicesとかで実装するときに参考にしたい(Istioでやれと言われそうな気もするか)
  • Cloud design patterns - Azure Architecture Center

    These design patterns are useful for building reliable, scalable, secure applications in the cloud. Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most patterns include code samples or snippets that show how to implement the pattern on Azure. However, most patterns are relevant to any distributed syst

    Cloud design patterns - Azure Architecture Center
  • だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba

    先日、モブプロをやってきた。その中で、モブプロとは別で、いくつか感じたことがあって、今日はその中のひとつを思い浮かんだままにメモ。 bufferings.hatenablog.com 要件を満たすプロダクトをより早く出す モブプロでTDDしながら、要件を満たすプロダクトをより早く出すことに集中してみた。例えば、第2ラウンドのお題はTDDBCなどでお馴染みの「自販機」。 「100円を入れてボタンを押すとコーラが1買えること」 最初に「100円を入れてボタンを押すとコーラが1買えること」と言われ。 assertThat(get(100), is("コーラ")); みたいなテストを書いて。 String get(int money) { return "コーラ"; } みたいな実装を書いた。爆速! 「200円を入れてボタンを押すとオレンジジュースが1買えること」 次に「200円を入れてボタ

    だんだん開発スピードが遅くなっていくのをどうやってとめたら良かったんだろう? - Mitsuyuki.Shiiba
    koemu
    koemu 2019/11/07
    お互いが思い浮かべたゴールがすれ違ったり、後から浮かんだ別のゴールがあったりすると、ありがち。キックオフ時にどこまで詰められるか。
  • 質とスピード / Quality and Speed

    質とスピード 初演: 2019/10/31 @ EOF2019

    質とスピード / Quality and Speed
    koemu
    koemu 2019/11/01
    「内部品質への投資の損益分岐点は意外と早く(1ヶ月以内)やってくる」
  • メルペイにおける大規模バッチ処理 | メルカリエンジニアリング

    この記事は MERPAY TECH OPENNESS MONTH の 13日目の記事です。 こんにちは、メルペイ ソフトウェアエンジニアの laughngman7743 です。 メルペイではマイクロサービスにおけるデータストアのデータや、アプリケーションのログを有効活用できるような基盤づくりをデータプラットフォームチームとして行っています。 データプラットフォームではラムダアーキテクチャに基づき、スピードレイヤとして Cloud PubSub と Cloud Dataflow を利用した仕組みに加え、バッチレイヤとして Cloud Composer と Cloud Dataflow を利用した仕組みを構築しています。 この記事ではバッチレイヤのアーキテクチャについてご紹介します。 スピードレイヤのアーキテクチャについては 「GCPでStreamなデータパイプライン始めました」 を参照くださ

    メルペイにおける大規模バッチ処理 | メルカリエンジニアリング
  • 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

    koemu
    koemu 2019/08/07
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    koemu
    koemu 2019/06/07
    隣に座る同僚の渾身のエントリです
  • 外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング

    こんにちは。メルペイ バックエンドソフトウェアエンジニアの id:koemu です。 今日は、外部APIと連携する機能のデータの持ち方について、振込申請のシステムを事例に取り上げていきます。 基データ・拡張データに分ける 定義 まず、データを、「基データ」「拡張データ」に分けます。 ここで、「基データ」とは、提供する機能において最低限必要となる情報です。振込申請ですと以下のデータとなります。 名義 口座番号 申請日 申請受理日 振込完了日 ステータス(受付完了/送金完了/送金失敗/その他) 一方、「拡張データ」とは、基データでは網羅していない、外部APIが必要としているデータを指します。例えば、連携用のレコード別のIDや、ステータスの遷移などです。振込申請ですと次のデータになります。 ステータス(プロセッシング事業者が持つより詳細なステータス) IDのマップ(基データと拡張データ

    外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング
    koemu
    koemu 2019/06/03
    会社のブログを書きました
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 バッチプログラムのお話、今回は運用・監視についてお話したいと思います。当社はすべての業務が24時間行われていますので、システムがオンラインのときに動作するバッチプログラムについてのみ議論します。 過去の記事はこちらにあります。 運用に備えて バッチプログラムの運用について、「プリモーテム」「実行管理」そして「ログ管理」の3点について述べていきます。 プリモーテム ポストモーテムという言葉を聞いたことがある方はいらっしゃるかと思います。ポストモーテムとは、GoogleのSREの15章*1によれば、障害などの失敗を振り返り、今後に活かすプロセスの総称と捉えることができます。 さて、プリモーテム(プリモータム)とは何でしょうか。この言葉は、私が最近読んだThe Manager’s Path*2*3で使

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    koemu
    koemu 2019/04/17
    会社のブログを書きました
  • お急ぎ振込の締め処理バッチの事例で見ていく バッチ処理の設計結果 | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 今回は、前回の記事でお話したことを踏まえ、私が開発を担当して実際に動いているバッチプログラム「お急ぎ振込 締め処理バッチ(以下、締め処理バッチ)」について、述べていきます。 記事では、「締め処理バッチについて」と「前回の記事に照らし合わせてどう設計されているか」の2点に分けて説明します。内容は、特に記載のない限り、記事執筆時点のものとなります。 締め処理バッチについて 事例の話に移る前に、これから説明する締め処理バッチの処理がどのようなサービスを提供するのか、ご案内します。 お急ぎ振込とは お急ぎ振込とは、メルカリの中で売り上げたお金を皆様の銀行口座に出金できる機能の1つです。当初から存在している振込申請機能より早く送金することができ、最短1営業日で出金することが可能です。2017年の夏の終わ

    お急ぎ振込の締め処理バッチの事例で見ていく バッチ処理の設計結果 | メルカリエンジニアリング
    koemu
    koemu 2019/03/20
    前回のバッチの設計の続編です。事例を書きました。実際にどうやって並列処理を実現しているかなど。
  • API設計の基礎 - 柴田 芳樹

    koemu
    koemu 2019/03/18
    「防御的プログラミング」
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

    こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    koemu
    koemu 2019/02/27
    会社のブログを書きました。バッチについて体系的にまとめられるかの挑戦です。