巨大なモノリシック Rails アプリケーションの マイクロサービス化戦略 / 2019 microservices in cookpad
定期的にDevise批判の話が出てくるので、個人的な考えを書いてみます。 Railsに詳しくないなら、Deviseを使わないべきか? 「認証自作、 Rails 、 Devise」の記事で以下のような記載がある。 「Rails について深い理解がないならば、 Devise は使うな」とあります。この方針は10 年近く前から書かれています。 これ元の英語とあってない気がするんですよね。 If you are building your first Rails application, we recommend you do not use Devise. Devise requires a good understanding of the Rails Framework. In such cases, we advise you to start a simple authenticatio
Introcusion つい先日、「Rust版のRails」ともいわれている、 Locoというフレームワークを教えてもらいました。 Railsは昔ちょっとさわった程度なのですが、 Rustで手軽にRailsライクなアプリ開発はおもしろそうなので、 試してみました。 Loco? Locoについて簡単に説明します。 このblog記事で、Locoって何? なんでRustなの?とか誰のためのフレームワーク?みたいなことが書いてあります。 軽く説明すると、↓です。 Locoって何? Loco は、Rails からインスピレーションを得た Rust用のWebフレームワーク ほぼすべての Rails 機能が含まれている Controllerとaxum経由のルーティング ActiveRecordライクにSeaORMでモデル操作 rrgenでコード生成 その他いろいろ。詳しくは元記事で RubyでいいならR
CTOが訊く#2 Rails Committer と DeNA 「CTOが訊く」は、DeNA CTO の @nekokak(ねこかく)こと小林 篤が、社内のメンバーに、その人となりや仕事っぷり、そして野望を訊く、というコーナーです。 第2回の対談ゲストは、@kamipo(かみぽ)こと上薗 竜太。 Full-Time Rails Committer としての入社 ▲左から、@kamipo:上薗 竜太、@nekokak:小林 篤 @nekokak 今日は「CTOが訊く」へ、Rails Committer である kamipo さんに来ていただきました。よろしくお願いします。 @kamipo お願いします。 @nekokak この「CTOが訊く」は、DeNA で活躍しているスペシャリティの高いエンジニアの人から色々と話を訊きながら、DeNA でどういう活躍をしているか伺って深堀りをしていく、とい
突然ですが、あなたはRailsのissueとプルリクがいくつあるかご存知でしょうか? 2019年10月17日現在、それぞれ issue 384 / PR 803 になります。 多いですよね...。 個人的に、最近このissueを減らすのを少しでも手伝えないものかとissueにコメントしてみたり、パッチを書いたりしてるけど、 なかなか大変なので、コントリビューターの敷居を下げるためにブログ記事を書いてみました。 コントリビュータが増えれば、きっとissueも減るはず!! Rails への貢献について Railsガイドに丁寧な説明が記載されているので、読んだ事がない方は一読するのをオススメします。 railsguides.jp この記事で紹介すること Rails への貢献方法は色々なものがあります。 新機能の追加 バグの報告 バグを修正するプルリク作成 ドキュメントの追加や修正 ...etc
これは、これまでRailsの古き良きMVCな開発体制しか知らなかったバックエンド開発者が、環境が変わってフロントエンド開発を学ばざるをえなくなった者の記録です。 歴史的に正しい事実を書いたものではなく、私個人の理解を整理するための妄想日記です。 私はこれまではWebアプリの開発ばかりやってきて、RailsでHTMLテンプレートエンジン使ってviewを作るスタイルでしか開発してきませんでした。 しかし、ネイティブフロントとWebフロント両方があるアプリケーションが開発されているところを見て、ある事を思いつきました。 「Webフロントもネイティブフロントのように開発できれば、バックエンドエンジニアはバックエンドに、フロントエンドエンジニアはフロントエンドに分業できて、開発しやすくなるのでは?」 この気付きが超重要でした。このイメージを持てたおかげでフロント開発の意義がスルスル入ってきました。
プロダクトの変遷でアーキテクチャーがどう変わったか 前口上 Web開発においてとりうるアーキテクチャーにはいくつかパターンがあります。 サーバー構成をモノリスかマイクロサービスかで分ける場合もありますし、データベースを内製で持つか外部のmBaaSに任せるかで変わる場合もあるでしょう。認証部分をOAuthに切り出したり、全文検索部分だけ外部サービスを使うこともありますね。 とある時は新しい技術Aを使うことがいけてるという時があれば、少し経つとその技術が終わったことにされる場合もあります。 こういった技術のトレンドにはその時にビジネスチャンスが広がったプロダクトのトレンドに影響されていることも多く、サーバー・クライアント比率の観点で見るとうまく整理できることに気づいたのでまとめてみます。 System of RecordとSystem of Engagement のっけから人様の資料で恐縮です
Render.comについて、日本語記事が全然なかったので紹介します。 (2021/08/01追記 使用感を追加しました) Render.comとは 様々なWebアプリをGitHub連携で簡単にデプロイできるPaaSです。 RailsのようなWebサーバーのデプロイ以外にも、静的サイトやバックグラウンドジョブ、またデータベースやスケジュール実行なども提供されており、よほど尖ったことをしない限りは大体のWebサービスはこれひとつでカバーできそうです。 またデプロイプレビュー、様々なミドルウェアのワンクリックデプロイなど、いろいろな便利機能が揃っています。 自分はBlitz.jsのデプロイ先として一番先頭で紹介されていたので知りました。日本だとほぼ知名度がないように見えますが、Twitterで検索してみると「次世代のHeroku」などと紹介されており、徐々に盛り上がりを見せているように感じます
Fat Model1まずはFatステージ1。Railsというものを全然知らない超初心者が陥るステージです。ビューに何でもかんでもロジックを書いちゃう。その結果がFat Viewです。 次にFatステージ2。ある程度Railsに慣れてきた開発者が陥るステージです。Modelへのロジック分離がうまくできず、Controllerにロジックが集中する。その結果はFat Controllerです。 最後がFatステージ3。Railsを習熟したエンジニアであればModelにロジックを寄せていくのが定石です。その結果出来上がるのはFat Modelです。 このように どんなにRailsに習熟してようと最終的にぶつかる壁がFat Model です。 Fat Model対処のための3つのアプローチFat Modelを倒すためのアプローチとして、僕は下記の3つに分けて整理すれば良いのではと考えました。 Rai
Herokuの移行先を考える 今運用しているアプリ達をすぐにHeroku以外に移すということはしないまでも、競合となるプロダクトの調査をしておくことは(特に後発のものについては)機能面で実はこんなに便利なものがあったのか、と気づくことにもなったりするので、やっておいて損はないかと思いました。 比較対象について 比較する対象としては、インターネットで最近見かけるPaaSを選定しました。同様のことができるIaaSのコンポーネントとして、AWS FargateやGoogle Cloud Runがありますが、そのようなIaaSの一部として提供されるものについては今回は比較対象とはしません。 今回の比較対象は以下3つです。 Render https://render.com Railway https://railway.app Fly.io https://fly.io deployするRails
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Why we're sticking with Ruby on Rails | GitLab(2022/06/08にthenewstack.ioに掲載されました) 原文公開日: 2022/07/06 原著者: Sid Sijbrandij -- GitLab, Inc.の共同創業者、CEO、取締役会議長 Ruby on Railsを作ったときのDavid Heinemeier Hansson(DHH)が道しるべとしたのは、それまでに経験していたPHPとJavaでした(インタビュー)。DHHにとって、JavaのWebフレームワークはJavaが冗長で柔軟性が低く使いにくい点が好みでなかったものの、構造的に統一されている点が高く評価できるものでした。一方、PHPについては敷居の低さが好みだったものの、プロジェクトが泥沼化しがちな点をあま
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails 6: the missing developer setup guide - DEV Community 💻💻 原文公開日: 2019/11/19(最終更新: 2019/12/17) 著者: Vincent Voyer 日本語タイトルは内容に即したものにしました。画像はすべて元記事からの引用です。 原文の目次は省略しました。原文の乱れは訳文で修正してあります。以下のRailsガイドもどうぞ。 Webpacker の概要 - Railsガイド 更新履歴: 2019/11/28: 初版公開 2021/05/06: 更新 👋皆さんこんにちは。本記事では私がRubyやRuby on Railsを学んだ一環として、ドキュメントに書かれていないことを全部盛りしました。RubyやRailsのエコシステムは初めてなので、皆さまか
こんにちは osyoyu です。 人々がNext.jsとかAstroとかで新しいブログを作っては放置する季節になってきたな — おしょうゆ (@osyoyu) January 1, 2024 ブログシステム自作のシーズンですね。ご多分に漏れずブログシステムを作ってました。実はこれは最初の記事ではなくて、こっそり事前に2023年の振り返り記事などを書いたりしています。 ちょっと気に入っているのが記事のタイトルを未設定のままにすると投稿日がタイトルになる仕様で、タイトルをつけるほどでもない2段落ぐらいの文を投稿しやすくなった、気がしてます。 ブログシステム自作のモチベーション 目的は一応ちゃんとあって、一定量のリクエストを受けるRubyのWebサーバーがほしかったというのが大きいところ。最近Rubyプロファイラを開発していて、プロファイル対象のひとつとしてWebサーバーがほしかったのです。正常
(訳者注: 原文は https://rubyonrails.org/doctrine/ です。しばらく寝かして問題なさそうであれば本家に投げようかと思っています。おかしいところがあればコメント・編集リクエストをお待ちしております。) The Rails Doctrine By David Heinemeier Hansson in January, 2016 Ruby on Railsの驚異的な台頭は、斬新な技術とタイミングによるところが少なからずあります。しかし、技術的な優位性は時間の経過とともに失われていきますし、タイミングの良さだけでは長期にわたってムーブメントを維持できません。そのため、Railsがどのようにして現役であり続けることができたのかだけでなく、どのようにしてそのインパクトとコミュニティを成長させてきたのかについて、より広範な説明が求められています。私が提唱するのは、永続
Rails アプリケーションの開発において、自分の変更に関係のないテストのせいで CI がコケるとストレスですよね?真っ先に直したくなりますよね?不安定なテストを直すのは大変な労力が要ると思ってませんか?実は、たいていのケースは簡単に再現確認ができるし、不安定になる要因もだいたい決まっているし、ログやスクリーンショットを見れば原因も簡単に特定できるんです! そんなわけで、日頃不安定なテストを潰している身として知見みたいなものをまとめてみました。 今回利用した環境は次のとおりです。 rails 6.0.0 capybara 3.29.0 selenium-webdriver 3.142.4 rspec-rails 3.8.2 Google Chrome 77.0.3865.75 (headless で使用) ChromeDriver 77.0.3865.40 (f484704e052e0b5
パッチ会や地域 Ruby コミュニティなどで集めた知見を元に、勤務先の永和システムマネジメントなんかで度々話している表題についてテキスト化しておく。 TL;DR Ruby 2.8.0 の開発が始まっているが、それは 2020 年のどこかで Ruby 3.0 になるらしい Ruby 3.0 ではキーワード引数 (以下 kwargs) の分離という破壊的変更があり、Ruby 2.7 系は事実上の移行パスバージョン的な位置付けになるだろう 2020年1月8日の現時点では、Ruby 2.7 の kwargs の分離警告について対応された安定版の Rails はなく、周辺 Gem も WIP なので OSS エコシステムに参加していくと良い 2.8.0 (tentative; to be 3.0.0) development has started 2019年の ruby/ruby での matz
Kaigi on Rails 2023の登壇資料です。 https://kaigionrails.org/2023/talks/moro/ 実世界のRailsアプリケーションをシンプルに保つための方法を、Railsが提供する機能群をもとに考察します。 実世界の、特に仕事で開発するRailsアプリへの要求は様々のものがあり、Railsの豊富な機能群をもっても日々苦労して開発しているかと思います。 そんな中でも、Railsが得意とするような設計に落とし込むことで、複雑な要求をシンプルな実装で実現できると感じています。 本講演では、Railsが提供する機能のうち、「RDB」「REST」「Ruby」という要素を軸に、実世界の要求をシンプルに実装するための考え方を紹介します。
テックカンパニーをテックカンパニーたらしめているものはなにか?技術か、人か、それともチームなのか。 連載「Technology Company Internals」では、テックカンパニーの内側で働くエンジニアに、技術に精通したエキスパートが対面で話を聞き、テックカンパニーとは何か?を探るだけでなく、テックカンパニーを目指す企業の指針となることを目指します。 マネーフォワードのCTOとVPoEに話を聞く 白石: 本日はよろしくお願いします。自己紹介からお願いできますでしょうか? 中出: 中出 匠哉と申します。マネーフォワードのCTOとして企業経営に関わり、経営にテクノロジー視点を導入していくのが主な役割です。他には技術面での方向性の決定や、エンジニアの人事制度の立案などもやっていますね。あとはサービスがどんどん大規模化していく中でも、技術的負債に優先順位を付けて、体制を作って解消していくのも
Ruby on Railsの作者として知られるDavid Heinemeier Hansson氏は、コンテナ・デプロイ・ツール「Kamal 1.0」を9月19日(現地時間)に公開した。同氏は開発したWebサービスをクラウド・プロバイダーから自前のサーバーに移行する手続きを進めており、Kamalはその手続きの中で生まれたという。KamalはMITライセンスで公開しているオープンソース・ソフトウェア。 Kamalは、Dockerでコンテナ化したアプリケーションを配備するツール。設定ファイルに外部の公開IPアドレスを記入して起動すれば、Linuxが動作するコンテナが動き出す。このコンテナにはSSHで接続することも可能だ。 Hansson氏はKamalをWebアプリケーションをクラウドから自前のサーバーに移す目的で使用しているが、クラウド間での移動など、ほかの目的にも利用できる。Kamalを利用す
RedwoodJS RedwoodJS は JavaScript/TypeScript で構築されたフルスタック Web アプリケーションフレームワークです。RedwoodJS プロジェクト自体は Tom Preston-Werner 氏 (GitHub 創設者であり Gravatar や Jekyll などの作成者) が中心となり始まりました。 私自身もつい最近になって同じ職場の @sakitoさんに存在を教えてもらったばかりです。 RedwoodJS は、READMEから抜粋するだけでも、次のような機能を持ちます。 フォーマット・ディレクトリ・ビルドなどに関するデフォルト構成 単一ファイルによるルーティング定義 GraphQL Client / API (with Serverless deploy) の構築 ページ・レイアウトなどのジェネレータ CRUD 操作に特化した Scaffo
この文書は、ある組織において、ある一つの Ruby on Rails で書かれたサービスの全部または一部を、(言語A) で書き直したい、という proposal に対して qsona が表明した意見の文を、一部手直ししたものです。このサービスは、現在担当しているチームとは別の人が初期実装をしたものであり、現在はまだ小規模ですが、今後新しいチームの手により発展していくもので、現在の規模のうちに要件や新しいチームメンバーに最適な言語で書き直すという選択は十分合理的です。また、この組織内のコードは、Ruby on Rails で書かれているものが大半であり、さらに組織としてマイクロサービスアーキテクチャの方向を目指している、という前提の上でお読みいただければと思います。もちろん文責は qsona 個人にあり、qsona の属する組織の意見とは関係ありません。 ------------------
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Gemfile of dreams: the libraries we use to build Rails apps—Martian Chronicles, Evil Martians’ team blog 原文更新日: 2024/05/28 原著者: Vladimir Dementyev(首席バックエンドエンジニア)、Travis Turner(技術記事編集者) サイト: Evil Martians -- ニューヨークやロシアを中心に拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日本語ブログ: 合同会社イービルマーシャンズ - Qiita 日本語タイトルは内容に即したものにしました。また、gemごとにGitHubリポジトリへのリンクカードも追加してあ
This version of Rails has been years in the conceptual making. It’s the fulfillment of a vision to present a truly full-stack approach to web development that tackles both the front- and back-end challenges with equal vigor. An omakase menu that includes everything from the aperitif to the dessert. This vision wasn’t possible even just a few years ago. We simply didn’t have the core technologies i
はじめに 作ったWebサービスの紹介 開発日誌 Getting Realを読む エレベーターピッチを作る 技術検証 ペーパープロトタイプを作る 技術選定とシステム構成図の作成 開発の進め方を考える $ rails new Herokuをセットアップ 独自ドメイン設定 + SSL化 SendGridをセットアップ S3 + CloudFrontをセットアップ Googleアナリティクスをセットアップ Googleサーチコンソールをセットアップ ロゴ・ファビコンを作る サイトマップを自動作成 metaタグを設定する Rubocopを設定する 便利Gemを導入する bullet letter_opener letter_opener_web xray-rails pry-rails pry-byebug pry-doc pry-alias awesome_print tapp rack-mini
こんにちは、プラットフォームチーム所属のまこたすです。 昨今、様々な場で「モジュラーモノリスを導入した」という話を目にするようになってきました。弊社でも昨年からモジュラーモノリスの試験導入を進めており、社内でノウハウが徐々に溜まってきたため、今回 技術ブログ で なぜ導入したのかと知見の共有 をさせていただけたらと思います。 想定読者 モノリスなアプリケーションの分割を検討している Railsへのモジュラーモノリスの導入を検討している 話さないこと チーム体制がどうあるべきかという観点の話 以下アーキテクチャについての詳細 モノリスアーキテクチャ モジュラーアーキテクチャ 背景 今回「モジュラーモノリスを導入した」というタイトルですが、最初に検討・導入に至るまでの背景について触れたいと思います。 hacomonoという組織・サービスの成長 hacomonoというサービスはリリースから現在に
「初学者から上級者までが楽しめるWeb系の技術カンファレンス」をコアコンセプトに掲げる「Kaigi on Rails」。ここで登壇したのは、STORES株式会社 CTO・藤村大介氏。別会社が自社にジョインしたことにより、新しく加わったプロダクトのRailsアプリケーションを触り改善する中で、見ていたこと・考えていたことなどを発表しました。全2回。前半は、アプリの概要を理解するために見ていたものについて。 STORES株式会社 CTO・藤村氏の自己紹介 藤村大介氏:「既存Railsアプリ攻略法」というタイトルで、CTOが何をやっているのか、何を見ているのか、何を考えているのかをお話ししようと思います。 自己紹介です。藤村大介と申します。あらためてよろしくお願いします。僕は2008年ぐらいから、バックエンドでRailsを書くのを中心にソフトウェアエンジニアとして仕事をしていて、フロントエンドも
50代・ほぼ独学・文系・未経験で2ヶ月半でWebアプリを開発するまで!【Rails+Nginx+Docker+AWS】RubyRailsnginxAWSDocker はじめに コロナ禍の中で会社経営をあきらめ、50代目前にして「Webアプリの開発者に、オレはなる!」と決意し、2ヶ月半でアプリを作成した経緯をご紹介させていただきます。 絶賛転職活動成功!(最終結果:企業エントリー145、書類通過10、内定3、業務委託3。転職活動期間2022/04末〜2022/11末) ポートフォリオサイトURL:https://delicha.github.io Wantedly プロフィール:https://www.wantedly.com/id/shouhei_yamamoto_bg アプリを実装するまで 今回のアプリを作成する「前」のおもな自分のスペックです。 アプリ開発前の年齢は限りなく50歳。 大
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Gemfile of dreams: the libraries we use to build Rails apps—Martian Chronicles, Evil Martians’ team blog 原文公開日: 2023/01/17 原著者: Vladimir Dementyev(首席バックエンドエンジニア)、Travis Turner(技術記事編集者) サイト: Evil Martians -- ニューヨークやロシアを中心に拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日本語ブログ: 合同会社イービルマーシャンズ - Qiita 日本語タイトルは内容に即したものにしました。また、gemごとにGitHubリポジトリへのリンクカードも追加してあ
人の見方によっていろいろなんですね。一番高いところを知っていて、現状を見た時にそっちのほうが低いので、人気が落ちたというふうに見る人も当然いるわけですよね。人気が落ち続けると消えてしまうので、オワコンと言う人もいます。日本でも海外でも、毎年のように「Rubyは死んだ」みたいなことをブログに書く人がいます。 https://logmi.jp/tech/articles/326541 logmi.jp ハイプサイクルの頂点との落差がRubyやRailsのオワコン論の印象を呼ぶという話はそのとうりだと思う。 実際に急激なシェアの落ち込みが発生しているのかというと Stack Overflow Insights などを見ても観測できない。 (この話題についてのGoogle Trends同士の比較は「ハイプサイクルは実在する」ぐらいの感想しか得られないことが多い) 「最近は新規プロジェクトのアプリケ
こんにちは、@f_subal です。 pixivFACTORY というサービスで普段はフロントエンドをやっています。 今回は Rails のサービスに Headless CMS の Contentful を導入し、ワークフローを改善した話をします。 ランディングページ、あるいはマスターデータの詳細について pixivFACTORY はグッズおよび同人誌がブラウザ上で簡単に作れるサービスです。 取り扱っているグッズは 60 種類以上あり、各グッズごとに仕様が大きく異なります。 グッズにはそれぞれ、仕様や出来上がりの写真を載せたページ(以下、product 詳細とも呼びます)が存在します。 要するに、以下の状況を想定してください。 運営が管理する静的なドメインモデル(ここでいう「作れるグッズの仕様」)が存在する モデルの各内容について説明するページが存在する 各ページの内容は DB の内容から
シビックテックとは最近では「FinTech」「EdTech」などなど、「なんとかテック」という名前(ちょっと気取った言い方では「X-Tech」と呼ぶそうです)の技術をよく聞きます。最近のはやりなんでしょうか。「シビックテック(CivicTech)」はその中でも比較的古参にあたるようで、10年ほど前から使われていた用語になります。 もっとも、シビックテックという言葉は誰かがこれといって提唱したことではなく、「Civic Technology」の略語としてなんとなく自然発生的に生まれたようです。シビックテックという言葉よりも前に使われていた用語に「Government 2.0」(Web 2.0の二番煎じみたいなやつですね)や「e-Government」といったものがあり、これらは政府や行政を電子化する、といったトップダウンの方向が強そうです。それに比べると、シビックテックは草の根型の活動も含め
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Lifecycle of a Rails Request 原文公開日: 2019/05/02 著者: Godfrey Chan サイト: Skylight 日本語タイトルは内容に即したものにしました。画像は元記事の引用です。 2019/10/03: 初版公開 2022/08/02: 更新 参考 以下のサイトで、Railsのリクエストの全ライフサイクルをビジュアル表示で追うことができます。本記事と合わせて参照することで理解が進むと思います。 サイト: Rails Trace rails-trace.chriszetter.comより 本記事は、私達がRailsConf 2019で行ったスピーチのまとめです。スライドはこちらでご覧いただけます。 エディタでコントローラのファイルを開き、アクションメソッドにRubyコードを少々書
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く