Distibuted-Erlang practical case studies / examples

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Distibuted-Erlang practical case studies / examples

I Gusti Ngurah Oka Prinarjaya
Hi,

I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 

But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.

Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you



_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Distibuted-Erlang practical case studies / examples

I Gusti Ngurah Oka Prinarjaya
I need more concrete examples  / cases please.

Thank you 


Pada tanggal Min, 12 Mei 2019 pukul 21.57 T Ty <[hidden email]> menulis:
SOAP/REST is great if you have to interface with non-Erlang systems. For other Erlang systems I prefer using direct process to process message sending instead of rpc:call although some people do favor rpc:call. Bit of personal preference and background.

As to why or case study using distributed system just look at microservices. Anything that would fit into microservices would map one-to-one into Erlang.

On Sun, May 12, 2019 at 3:45 PM I Gusti Ngurah Oka Prinarjaya <[hidden email]> wrote:
Hi,

I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 

But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.

Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Distibuted-Erlang practical case studies / examples

Lloyd R. Prentice-2
Wikipedia gives these reasons for distribution of data:

Cloud storage is:[6]

  • Made up of many distributed resources, but still acts as one, either in a federated[8] or a cooperative storage cloudarchitecture
  • Highly fault tolerant through redundancy and distribution of data
  • Highly durable through the creation of versioned copies
  • Typically eventually consistent with regard to data replicas[9]


Distributed systems are also used to process “big data.” Look here:

Survey of Parallel Processing on Big Data

See this to see how a Erlang fits into the picture:

Evaluating Scalable Distributed Erlang for Scalability and Reliability

Leofs is an interesting open source project that is striving to push distribution across global data centers:


You can study source here:


Best wishes,

LRP

Sent from my iPad

On May 12, 2019, at 11:54 AM, I Gusti Ngurah Oka Prinarjaya <[hidden email]> wrote:

I need more concrete examples  / cases please.

Thank you 


Pada tanggal Min, 12 Mei 2019 pukul 21.57 T Ty <[hidden email]> menulis:
SOAP/REST is great if you have to interface with non-Erlang systems. For other Erlang systems I prefer using direct process to process message sending instead of rpc:call although some people do favor rpc:call. Bit of personal preference and background.

As to why or case study using distributed system just look at microservices. Anything that would fit into microservices would map one-to-one into Erlang.

On Sun, May 12, 2019 at 3:45 PM I Gusti Ngurah Oka Prinarjaya <[hidden email]> wrote:
Hi,

I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 

But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.

Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Distibuted-Erlang practical case studies / examples

Attila Rajmund Nohl
In reply to this post by I Gusti Ngurah Oka Prinarjaya
Hello!

In the original usecase of Erlang (the AXD) the Erlang nodes were
running on "cards" in different slots in the same chassis. The
distribution was used for example to achieve high availability, so in
the unlikely event that a node went down, the state was duplicated on
the stand-by node. This was implemented probably before HTTP REST was
invented at all. Don't forget, the reason why HTTP REST APIs exists in
the first place is that today's internet is not an "everybody
connected to everybody" network, but a bunch of (fire)walled "gardens"
connected to each other where the firewalls don't let anything pass
through, but HTTP. So if you control the network between your nodes,
you can use Erlang distribution, if you don't, you probably have no
other choice than to implement something over HTTP.

I Gusti Ngurah Oka Prinarjaya <[hidden email]> ezt írta
(időpont: 2019. máj. 12., V, 16:45):

>
> Hi,
>
> I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon .
>
> But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.
>
> Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
> Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
> which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ?
>
> Thank you
>
>
> _______________________________________________
> erlang-questions mailing list
> [hidden email]
> http://erlang.org/mailman/listinfo/erlang-questions
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Distibuted-Erlang practical case studies / examples

Oliver Korpilla
In reply to this post by I Gusti Ngurah Oka Prinarjaya
Hello,

we use distributed BEAM nodes connected by the Erlang Distribution Protocol in several applications at my workplace.

One application had one node handling all the central functions while the handling of users (potentially 10,000) was isolated into another node. If we needed the ability to handle more users than the current amount of connected nodes could handle, we connected more nodes. We used both message passing and distributed Mnesia in this application.

We're also building a load generator. It will run through messaging scenarios useful in a Telco application, trying to fill as many parallel queues in the system under test as possible. Again, the choice is to run them on distributed BEAM nodes. The communication between nodes is based mostly on message passing and synchronous gen_server calls where needed. (Though in this application, once everything is set up, no more messages will be passed between nodes and the configured processes will just fire away at their network interfaces according to pre-configured scenarios.)

