Questions and feedbacks

yhirano55
yhirano55 commented over 1 year

まったくテストがないアプリケーション場合、どこのテストから書いていくのが良いのか、気になってます。

Like(2)

anonymous
anonymous commented over 1 year

データの同期はどうされていますか?

Like(1)

anonymous
anonymous commented over 1 year

何かgemを使われていますか?使われているなら、どんな選定理由ですか?

Like(2)

anonymous
anonymous commented over 1 year

辞書を作ったりしていますか?

Like(0)

qsona
qsona commented over 1 year

事前質問ありがとうございます。参考にさせていただいて本編でも触れさせていただきますが(ほとんどが自然に取り込めそうです)、先に簡単に返答させていただきます。

  • どのような粒度でサービスを分割していますか?(あるいはどのような粒度で分割するのが良いですか?)
    • 一言でいうと、ビジネスとして独立できる単位、なのですが、分割の単位は非常に重要だと思っているので本編でもメインで触れる予定です。
  • 言語やフレームワークが異なる場合、メンテしにくくなりそうですが、そこはどのように対応していますか?
    • いまのところほぼ全てRailsです。これはRails以外を使うインセンティブがそこまで強いケースがいまのところないからです。ただ、いつでも他の言語を使ったサービスを作れるような状態を維持しています。これも関連する話ができそうです。
  • 現在刊行されているマイクロサービスに関する書籍で、これからマイクロサービスに取り組むチームに薦めたい一冊はありますか?
  • サービスとデータストアは1:1になっているのですか?
    • はい、1:1 (もしくは 1:n) で、サービス間での共有はしていません。「いかなる場合でもデータベースを共有しない」は、マイクロサービスをやるときに最も重要なPrincipleだと思っています。過去1度だけですが共有してしまって、今つらい、という話もあるんですが、時間があれば本編で触れたいです。
  • テストはモックすればなんとかなりそうですが、ローカルで立ち上げるの辛そうに見えますがどのように対応していますか(特に非エンジニア職でローカルでの動作環境を作らないと作業ができない場合はしんどそう)
    • これは難しいですよね・・・本当に難しい。前提としては、全サービスを詰め込んだdocker composeを作るみたいなアプローチは厳しい(ローカルで動かすにはメモリが足りなくなる)ので、作業に必要な単位でのdocker composeを用意する、みたいな感じになると思うんですが、今のところそこまで必要性がなくて私はやっていないです。
  • 1リポジトリに複数サービスを同居させて管理しているのでしょうか(repoとサービスが1:1?)
    • 弊社では1:1です。まずデプロイは分離するべきなので、リポジトリの単位もそれに従って分けるのが自然だと思います。1チームが複数のマイクロサービスを管理する場合はくっつけておいたほうが管理しやすいこともあると思いますが、チームとマイクロサービスのマッピングが変わったりすることもあるので逆に面倒そうな気はします。
  • railsはapiモードで利用していますか?
    • apiしか使わないならapiモードでrails newするが、apiモードにこだわるべきでは決してない、というのが私の意見です。似たような話題を触れる予定だったのですが、apiモードを使う/使わない、というテーマでよりrails的な話にできるので、良い視点をいただきました。
  • 多くのサービスでrailsを利用している場合、rails newすることが多いと思うのですが、そのセットアップの手間を省くための工夫として、何か取り組みはされていますか?(テンプレートなど)
    • application templateを作ってようやく使われるようになってます。これも触れる予定でしたが onkさんの Application Templateのススメ という発表の特に後半の話がすごく好きです。

Like(2)

qsona
qsona commented over 1 year

Wantedlyさんは、ネイティブアプリも途中からかなり分割していっている印象があるのですが、バックエンドのマイクロサービス化とネイティブアプリ・フロントアプリの関係についてもできればお聞きしたいです。 (当日は裏で司会をしている予定なので、リアルタイムでは聞けない可能性が高いのですが... >< )

Like(3)

qsona
qsona commented over 1 year

すいません、長すぎて切れたようなので分割します。

  • 2桁以上のrailsアプリケーションを保守する場合、アップグレードや依存ライブラリの定期アップデートに骨が折れそうな印象ありますがどのような工夫をしていますか?
    • はい、これは絶賛困ってます。Railsのメジャーバージョンアップとかそういうのは、影響範囲が見切れるので逆に楽なんですけど、セキュリティパッチが当たったgemを全部上げる、みたいなケースで面倒を感じますね。エンジニアの頭数とサービス数のバランスが良ければ、そんなに問題ではなさそうなのですが。(いまのところエンジニアの数 < サービス数なので)

追記: 長さではなく < 文字の前にスペースを入れてなかったのが原因でした、失礼しました 🙇

Like(1)

yhirano55
yhirano55 commented over 1 year

Railsのコンポーネント(actioncable, actionmailer, actionpack, actionview, activejob, activemodel, activerecord, activestorage, activesupport, railties)のなかで、最も関心が高いコンポーネントはどれですか? それに加えて、最も関心が薄いコンポーネント(ないし機能)はどれですか? 理由や背景も教えてほしいです。

