ドメイン駆動設計でなぜ作るのか? ドメイン駆動設計の考え方 ドメイン駆動設計を実践するための6つの問い 事例研究 ドメイン駆動設計を現場に導入する 体験的に学ぶ エヴァンス本をちゃんと読むRead less
![ドメイン駆動設計の正しい歩き方](https://cdn-ak-scissors.b.st-hatena.com/image/square/23c8684a1cc672a0519fa0f78a2aca8e720fddb0/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Frightway-190529073601-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
ソフトウェアの世界には「悪い方が良い」原則という有名なエッセイがある。キレイにレイヤ分けされた一貫性のある良いデザインよりも、一見手抜きの悪いデザインのほうが実は良いときもあるという話だ。この逆説的なデザイン原則を僕は身をもって体験したことがある。それについてちょっと書いてみようと思う。 僕はlldというリンカの現行バージョンのオリジナル作者だ。リンカというのはコンパイラと組み合わせて使うもので、実行ファイルやDLLを作るのに使用される。lldはプロダクトとしてはかなり成功していて、標準のシステムリンカとして採用しているOSがいくつかあったり、GoogleやFacebookなど皆が知っているような大規模サイトの中で広く使われていたりする。 現在のlldは2世代目で、第1世代のlldは僕がプロジェクトに参加する前から存在していたのだけど、数年前にそれを捨てて一から書き直すということになった。
ここ最近の仕事は、かなり硬直化した自社サービスをリファクタリングしている。 そのなかでアプローチのひとつとして、ドメイン駆動設計を勉強して、取り組んでいる。 エバンスDDD本を手に取り、ネットで様々な知見を調べながらも、理解が定着してきている。 ここらでいちど、ドメイン駆動設計について、理解をアウトプットしておく。 ドメイン駆動設計は「ビジネスの複雑さ」に立ち向かう 「ドメイン駆動」の設計とは、ドメインに特化した型設計 ドメイン駆動設計の導入の決め手はドメインロジックが複雑かどうか レイヤードアーキテクチャは、ドメイン層を隔離する 自社サービスをグロースさせていくためにも、ドメインの洞察・抽出・再設計を繰り返す おすすめの書籍・資料 エバンスDDD本や実践DDD本は初学はとても苦しんだ。 入門するなら、これらの本を手に取る前に、増田さんの素晴らしい資料たちがおすすめ。 増田さんのスライド,
Chris Richardson 氏の Microservices Patterns を読んだ。前回からの続きです。 Microservices Patterns: With examples in Java 作者: Chris Richardson出版社/メーカー: Manning Publications発売日: 2018/11/19メディア: ペーパーバックこの商品を含むブログを見る 前回はこちら。 kencharos.hatenablog.com 全13章の後半、8章からです。 8章 外部API マイクロサービス群を外部公開する場合に、API Gateway を適用することが書かれている。 API Gateway に求めらる機能は、ルーティングのほか、認証、プロトコル変換(REST->gRCPとか)、前述の API Composition など。 認証の例として、外部からの Bas
ドメイン駆動設計、どこまでやるべき? 開発現場の“問題”を乗り越えるためにできること ゲーム開発におけるドメイン駆動設計とサーバレスアーキテクチャ #1/2 2019年2月7日、『神姫PROJECT』などソーシャルゲームの企画・開発を手がける株式会社テクロスが主催するイベント「TECH x GAME COLLEGE」が開催されました。渋谷発エンジニア勉強会「ヒカ☆ラボ」とコラボレーションした今回のテーマは「ゲーム開発におけるドメイン駆動設計とサーバレスアーキテクチャ」。過去にTECH x GAME COLLEGEにて講演を行ったギルドワークス株式会社取締役の増田亨氏と、Game Server Services株式会社代表取締役社長CEOの丹羽一智氏をゲストに招き、参加者から事前に募った質問に解答していただきました。前半の本パートでは、ドメイン駆動設計(DDD)やFaaSの未来、チームビルデ
こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 今回は、前回の記事でお話したことを踏まえ、私が開発を担当して実際に動いているバッチプログラム「お急ぎ振込 締め処理バッチ(以下、締め処理バッチ)」について、述べていきます。 本記事では、「締め処理バッチについて」と「前回の記事に照らし合わせてどう設計されているか」の2点に分けて説明します。内容は、特に記載のない限り、本記事執筆時点のものとなります。 締め処理バッチについて 事例の話に移る前に、これから説明する締め処理バッチの処理がどのようなサービスを提供するのか、ご案内します。 お急ぎ振込とは お急ぎ振込とは、メルカリの中で売り上げたお金を皆様の銀行口座に出金できる機能の1つです。当初から存在している振込申請機能より早く送金することができ、最短1営業日で出金することが可能です。2017年の夏の終わ
テキストでUMLやシーケンス図、クラス図などを作成できる言語です。 ダイアグラムをテキストで記述できるため、Gitで管理することもできます。 Visual Studio Codeでは、次のようにPlantUMLプレビューでダイアグラムを確認しながら作成できます。 まず、Visual Studio Codeが端末にない人はインストールをしてください。 Visual Studio Code – Code Editing. Redefined また、Javaもインストールが必要となります。 無料Javaソフトウェアをダウンロード インストールが完了したら、Visual Studio Codeで拡張機能としてPlant UMLを追加します。 Marketplaceから「plantuml」と検索してインストールします。 下のリンクからでもインストールできます。 marketplace.visuals
ドメイン駆動設計との出会い 10年前に、エヴァンスのドメイン駆動設計を初めて読んだ時は、書いてある内容がほとんど理解できなかった。 あまり、面白いとも思わなかった。 当時は、現場でバグだらけのコードと格闘していた。障害が報告されるたびに、リファクタリング本を参考に、該当個所の長いメソッドや大きなクラスを片端からリファクタリング。その結果、コードがわかりやすくなり、やっかいなバグが単純な修正で解消できてしまうことの効果に驚き、設計の重要性を再認識していた。 それ以前は、UNIXとC言語、OracleとPL/SQLという、オブジェクト指向ではない世界で技術を身に着けてきた。 どちらかというとオブジェクト指向には、ネガティブな印象を持っていた。現場では役に立たんだろうと。 バグとの格闘の中で、リファクタリング(設計改善)の威力を肌で感じ、その考え方とやり方がオブジェクト指向に由来するということを
セクションナイン の 吉田真吾(@yoshidashingo)です。 昨今のサーバーレスアーキテクチャの実装パターンについて5つの分野でユースケースをまとめました。 実装方法はAWSがベースですが、クラウド各社のFaaSに大きな機能差はないので(そもそもシンプルなコンセプトなので)、FaaS単体よりも、連携可能な周辺サービスまで含めて自分のアプリケーションのユースケースに合っているかどうかが大事になってきます。また、そもそもいくつかの実装はPaaSのオプション機能として組み込まれている場合もあります。よって、この先連携先の機能強化などによってもっと多くのパターンが発見されることになると考えています。 【1】Webアプリケーション シングルページアプリケーション ex. Serverless Single Page Apps Web API REST API GraphQL 非同期Webジョ
設計サンプルで学ぶ、AWS構築の原則 - Webアプリ アーキテクチャのベストプラクティスを理解する AWS入門者に向け、同サービスのエキスパートである、クラスメソッドの八幡豊さんが、Webアプリケーション開発のためのAWS構築の基本を解説します。広範な領域をフォローするAWSですが、広範ゆえに、なにをどのように選ぶべきか……。こんなお悩みを持つ方はぜひご一読を。 クラウドコンピューティングサービス・Amazon Web Services(以下、AWS)は、数多くの高機能なクラウドサービスを簡単に利用できることから、多くの企業が導入しています。AWSの知識を身につけることは、いまやエンジニアにとっての必修科目です。 そのサービス範囲は広範にわたることから、「なにを」「どうやって」使うかのかが重要な知識になってきます。AWSの各サービスのポテンシャルを引き出すためには、それぞれの長所・短所を
いやー、この問題は本当に難しい。難しすぎて、どうやって解決すればいいかいまだによくわからない。わからないので、ここに書いてみる。 最初、とあるお客さんのために「ひよこの餌やりプログラム(仮)」を作っていたんだ。開始ボタンを押すとひよこの餌が出てくる。たったそれだけのプログラム。 今回は、これを「定期的に実行する機能が欲しい」と言われた。 この要望を実現するのがすこぶる難しかったんだ。 「やねうらおってそんなプログラムすら書けないの?老害なの?」 とか言わないで欲しい。この問題、本当に難しいんだよ! ■ 1度目のひよこの全滅 まず、この要望に沿って、私の会社のプログラマが当初、次のようなダイアログをつけたわけだ。 繰り返し実行のところにチェックを入れた場合、ここで指定された時間後にも繰り返し実行する。単位は分で指定する。1日ならば60×24 = 1440を指定する。そうすると、ひよこの餌やり
こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 本エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する
バッチ処理というのはそれ単体で勉強しようとするとなかなか何を勉強したらいいのかわからないことが多い。 特に経験がWeb系ばっかりだと、いざバッチ処理を実装しようとした時に基本的なノウハウを知らないままに書いてしまうことが多い。 バッチ処理というのは実態を整理すると「何らかのトリガーを期に起動し、データをロード・加工・変換・集計してから、出力する」という事になる。 まぁ、INがあって処理してOUTがあるという点では関数だと考えてもいいだろう。 システムの利用者(人に限らない)のアクションとは直接関係ない処理であったり、利用者のアクションをトリガーとしていても、即時にレスポンスがいらないor返せない場合に バッチ処理を選択する事が多い。 実現方式はシェルスクリプト、LL言語、実行可能バイナリだったりするし、デーモンとして立ち上げる場合もある。 利用者の操作に対して対話的・同期的な処理はオンライ
これは何 業務で設計する際に、Excelを使わずにドキュメントを作成したいときに使いたいものまとめ。 Excelだと辛いこと Excelで図を書こうとすると、図形の大きさや矢印の向き、吹き出しの位置の調整に結構時間を取られてしまう。 また、修正したときに差分確認がExcelだと出来ないのでどこを変えたのかがわかりにくい。 改善するにあたって重視するポイント 新たなツールを購入する必要が無い。 フリーのツールで実現できる。 導入が比較的容易である。 環境構築するのが難しくない。 テキストベースで資料を作成出来る。 テキストベースであるため、差分確認が容易である。 構文が難しくない ある程度パターンを把握すれば、直感的に書くことが出来る。 図の配置はツールにほぼ一任が出来る。 図によっては、ちょっと位置を変えたくなることがあるが、その時はオプションでちょっとだけどうにか出来る。 画像ファイルへ
DBの寿命はアプリより長い! 長生きするDBに必要な設計とリファクタリングを実践から学ぶ アプリケーションの寿命よりも長く、データの追加やテーブルの変更で成長し続ける「データベース」と、どのように付き合っていけばよいのでしょうか? 曽根壮大(soudai)さんによる寄稿です。 こんにちは。そーだい(@soudai1025)です。 新しいサービスを始めるとき、必ずと言っていいほどデータベースは利用されています。また今稼働しているサービスの多くでも、RDBMSをはじめ、いろいろなデータベースが利用されています。そんなに広く利用されているデータベースだからこそ、多くの問題の元になるのもまた事実です。 そこで今回は、Webサービスを中心にデータベースの選び方、設計についてお話していきたいと思います。そして私もまさに今、2011年から続くWebサービス「オミカレ」のRDBMSのリファクタリングに携わ
この記事は Engineering Manager vol.2 Advent Calendar 2018 - Qiita の16日目の記事です。 今の会社にはチームにジョインした方に対してドメイン駆動設計での開発ができるように育成するプログラムがあります。 「プログラムがある」と言っても有志で持ち回りでやってるちょっと真面目な勉強会のようなものです。 それを私がやることになったので、今日はその時に考えたことを書きます。 身の回りに勉強会等開いてくれる人がいたら「あの人はこんな感じのことを考えてるのかー」と思ってもらえたら幸いです。 誰? 名前: なおしむ 某ISPでエンジニアをしている 最近は新しく来た人の育成もしている 背景 現在のプロジェクトはビジネスの特性上、市場変化に対応しつつバグのない開発が求められている そのために内製 + ドメイン駆動設計(DDD)で開発している リンクいろい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く