Architecture
TalkAim of the talk: Show different ways how a developer can think about product.
Conclusion:
Microservices and Serverless are all really cool Architectural strategies but if you are productive with monolith and don’t have any scaling or team organization issue stick with Monolith. Monolith is not dead.
You really need to have a good reason to reach for microservices / serverless and if you do I hope this talk will be helpful :)
Contact
- mail: [email protected]
- website: www.eq8.eu
- twitter: equivalent8
- github: equivalent
Resources
Monolith
Note: When it comes to Monolith a I’m fan of both good object oriented practices (e.g.: SOLID, object composition, abstractions …) and pragmatic principles as proposed by DHH (minimize abstractions, stick with conventions, …)
I’m fan of both “Majestic Monolith” and “FE / BE split with JSON API in the middle”
They all work, but team need to agree on one strategy form day one and stick with it. Changing your mind on how to develop stuff every other day is the true reason why your software is a mess.
Majestic Monolith Architecture
- DHH - Majestic Monolith
- Ruby Rouges podcast featuring DHH on Monolith development
- How DHH Organizes His Rails Controllers
Object Composition Monolith Architecture
My articles related to this topic:
- https://blog.eq8.eu/article/rails-association-relation-arel-magic.html
- https://blog.eq8.eu/article/policy-object.html
- https://blog.eq8.eu/article/rspec-json-api-testing.html
- https://blog.eq8.eu/article/lessons-learned-from-functional-programming-as-a-ruby-developer.html
Note: I recommend every Ruby developer to try in depth Elixir and Phoenix framework. This will make you better OOP developer. Yes it’s a functional language but the way how processes work and send messages inbetween each other strangely mimics how messages are sent from one object to another in OOP languages.
Recommended paid resources:
Learning real OOP is a long road and requires some investment
Monolith with Bounded Contexts
Articles:
Talks:
- Elixir Phoenix 1.3 by Chris McCord - good resource explaining Bound Contexts from a perspective of a functional programming language Elixir (Phoenix framework).
Other monolith approaches
- The Many Meanings of Event-Driven Architecture • Martin Fowler
- José Valim - Idioms for building distributed fault-tolerant applications with Elixir
JWT Token
Microservices
Articles:
- What are Microservices by M.Fowler
- Two pizza teams
- Is EC2 Container Service the Right Choice on AWS?
Talks:
- Mastering Chaos - A Netflix Guide to Microservices by Josh Evans
- Microservices by Martin Fowler
- Containerized Micro Services on AWS
- Chad Fowler - From Homogeneous Monolith to Heterogeneous Microservices Architecture
Books:
Serverless
Ruby as FaaS:
- AWS Lambda and Ruby
- Using Ruby in AWS Lambda
- Traveling Ruby
- 2017 RubyHACK, James Thompson: “Serverless” Ruby on AWS
- Serverless framework - Ruby
- AWS Lambda JRuby
AWS Lambda:
- Running Web Server on AWS Lambda (Express JS) (I’m not recommending this approach)
- Build serverless app with AWS Lambda and Auth0
Books:
Please help request FaaS providers to support Ruby
https://www.serverless-ruby.org
Also please :+1
these discussions if you can:
Serverless on Kubernetes
If you want to be your own FaaS provider. And yes you can run Ruby.
- https://github.com/kubeless/kubeless
- https://www.youtube.com/watch?v=AxZuQIJUX4s
- https://www.youtube.com/watch?v=1QZ6x_8h8qY
Iron Functions
Iron Functions is an OpenSource FaaS platform that supports Ruby! Problem is that you either provision it yourself or you will pay for monthly provisioning to Iron.io (It’s not pay for what you execute as AWS Lambda has)
Photos from the event
Entire blog website and all the articles can be forked from this Github Repo