Hi Joseph -

I'm on a similar journey.  It's a really interesting subject that wasn't 
covered at all (at least at the undergrad level) when I went to school. 

I would definitely recommend checking out Jonas's awesome list of 
references from his recent talk at Strange Loop 
<https://www.youtube.com/watch?v=U1C5m8b0qg0>. 

The books you have (EIP and SOA Patterns) are great.

To those I would add:

- Akka Concurrency <http://www.artima.com/shop/akka_concurrency>
- I Heart Logs <http://shop.oreilly.com/product/0636920034339.do> by Jay 
Kreps, the designer of Kafka (there is also a webcast 
<http://www.oreilly.com/pub/e/3098>).  This is a collection of his recent 
epic blog posts (30 pages, highly recommended).
- Camel in Action <http://www.manning.com/ibsen/>
- Event Processing in Action <http://www.manning.com/etzion/>
- Java Concurrency in Practice (of course)
- Jeff Hodge's Notes on Distributed Systems for Young Bloods 
<http://www.somethingsimilar.com/2013/01/14/notes-on-distributed-systems-for-young-bloods/>
 
blog post and his Practicalities of Distributed Systems 
<https://www.youtube.com/watch?v=BKqgGpAOv1w> videos
- Pattern-oriented Software Architecture vol 4 
<http://www.amazon.com/Pattern-Oriented-Software-Architecture-Volume-Distributed/dp/0470059028>
 (and 2) 
<http://www.amazon.com/Pattern-Oriented-Software-Architecture-Volume-Concurrent/dp/0471606952>

There is a gap between academia and industry knowledge right now.  This is 
discussed in a post 
<http://the-paper-trail.org/blog/distributed-systems-theory-for-the-distributed-systems-engineer/>
 
on Henry Robinson's excellent Paper Trail blog where he provides a guide to 
digging deeper both on the academic side and by reading papers written by 
industry leaders like Google, Yahoo, etc.   Definitely read the links in 
the "First Steps" section.  The gap is also the topic of a post on Marc 
Brooker's blog <http://brooker.co.za/blog/2014/08/10/the-space-between.html>. 
 Besides papers he links to some other good people to follow like Aphyr 
<http://aphyr.com/> and Peter Bailis <http://www.bailis.org/blog/>.  I 
would also recommend following Kellabyte <http://kellabyte.com/>.

Working to fill the gap are a few books in progress
- Reactive Design Patterns <http://manning.com/kuhn/> by Akka's own Roland 
Kuhn and Typesafe's Jamie Allen
- Akka in Action <http://www.manning.com/roestenburg/>
- Designing Data Intensive Applications 
<http://shop.oreilly.com/product/0636920032175.do> by Martin Kleppman from 
the Samza Project (also check out his recent video 
<https://www.youtube.com/watch?v=fU9hR3kiOK0>)
- Unified Log Processing <http://www.manning.com/dean/>

Essential ACM Queue articles
- There's Just No Getting around It: You're Building a Distributed System 
<http://queue.acm.org/detail.cfm?id=2482856>
- The Network is Reliable <http://queue.acm.org/detail.cfm?id=2655736>
- Eventual Consistency Today: Limitations, Extensions, and Beyond 
<http://queue.acm.org/detail.cfm?id=2462076>

I recommend getting familiar with the CAP Theorem.  You're going to run 
into it all over the place.
- Towards Robust Distributed Systems 
<http://www.eecs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf> by Eric 
Brewer, the guy who came up with CAP.
- CAP Twelve Years Later 
<http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed>
 by 
Eric Brewer
- Availability and Partition Tolerance 
<http://pl.atyp.us/wordpress/index.php/2009/11/availability-and-partition-tolerance/>
- Consistency Tradeoffs in Modern Database Design 
<http://cs-www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf> (aka the 
PACELC paper)
- Perspectives on the CAP Theorem 
<http://groups.csail.mit.edu/tds/papers/Gilbert/Brewer2.pdf>

On the academic textbook side
- Introduction to Secure and Reliable Distributed Programming 
<http://www.distributedprogramming.net/)> (also in Jonas' list)
- Guide to Reliable Distributed Systems 
<http://www.amazon.com/Guide-Reliable-Distributed-Systems-High-Assurance/dp/1447124154.>
 
by Ken Birman.  Also check out his recent syllabus 
<http://www.cs.cornell.edu/Courses/CS5412/2014sp/Syllabus.htm> where there 
are slides covering the material in the book.  Speaking of Birman, he 
created a well-known distributed group membership algorithm called Virtual 
Synchrony <http://en.wikipedia.org/wiki/Virtual_synchrony> that is useful 
in a lot of use cases.  An implementation of Virtual Synchrony is the open 
source JGroups <http://www.jgroups.org/>.
- Principles of Computer System Design 
<http://www.amazon.com/Principles-Computer-System-Design-Introduction/dp/0123749573>.
 
 Second half of book is online 
<http://ocw.mit.edu/resources/res-6-004-principles-of-computer-system-design-an-introduction-spring-2009/>
. 

Have fun!


On Wednesday, October 1, 2014 8:25:09 AM UTC-4, joseph wrote:
>
> Hi Jonas
>
> Thanks a lot to take the time to answer such question, I really appreciate!
>
> I'm a bit surprised though: most of the books/papers you refer are 
> "research level", meaning for building solutions. I was kind of 
> thinking/hoping some solutions would already be built & reusable. Am I 
> wrong ? If not, that's would be more the kind of book I look for currently: 
> which are the current options, how they work, pro & cons, or even detailled 
> documentation on how to build on top of some solutions existing. 
>
> For example, I read about Finagle, which kind of address the same problem 
> space than akka: what would each imply, how to dig more into each of them 
> for building a distributed platform and so forth... 
>
> For example, I found SOA Patterns (
>  
> http://www.amazon.com/SOA-Patterns-Arnon-Rotem-Gal-Oz/dp/1933988266/ref=pd_sim_b_6?ie=UTF8&refRID=0W9E4FVDC683PX600T12
>  
> ) or Enterprise Integration Patterns: Designing, Building, and Deploying 
> Messaging Solutions 
>  ( 
> http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Deploying/dp/0321200683/ref=pd_sim_b_1?ie=UTF8&refRID=000HGGFMPKZB55H62HQJ
>  
> ) but I don't know how worth they're... 
>
> Still, I'll read at least the first one, "Introduction to Reliable and 
> Secure Distributed Programming", with interest, but building from scratch 
> such a tool feels  too.
>
> Thanks again
>
> Best
> Joseph
>
> ps : ignore previous partial answer, sorry for this. I've slammed my 
> fingers with a hammer so they don't do mistakes again in the future ;)
>
> On Wed, Oct 1, 2014 at 2:16 PM, Joseph Pachod <[email protected] 
> <javascript:>> wrote:
>
>> Hi Jonas
>>
>> Thanks a lot to take the time to answer such question, I really 
>> appreciate!
>>
>> I'm a bit surprised though: most of the books/papers you refer are 
>> "research level", meaning for building solutions. I was kind of 
>> thinking/hoping some solutions would already be built 
>>
>> On Tue, Sep 30, 2014 at 9:10 PM, Jonas Bonér <[email protected] 
>> <javascript:>> wrote:
>>
>>> Here is a list of some of the more recent nice books I’ve read on 
>>> distributed systems: 
>>>
>>>    - This is a nice one IMO. Brings in failure as a first class 
>>>    concept, makes it suitable for the real world: 
>>>    http://www.distributedprogramming.net/ 
>>>    - This one is interesting as well. More theoretical, but eye 
>>>    opening. Written by Gul Agha’s student. 
>>>    
>>> http://www.amazon.co.uk/Programming-Distributed-Computing-Systems-Foundational/dp/0262018985
>>>  
>>>    - I’m reading this one right now, too early to judge: 
>>>    
>>> http://www.amazon.com/Distributed-Computing-Through-Combinatorial-Topology/dp/0124045782
>>>  
>>>    - This one is the one with interesting algos, but that ignores 
>>>    failure (but most books do that actually): 
>>>    
>>> http://www.amazon.com/Distributed-Algorithms-Message-Passing-Systems-Michel/dp/3642381227/
>>>  
>>>    - This is a nice one on multicore programming (related): 
>>>    
>>> http://www.amazon.com/Art-Multiprocessor-Programming-Revised-Reprint/dp/0123973376
>>>  
>>>    - Joe Armstrong’s thesis, essential reading for building 
>>>    fault-tolerant systems: 
>>>    http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf 
>>>
>>> But I’ve learned most from reading papers. I can recommend all the 
>>> papers listed in the references section in my talk: 
>>> www.slideshare.net/jboner/the-road-to-akka-cluster-and-beyond
>>> ​
>>>
>>> On Tue, Sep 30, 2014 at 2:17 PM, Joseph Pachod <[email protected] 
>>> <javascript:>> wrote:
>>>
>>>> Hello
>>>>
>>>> Our small software shop has recently been bought and now we face the 
>>>> issue of building a distributed system, meaning by that moving from 
>>>> monolithic web based products to a "platform" with various optional 
>>>> modules.
>>>>
>>>> The main characteristics looked for are :
>>>> - seen as a web app by the users
>>>> - mostly deployed on premises
>>>> - mission critical software (health care - emergency services), so 
>>>> downtime and seamless upgrades (most of the time at least)
>>>> - if possible should allow for multiple languages/stack on the JVM and 
>>>> even beyond (.Net I'm looking at you !).
>>>>
>>>> Being a commuter and a big reader, I'm looking for the best resource(s) 
>>>> on the topic, any hints ?
>>>>
>>>> Thanks in advance
>>>>
>>>> Best
>>>> Joseph
>>>>
>>>> PS: I already tried scala/akka/eventsourced (now akka persistence), but 
>>>> there's quite a step going to a proper distributed systems from there... 
>>>>
>>>> -- 
>>>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>>>> >>>>>>>>>> Check the FAQ: 
>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>> >>>>>>>>>> Search the archives: 
>>>> https://groups.google.com/group/akka-user
>>>> --- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Akka User List" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected] <javascript:>.
>>>> To post to this group, send email to [email protected] 
>>>> <javascript:>.
>>>> Visit this group at http://groups.google.com/group/akka-user.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> -- 
>>> *Jonas Bonér*
>>> Home: jonasboner.com
>>> Twitter: @jboner <https://twitter.com/jboner>
>>> Public Key: keybase.io/jonas
>>>  
>>> -- 
>>> >>>>>>>>>> Read the docs: http://akka.io/docs/
>>> >>>>>>>>>> Check the FAQ: 
>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>> >>>>>>>>>> Search the archives: 
>>> https://groups.google.com/group/akka-user
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Akka User List" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected] <javascript:>.
>>> To post to this group, send email to [email protected] 
>>> <javascript:>.
>>> Visit this group at http://groups.google.com/group/akka-user.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to