# Microservices on Rails Rails::Service is an opinioned Rails Engine providing boiler plate needed for making microservice Rails application. ## Note on Microservices Microservices architecture is a great way to build and scale huge distributed applications. It implies though that it's not for everybody and you're probably better off sticking with your monolith and considering microservices in the future when the need arise or even maybe never if you'll lucky. Microservices are not for everybody, they're hard and infact thery're not a good solution for everybody. Before choosing and investing in microservices architecture, I advise you to strongly considering it from every angle. Recommended reads/videos: * [Microservices](http://martinfowler.com/articles/microservices.html) by Martin Fowler * [RailsConf 2015 Keynote](https://www.youtube.com/watch?v=KJVTM7mE1Cc) by David Heinemeier Hansson (video) * [Ruby On Ales 2015 - The Recipe for the Worlds Largest Rails Monolith](https://www.youtube.com/watch?v=naTRzjHaIhE) by Akira Matsuda (video) ## Rails::Service Overview If you choose to go with microservice architecture or you're already working on such application(s) ## Installation Add this line to your application's Gemfile: ```ruby gem 'rails-service' ``` And then execute: $ bundle Or install it yourself as: $ gem install rails-service ## Usage TODO: Write usage instructions here ## Todo * Rake task to generate Rails::Service skeleton (app-manifest.yaml, app-config.yaml etc.) * Docs * Add app-manifest page to admin panel * Add logging everywhere * KV Logger * GRPC * Endpoint ACL (Guard Dog) * Exception notification abstraction * on_fork hooks abstraction * exceptions_app for engines (not sure if it's possible to have one) ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/strzalek/rails-service.