Like(0)

yhirano55
yhirano55 commented over 1 year

@qsona ご回答ありがとうございます。セッションでも触れていただけることありがたく思います(体系的な話が聴けそうで楽しみです)。サービス間での依存関係も発生しそうなので、デプロイもひと工夫必要そうですね。

いまのところほぼ全てRails

ある程度使う道具を統一していた方が、コードレビューする際にコンテキストスイッチが発生しなくてよさそうですね。

セキュリティパッチが当たったgemを全部上げる、みたいなケース

PR作るところまでは自動化できそうですが、急ぎの場合に、それをレビューして取り込むのも大変そうですね

Like(1)

yhirano55
yhirano55 commented over 1 year

アプリケーションを跨いだ機能を開発するにあたって、これらを全てセットアップする必要があります。また、機能の追加により依存するパッケージやミドルウェアが追加される場合もあり、これらの管理は非常に煩雑です。

とてもよくある状況なので、どうやって解決しているのか非常に知りたいところです。楽しみにしています。

Like(0)

koic
koic commented over 1 year

日本人コミッターのみなさんに質問です。もし日本の Rails に関するカンファレンスに、外タレの Rails コミッターをキーノートで1人呼ぶという立場になったら「誰に」「どういったテーマの話」でオファーを出されるでしょうか?

Like(4)

koic
koic commented over 1 year

Active Support が中心になると思うのですが、Rails から Ruby に移植されると良いと思う機能やメソッドはあるでしょうか?

Like(3)

284km
284km commented over 1 year

Ruby のここがこう変わると、Rails の開発が捗る。というような視点で考えていることがあったら教えてください。

Like(3)

284km
284km commented over 1 year

Rails のデバッグはどのようにやっていますか? (print debug とか、binding.pry で止めてとか) おすすめの技があったら教えてほしいです!

Like(15)

toshimaru
toshimaru commented over 1 year

Railsコミッターはどのように選出されるのですか?(あるいはどうすればRailsコミッターになれますか?)

Like(3)

morimorihoge
morimorihoge commented over 1 year

多分発表で出てきそうですがAWSならFargateとself managed Kubeのpros. cons.みたいな話に興味があります!

Like(1)

morimorihoge
morimorihoge commented over 1 year

スモールスタートだったり社内システムなんかだとRails Consoleを使いたくなったりすると思うんですが、そういう場合はどうするのがbest practiceなんでしょうか? ※SQLだけだとARのValidationとか通らないので、interactive rubyしたい

fat container的な軽量VM感覚で良ければsshしてrails c という手もありますが、コンテナにsshログインするってのもアレな気がしています。

Like(2)

yuemori
yuemori commented over 1 year

AWS on Kubernetes、ECSやGKEといった選択肢もあったと思うんですがその選択肢をとられた経緯が気になります

Like(2)

nabuchi
nabuchi commented over 1 year

サービスを切り出す時に エンドポイント分割 or 内部API の話があったと思うんですが、内部APIを採用した理由をもう少し詳しく聞きたいです。

Like(2)

nobuhikosawai
nobuhikosawai commented over 1 year

Docker作る時の秘匿情報の管理、具体的にどのように行われているのか気になります

Like(3)

qsona
qsona commented over 1 year

docker build中にbundle installしない理由と、どういう方法でやっているかが知りたいです!

Like(0)

yuemori
yuemori commented over 1 year

ビルダーイメージとランタイムイメージを分けるとのことですが、Railsの場合どういうところを気をつけられていますか? Railsの場合、どうしてもnative extension用のパッケージなどでサイズが大きくなりがちなのですが、かなり複雑なアプローチをとらざるを得なくてつらくなりがちです (例えばビルダーイメージから必要なファイルだけとってくるとかそういうアプローチもあると思うんですがとてもつらい)

Like(2)

naoki85
naoki85 commented over 1 year
  • 切り出し元から切り出し先を起動してテストされていたということですが、その起動のプログラムやコンフィグはどちらで管理されているでしょうか?
  • また、変な質問になりますが、テストコードが関係性を持ってしまわないでしょうか?

追記
実は現在アサインしているプロジェクトが近い形になっておりまして、(私がアサインした段階で) 普段少し疑問に思っておりまして。。。

Like(1)

hachi8833
hachi8833 commented over 1 year
  • Google Educationsについてはいかがでしょうか?(純粋に見解を知りたくて...)

Like(0)

qsona
qsona commented over 1 year

(なんちゃってのprefixがありつつもw、)マイクロサービスにしているということですが、学校向けのサービスということで、使うユーザの種別がたくさんありそうなのが難しそうに思います(生徒、保護者、先生など?)。例えば生徒向けのサービスと先生向けのサービスで同じデータを使うことはあるのでしょうか。そのような場合、マイクロサービスはどういう単位で分けられているのでしょうか?

Like(0)

This software is available as open source under the terms of the MIT License.
Copyright © 2018 Yoshiyuki Hirano