4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HanamiAdvent Calendar 2017

Day 24

Hanamiの2つの原則のうちの1つ モノリスファーストとは何なのか

Last updated at Posted at 2017-12-23

モノリスとは一枚岩という意味で、マイクロサービスに対極に位置するものです。マイクロサービスという言葉を最初に使ったのは(おそらく)マーティンファウラーですが、彼は口を酸っぱくして「最初からマイクロサービスでつくるな」「まずはモノリスで始めよ(モノリスファースト)」といっています。

なぜ最初からマイクロサービスで作ってはいけないのでしょうか? それは初めからにマイクロサービスにしてしまうとメリットよりもデメリットのほうが大きくなってしまうからです。

ではHanamiがどのようにモノリスファーストを実現しているかをいていきましょう。

Hanamiのモノリスファースト

Hanamiのアプリケーションのディレクトリ構造は以下のようになっています。

Hanamiのディレクトリ構造
[] % tree -L 3   
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── apps
│   ├── api_v1
│   │   ├── application.rb
│   │   ├── config
│   │   ├── controllers
│   │   └── types
│   └── web
│       ├── application.rb
│       ├── config
│       ├── controllers
│       ├── frontend
│       ├── node_modules
│       ├── package.json
│       ├── templates
│       ├── views
│       ├── webpack-assets.json
│       ├── webpack.config.coffee
│       └── yarn.lock
├── config
│   ├── boot.rb
│   ├── environment.rb
│   └── initializers
├── config.ru
├── lib
│   ├── my_app
│   │   ├── entities
│   │   ├── mailers
│   │   └── repositories
│   └── my_app.rb

appsというディレクトリがポイントで、このなかに複数のアプリケーション(api_v1, web)が入っています。
そしてそれぞれのアプリケーションにcontrollersviewsがあるのがわかります。
実はconfigのかなにはroutes.rbが入っています。

libディレクトをみるとここにはentitiesrepositoriesがあります。
entitiesはビジネスロジックを記述する場所で、repositoriesはDBとのやり取りを記述する場所です。

このようにコントローラやビューをアプリケーションごとに分離しながらビジネスロジックを共有することで、できるだけ管理可能な形でモノリスに保つというのがHanamiの特徴です。

いいね!

参考資料

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?