Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模Railsアプリの マイクロサービス化・序章

Avatar for yotaro yotaro
March 10, 2018

大規模Railsアプリの マイクロサービス化・序章

■イベント
沖縄Ruby会議02
https://okinawarb.doorkeeper.jp/events/70507

■登壇概要
タイトル:大規模Railsアプリの マイクロサービス化・序章

登壇者:Eight事業部 エンジニアリングマネージャー 藤井洋太郎

Avatar for yotaro

yotaro

March 10, 2018
Tweet

More Decks by yotaro

Other Decks in Technology

Transcript

  1. ᶃ ໊ࢗΛεΩϟϯ ᶅ OCRॲཧˍΦϖϨʔλʔೖྗ OCRͱΦϖϨʔλʔʹΑΔଟॏೖྗ ᶆ σʔλϕʔεԽ • ςΩετσʔλ •

    ը૾σʔλ ᶇ ΞϓϦέʔγϣϯͰ׆༻ ໊ࢗͷݕࡧɾӾཡɾฤू ᶄσʔλૹ৴ Πϯλʔωοτ ͓٬༷ Database ໊ࢗΛ “ࢿ࢈”ͱͯ͠؅ཧ ໊ࢗΛ ࢿ࢈ͱͯ͠؅ཧ ೖྗαʔϏε Ϋϥ΢υαʔ Ϗε 4BOTBOͷ࢓૊Έ
  2. ϦίϝϯυαʔϏεͷ࡞੒ APIαʔόʔͱͯ͠ͷ໾ׂ͚ͩͩͬͨͷͰɺapiϞʔυͰ࡞੒ rails new recommendation_service --api con fi g/application.rb 


    require "rails" # Pick the frameworks you want: require "active_model/railtie" require "active_job/railtie" # require "active_record/railtie" require "action_controller/railtie" require “action_mailer/railtie"
 … ඞཁͳmodule͚ͩಡΈࠐΊΔΑ͏ʹͳ͍ͬͯΔ AR࢖ͬͯ·ͤΜ
  3. ڞ௨ج൫APIͷ࡞੒ ͪ͜Β΋APIαʔόʔͱͯ͠ͷ໾ׂ͚ͩͷͨΊɺapiϞʔυͰ࡞੒ rails plugin new common_api --skip-bundle --mountable --api ͕ͩݱঢ়Ͱ͸ڞ௨෦෼Λେݩ͔Β੾Γ཭͢͜ͱ͕Ͱ͖ͳ͔ͬͨͨΊɺ

    Mountable Engineͱͯ͠࡞੒ con fi g/application.rb 
 groups = Rails.groups groups << :common_api if ENV[‘COMMON_API'] Bundler.require(*groups) Gem fi le 
 group :internal_api do gem 'internal_api', path: 'internal_api' end ؀ڥม਺Λ౉ͯ͠ىಈ͢Δͱɺ৽αʔϏεͱ্ཱ͕ͯͪ͠Δ
  4. Committee x Open APIͰϞοΫαʔόʔ΋্ཱͪ͛ΒΕΔ $ curl -X GET http://localhost:9292/apps [

    { "archived_at":"2012-01-01T12:00:00Z", "buildpack_provided_description":"Ruby/Rack", "created_at":"2012-01-01T12:00:00Z", "git_url":"[email protected]/example.git", "id":"01234567-89ab-cdef-0123-456789abcdef", "maintenance":false, "name":"example", "owner":[ { "email":"[email protected]", "id":"01234567-89ab-cdef-0123-456789abcdef" … https://github.com/interagent/committee#committeemiddlewarestub OpenAPIͰఆٛͨ͠ܕͷ஋(΍ࢦఆͨ͠αϯϓϧ஋)Λฦͯ͘͠ΕΔ