※リンクを効かせたい場合はダウンロードしてください
!["クラウドアプリケーション 10の設計原則" をもっと楽しむ](https://cdn-ak-scissors.b.st-hatena.com/image/square/18ffbd1bfc2455532eb6c6a1ab9995919df732a5/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fb4e2598cd4874659ae228e292f53e607%2Fslide_0.jpg%3F28591384)
最近、少々複雑な権限機能の開発を担当している中で、対応方針を悩んでいたことがありました。 権限機能というものは取り扱いが難しく、影響範囲が広いにも関わらず、対応漏れや考慮不足があると情報漏洩に繋がってしまいます。 また、機能拡張をしてく中でも対応漏れを起こさないようにする必要があるなど、考えることも多く頭を悩ませておりました。 そこで、認可処理の設計のベストプラクティスやDDDの実装パターンに認可処理を組み込む方法など、色々と調べていたのですが、その中でいくつか知見を得られたのでまとめようと思います! 権限と認可 権限と切っては切れない関係にあるのが認可です。 権限はある操作を実行できる権利を指します。 それに対して、認可は操作を実行する許可を出すため仕組みのことを指します。 例えば、ブログ投稿サービスで考えてみると、以下のような感じです。 権限: 投稿者はポストを編集できる。 認可: ユ
はじめに プロジェクトマネジメントの仕事をする際に、お客さんに提案ベースの要件定義や設計をする機会が増えてきたので、私の経験に基づいて基本設計の具体的なプロセスや考え方について、整理していきます。 以前投稿した記事の続きですが、未読でもこの記事を理解できるようになっています。 この記事の対象者 基本設計の思考プロセスを学びたい人 ビジネスサイドの要件をエンジニアサイドのシステムに落とし込む流れを学びたい人 ビジネスサイドとエンジニアサイドのコミュニケーション能力を向上させたい人 具体的な事例を通して基本設計を学びたい人 前提 紹介する内容はあくまで一例であり、プロジェクトやチームの状況に応じて調整が必要です 自分の経験に基づいた内容を言語化しています プロジェクト規模は10名から20名のシステム開発を想定しています(大規模なプロジェクトを想定していません) システム開発の全体像 今回は下記
はじめに 前回の投稿から少し日が空いてしまいましたが、AWS x コンテナに関する商業誌を執筆したので、本ブログにて少し内容を紹介できればと思います🚀 本日、無事校了しました(発売日が10/21なので、結構ギリギリです)。 Amazon.co.jp: AWSコンテナ設計・構築本格入門 : 佐々木拓郎 新井雅也 馬勝淳史: Japanese Books 執筆の経緯と書籍のテーマ 2020年春先、APN Ambassadorであり多数のAWS書籍を執筆されている佐々木さん@dkfj、APN AWS Top Engineersの一人である馬勝さん@HorseVictoryと一緒に技術書典#8に出展したことが事の始まりです。 執筆したクラウドネイティブファーストストーリーが多くの読者の手にとっていただけたという背景もあり、佐々木さんのご厚意により、出版社(SBクリエイティブさん)に繋いでもらいま
概要 このドキュメントは、効率的かつ安定した、システム開発/運用をするためのログ設計指針です。 的確かつ無駄のない、ログ出力を目指します。 ログレベル ログの緊急度や用途により、以下のようにログレベルを設定する。 Log4j のログレベルを踏襲しているため、運用の状況によっては Critical などのレベルを適宜追加すると良い。 PHP における PSR-3 では、さらに細分化され emergency, alert, critical, error, warning, notice, info, debug となっている。 「出力先」「運用時の対応」は、各プロジェクトのポリシーに準じてください。 レベル 概要 説明 出力先 運用時の対応
ログ出力の設計指針とはまず、ログとは「アプリケーションやサーバ、ソフトウェアなどが出力する、時系列に記録されたデータ」のことをいいます。例えばアプリケーションが出力するログやデバッグログ、ウェブサーバのアクセスログやエラーログなどがあります。 これをふまえて、ログ出力の設計指針とは、アプリケーションなどのログの出力をどう設計するかという指針のことをいいます。 ログの種類によって、出力の設計指針は変わってくると思います。この記事では、いろんなログに共通する汎用的な内容として、アプリケーションログの出力を例に設計指針について書いていきます。 ログ出力の設計指針は、開発するソフトウェアによっても変わってきます。重要なことは、チームで指針をもってログ出力を行い、しっかりと運用していくことだと思います。 なぜログを出力するのかこれからログ出力の設計指針について書いていくのですが、そもそもなぜログを出
はじめに アーキテクチャ・デザイン全般 ソフトウェアアーキテクチャの基礎 Clean Architecture 達人に学ぶソフトウェアの構造と設計 Design It! ソフトウェアシステムアーキテクチャ構築の原理 データ指向アプリケーションデザイン マイクロサービス マイクロサービスアーキテクチャ マイクロサービスパターン 実践的システムデザインのためのコード解説 ソフトウェアアーキテクチャ・ハードパーツ ドメイン駆動設計 エリック・エヴァンスのドメイン駆動設計 ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本 現場で役立つシステム設計の原則 要件定義 はじめよう!プロセス設計 ~要件定義のその前に はじめよう! 要件定義 ~ビギナーからベテランまで はじめよう!システム設計 ~要件定義のその後に Web, Web API Webを支える技術 プロになるためのWeb技術
弊社 LIGHTz 初のアドベントカレンダー1発目でございます 弊社、絶賛 SaaS システムの開発中で、度々設計が議論になります。 そこで、備忘録も兼ねて参考になった資料を一言添えて挙げていきます。 ....... 一発目なのに備忘録の投稿をお許しください これから SaaS を作る皆様、↓もおすすめです。 リソースと分離編 マルチテナントSaaSのテナント分離をRow-Level Securityに移行した - Sansan Builders Blog 分離に関して各社の奮闘と生きた事例を見ることができます https://mitomasan.hatenablog.com/entry/2016/05/25/210151 あまり他の記事ではあまり言及されていない観点について述べられています url(ドメイン)設計 DBの接続先の切り替えはユーザーのリクエストを処理する最初の段階でフレーム
昔のメモを整理してると出てきました。今となっては心底どうでもいい。 上流工程に関するあれこれ 大まかな流れ 基本的な流れとしては要件定義→外部設計→内部設計→開発の流れが採用される。 ここで外部設計は基本設計、内部設計は詳細設計とも呼ばれる。 一般にウォーターフォールモデルでの考え方では外部設計までが上流工程と考えられるようだ。 要件定義 要求開発(超上流工程) [ 業務フロー ] 業務とその流れを表現するもの。素人にもわかるように → アクティビティ図 業務機能関連図 [ 業務モデル ] 業務を静的に表現する。 → ERD クラス図 要件定義 システムの範囲を決定する。何を作って何を作らないかを明確にすること。 1.機能要件 ユースケース一覧 機能一覧 2.非機能要件(FURPS+) >機能 機能要求 >使用性 UIの指針、ユーザ教育、マニュアル >信頼性 管理、監視、保守、復旧 >性能
はじめまして。そーだい(@soudai1025)です。私は普段は技術コンサルティングや受託開発を請け負う合同会社HaveFunTechの代表として、また、予防治療の自社サービスを展開する株式会社リンケージのCTOという二足の草鞋を履き、日々、さまざまなWebサービスの開発に携わっています。 これまでの開発経験のなかで、データベース設計に関わるさまざまな問題に遭遇してきましたが、本稿ではとくに、アジャイル開発時に発生しやすい問題とその対処についてお伝えしたいと思います。開発の現場で目にしやすい実装におけるアンチパターンを示しつつ、アジャイルという指針を維持しながら、対処となるデータベース設計についてご紹介します。 会員登録のアンチパターンと処方箋 イージーな実装とシンプルな実装 Userと言う名の罠 拡張と破綻 データベースは変化に弱い 仕様変更とテーブル変更 Addで変化に追従する 正規化
Incremental test design 昨年度追加されたISTQBのFoundation Level Extension Syllabus Agile TesterのAgile Testing Practicesの項にはテスト設計に関する興味深い記述がある [1]。 Incremental test design: Test cases and charters are gradually built from user stories and other test bases, starting with simple tests and moving toward more complex ones. アジャイルテストのテスト設計の特徴として ユーザーストーリーをテストベースとして用いる事 シンプルなテストケースの追加から始まり、より複雑なものへと変化して行く事 Increme
エンジニアリング会社で、それなりに長い間、働いてきた。昨日、4月1日は入社式の日だ。自分のときもそうだった。考えてみるとずいぶん昔のことだが、なんだか、ついこの間のようにも感じる。 率直に言うと、同じ会社でこんなに長く働くとは思っていなかった。エンジニアリング会社は受注産業だ。仕事が取れなくなれば、すぐに倒産する。入社したときに、「この会社は3年もつだろうか」と思ったことを記憶している。 長く働く間に、わたしも人並みに「よそに転職しようか」と思わなかった訳ではない。だが、製造業にも建設業にも、コンサルティング会社にもIT企業にも転じなかったのは、やはり「エンジニアリング」という仕事に、それなりにこだわりをもっていたからである。
根本の問題意識 ソフトウェアの設計スキルはどのように獲得する(させる)ことが効果的であるのか ソフトウェアアーキテクチャの目的 そもそもソフトウェアアーキテクチャはどのような欲望を満たすための方法か ソフトウェアアーキテクチャの目的は、求められるシステムを構築・保守するための必要な人材を最小限に抑えること である。 (CLEAN ARCHITECTURE) 「求められるシステムを構築・保守するための必要な人材を最小限に抑えたい」 => 構築容易性 と 保守容易性 を確保したい 構築容易性 「構築しやすさ」とは? ソフトウェアを構築するとはどういうことか ソフトウェアの2つの価値: 「振る舞い」と「構造」 振る舞い: 要件を満たすこと => いわゆる機能 構造: 振る舞いを簡単に変更できること => いわゆるアーキテクチャ 構築しやすさ=価値の生み出しやすさ 要件を満たしながら振る舞いを変更
DDDと出会う前 自分は元々アーリーステージ(シード)のスタートアップでRailsを書いていました。人手の問題で拙いながらもReact Nativeでモバイルアプリを作ったりAWSでインフラを構築したりとよくいるエンジニアです。昨年末に今の会社への転職がきっかけでDDDでの開発に従事するようになり独学でキャッチアップしました。元々DDDという単語自体は聞いたことがありました。きっかけは確かこちらの記事だったと思います。 ドメイン駆動設計の比類なきパワーでRailsレガシーコードなど大爆殺したるわあああ!!! 自分自身Railsを書いてはいましたが、自分のコードに納得感を得られたことは一度もありませんでした。 このロジックはここに書いて良いのだろうか? DB設計ってこれで合ってるのか? う〜ん、テストコード書きにくいなあ よくある悩みです。しかし、スタートアップでスピード開発を優先していたの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く