Hatena::ブログ(Diary)

杉風呂2.0 - A Lifelog -

2014-11-03(月)

[]エンジニアが事業計画を知らなくてモノが作れるのか?

駄文ポエムです。

  • 先のことなんてわからないし、事業計画通りにいくわけがない。だがしかし
    • 何ヶ月後にどのくらいのユーザを集めたいのか、それがどれくらいのトランザクションを発生させるのか知らなくて作れる?
    • たとえYAGNIといっても直近作るfeatureぐらいは知っているべき
  • 事業規模に合わせて段階的にスケールさせていけばいいが、そのタイミングがいつなのか知っているか?
    • プロトタイプレベルの実装とプロダクションレベルの実装は違う
    • 機能が変われば最適なデータモデルやアプリケーションアーキテクチャも違う
    • チーム体制だって違う
  • エンジニアは、トレードオフを都度判断し、決定する
    • エンジニアリング上の判断がサービスの成長や企業の収益に直結する時代
    • 設計を統合したり、ビジネスサイドや経営層にリスクを説明したり諸々提案、交渉する役割を担う人が重要
  • プログラミングできればそれで満足なエンジニアなんてほとんどいない
    • サービスが提供する価値は何か、自分のやったことが会社にどういった利益をもたらすのか、世の中にどう役立つのかを知らないで仕事できないよね
    • にんげんだもの

2010-05-20(木)

[][]『Webアプリケーション設計・実装のためのフレームワーク活用の技術

JavaでWebアプリケーションを作っている人に必須の三層アプリやMVCAOPDIコンテナドメインモデルとトランザクションスクリプトの違いについての説明がさくっと説明されている。新人にはぜひ勧めたい。サンプルプログラムにSeasar2S2StrutsS2Daoが使われているが、Seasar2の特徴を生かしているというか、説明したい箇所以外の余分なプログラムコードが全然出てこない。難点を言えば、アプリがシンプルすぎるのと、誤植が多かったところが残念。

Webアプリケーション設計・実装のためのフレームワーク活用の技術

Webアプリケーション設計・実装のためのフレームワーク活用の技術

2008-10-27(月)

[]マスタテーブルの設定

ちょっとDBアクセスについて調べていたところ、以前のプロジェクトでの出来事を思い出した。

この問題は教科書的にはどう解決するのだろう。

1. いいからユーザにがんばってもらう

2. マスタの属性に適用開始日・適用終了日を追加する

3. マスタは「表テーブル」「裏テーブル」の二重持ちにして、マスタメンテ機能は裏を更新する。で、適用日の0時にバッチで表にコピーする

4. マスタ上にはIDしか置かない。その他全属性は別のテーブル(マスタ履歴テーブル)に移動。トランザクションデータはマスタではなくマスタ履歴テーブルを参照する


個人的には2.は嫌いだ。日付を指定しないとjoinできないからうっとうしいのだ。ID一発で等結合したい。

マスタメンテナンスで未来のデータを入力したいんですけど - 極北データモデリング

以前僕が参加した大手SIerのプロジェクトでは2.になっていた。で、そのとき起こった障害が、IDと処理日付で該当レコードを引っ張ってこようとしたら、マスタの設定ミスで2件取得できてしまい、結果を1件しか想定していなかったDAOのあたりで落ちたというもの。2.の場合、テーブル内部で整合性を取る必要があるけど、いつの日付でもIDを指定すると1件しか取得できないっていうのはRDBMSの整合性制約でできるんだっけ?そのテーブルを検査するSQLを書くとか妙なことになりそうだ。かといって削除フラグを操作すると本末転倒。3.や4.は時刻が変わるのを待つ以外に更新バッチが動くので運用やジョブ設計で痛い目見そう。