Resources on how to build and structure Umbrella Projects using Phoenix 1.3

Greetings everyone,

At my current workplace we’re evaluating different ways of building a microservices architecture for some parts related to our existing apps and with the Umbrella apps approach it looks like one doesn’t necessarily have to manage them in separate repositories, release management also gets easier(in terms of which PR’s get merged first) and I believe one can also take the advantage of having all microservices in one language(if Elixir is a good fit for a given problem at hand) and still having good amount of separation of concerns.

I’ve been able to find this information by looking up some of the below resources and videos around Umbrella Projects:

  1. Lonestar ElixirConf 2017- KEYNOTE: Phoenix 1.3 by Chris McCord
  2. Elixir Umbrella - Microservices or Majestic Monolith? Georgina McFadyen - Elixir.LDN 2017
  3. ElixirConf 2016 - Building Umbrella Project by Wojtek Mach
  4. ElixirDaze 2017- Using Your Umbrella by Chris Bell
  5. Create an Elixir umbrella project containing a phoenix app and build a release with Distillery
  6. Designing scalable application with Elixir: from umbrella project to distributed system
  7. Structuring Elixir projects
  8. Dependencies and umbrella projects
  9. Umbrella Projects - Elixir School

From my research so far, I’ve found that there are hardly enough books, tutorials that cover best practices around building umbrella apps from ground up in at least some more depth in a step by step manner and having more materials(Books, Tutorials, Best Practices, Tips, Lessons learnt and other resources) around this would be really helpful at a time when we’re considering an umbrella app structure as a way of doing things. In the meantime, I plan to also learn more about umbrella projects from my end via trial and error.

Currently, I plan to closely follow the questions related to Umbrella projects based on those that have the umbrella tag as part of Elixir Forum and also follow relevant questions via other platforms like - Elixir lang Slack, Stack Overflow etc.,.

If there any books, tutorials, best practices, tips, lessons learnt the hard way(this can be really valuable to fellow readers like me) and other gotchas that you think could be worth sharing from your experiences of building an umbrella project at your workplace or through your side projects, please do share them here via relevant links or your own experiences as a reply to this thread here as I think we all could benefit from each others experiences given that there are limited resources/documentation available on this topic currently.

Also if you’re planning to write a new blog on your experience of building an Umbrella project, please do link to those posts as part of this thread.

Thank you.

8 Likes

I have been trying to move from Ruby to Phoenix/Elixir and for me learning is by doing. Have been tinkering with Elixir but I am having a hard time trying to understand umbrella projects. Waiting on the new phoenix book but agree not enough resources :thumbsup: imo for what it is worth :003:

2 Likes

If you’re interested in microservices or the Replaceable Component Architecture, you might like PragDave’s online course :003:

3 Likes

Hi @AstonJ ,

Thanks for your response! Does Dave Thomas make use of Umbrella apps in the online course ? If so, that’ll be perfect.

1 Like

He does not use umbrella projects in his course. However, he does an excellent job of factoring his application into concerns that are clear and intuitive.

3 Likes

He goes a step beyond umbrellas and builds his project as a series of fully independent (and replaceable) apps - pretty much everything you learn will be useful to you if you use umbrellas :023:

3 Likes

Two more resources about how to decide using umbrella projects:

  1. Adopting Elixir book (see “Dividing Applications” page): https://books.google.nl/books?id=F_tUDwAAQBAJ&pg=PT131&dq=adopting+elixir+“dividing+applications”&hl=en&sa=X&ved=0ahUKEwilruDj3r_eAhVJjqQKHdaFD-AQ6AEIKjAA#v=onepage&q=“dividing%20applications”&f=false

  2. Umbrellas: only when it rains? (Elixir School blog post): https://elixirschool.com/blog/umbrellas-just-when-it-rains/

2 Likes