We basically always opt to add more BEAM nodes when we want to utilize more cores distributed over more machines within the same network.

The main advantage of BEAM nodes I see in my work is that where something runs can be very flexible when needed. We used :gproc and now :syn to benefit from that flexibility, freeing us from the need to know where something is run. For example:

I had to design an application without knowing whether the underlying system would allow us to start BEAM with multi-core enabled or if each BEAM node would be pinned to just one core. (It was pretty clear that one core would not cut it for our requirements.) I opted to implement it as separate communicating applications that can be deployed into multiple BEAM nodes if needed. In the end, this wasn't necessary, so we deployed all parts into the same BEAM node. All we needed to change was the release bundling of the software but not the software itself.

When we learned that we need to scale that application, this initial design decision in turn enabled us to do so. Spreading things out is easy with BEAM but one has to consider the performance implications. Most communication should happen within a node, for example.

So, these were my use cases.

Cheers,
Oliver
 

Gesendet: Sonntag, 12. Mai 2019 um 16:45 Uhr
Von: "I Gusti Ngurah Oka Prinarjaya" <[hidden email]>
An: Erlang <[hidden email]>
Betreff: [erlang-questions] Distibuted-Erlang practical case studies / examples

Hi,
 
I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 
 
But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.
 
Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you
 
 _______________________________________________ erlang-questions mailing list [hidden email] http://erlang.org/mailman/listinfo/erlang-questions[http://erlang.org/mailman/listinfo/erlang-questions]
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|

Re: Distibuted-Erlang practical case studies / examples

I Gusti Ngurah Oka Prinarjaya
Thank you everyone :) 


Pada tanggal Sen, 13 Mei 2019 pukul 15.22 Oliver Korpilla <[hidden email]> menulis:
Hello,

we use distributed BEAM nodes connected by the Erlang Distribution Protocol in several applications at my workplace.

One application had one node handling all the central functions while the handling of users (potentially 10,000) was isolated into another node. If we needed the ability to handle more users than the current amount of connected nodes could handle, we connected more nodes. We used both message passing and distributed Mnesia in this application.

We're also building a load generator. It will run through messaging scenarios useful in a Telco application, trying to fill as many parallel queues in the system under test as possible. Again, the choice is to run them on distributed BEAM nodes. The communication between nodes is based mostly on message passing and synchronous gen_server calls where needed. (Though in this application, once everything is set up, no more messages will be passed between nodes and the configured processes will just fire away at their network interfaces according to pre-configured scenarios.)

We basically always opt to add more BEAM nodes when we want to utilize more cores distributed over more machines within the same network.

The main advantage of BEAM nodes I see in my work is that where something runs can be very flexible when needed. We used :gproc and now :syn to benefit from that flexibility, freeing us from the need to know where something is run. For example:

I had to design an application without knowing whether the underlying system would allow us to start BEAM with multi-core enabled or if each BEAM node would be pinned to just one core. (It was pretty clear that one core would not cut it for our requirements.) I opted to implement it as separate communicating applications that can be deployed into multiple BEAM nodes if needed. In the end, this wasn't necessary, so we deployed all parts into the same BEAM node. All we needed to change was the release bundling of the software but not the software itself.

When we learned that we need to scale that application, this initial design decision in turn enabled us to do so. Spreading things out is easy with BEAM but one has to consider the performance implications. Most communication should happen within a node, for example.

So, these were my use cases.

Cheers,
Oliver
 

Gesendet: Sonntag, 12. Mai 2019 um 16:45 Uhr
Von: "I Gusti Ngurah Oka Prinarjaya" <[hidden email]>
An: Erlang <[hidden email]>
Betreff: [erlang-questions] Distibuted-Erlang practical case studies / examples

Hi,
 
I just learn about how to ping a remote erlang node,  call erlang program in a remote erlang node by following this chapter https://learnyousomeerlang.com/distribunomicon . 
 
But, i can't imagine what kind of simple solution that i can build by utilizing Erlang's distributed behavior / feature / ability.
 
Ok, first, i need some simple case studies utilizingg distributed behavior / ability from erlang.
Second, Why do we utilizing distributed behavior / ability of erlang? Or in other words,
which is better? utilizing rpc:call() or call other service in other remote node just through HTTP (REST maybe) ? 

Thank you
 
 _______________________________________________ erlang-questions mailing list [hidden email] http://erlang.org/mailman/listinfo/erlang-questions[http://erlang.org/mailman/listinfo/erlang-questions]

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions