24
10분안에 훑어보는 Elixir (매우 간단한 Fault-tolerance server) 박창욱 ([email protected])

Ten minutes elixir (매우 간단한 Fault-tolerance server)

Embed Size (px)

Citation preview

Page 1: Ten minutes elixir (매우 간단한 Fault-tolerance server)

10분안에 훑어보는 Elixir (매우 간단한 Fault-tolerance server)

박창욱 ([email protected])

Page 2: Ten minutes elixir (매우 간단한 Fault-tolerance server)
Page 3: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Elixir? Erlang?

http://www.slideshare.net/YuriLeikind/elixir-study-group-kickoff-meetup?qid=e98d1040-0cd1-4e3a-9d33-ffdb0e1d180b&v=default&b=&from_search=41

Page 4: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Actor Concurrency Model

http://benjamintan.io/blog/2013/06/25/elixir-for-the-lazy-impatient-and-busy-part-2-processes-101/

Page 5: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Elixir• Elixir is a dynamic, functional language designed for

building scalable and maintainable applications.

• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.

• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]

Page 6: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Elixir• Elixir is a dynamic, functional language designed for

building scalable and maintainable applications.

• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.

• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]

Page 7: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Elixir• Elixir is a dynamic, functional language designed for

building scalable and maintainable applications.

• Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.

• To learn more about Elixir, check our getting started guide. Or keep reading to get an overview of the platform, language and tools. - [www.elixir-lang.org]

Page 8: Ten minutes elixir (매우 간단한 Fault-tolerance server)

라이브 코딩

Page 9: Ten minutes elixir (매우 간단한 Fault-tolerance server)

프로젝트 생성

$ mix new kv --module KV --no-brunch

- config - config.exs

- lib - kv.ex

- test - kv_test.exs - test_helper.exs

- mix.exs

Page 10: Ten minutes elixir (매우 간단한 Fault-tolerance server)

[KV_01] 간단한 Key, Value 저장 서버

https://github.com/haruio/ten_minutes_elixir/tree/master/kv_01

Page 11: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer

KV.Storeget(key) set(key, val)

{key, value}

{key, value}

{key, value}

Page 12: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer

KV.Storeget(key) set(key, val)

del(key)

{key, value}

{key, value}

{key, value}

Page 13: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer

KV.Storeget(key) set(key, val)

del(key)

{key, value}

{key, value}

{key, value}

Page 14: Ten minutes elixir (매우 간단한 Fault-tolerance server)

[KV_02] 다시 살아나는 간단한 Key, Value 저장 서버

https://github.com/haruio/ten_minutes_elixir/tree/master/kv_02

Page 15: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor

KV.Store Supervisor

KV.Store

get(key) set(key, val) {key, value}

{key, value}

{key, value}

Page 16: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor

KV.Store Supervisor

KV.Storedel(key)

{key, value}

{key, value}

{key, value}

Page 17: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor

KV.Store Supervisor

KV.Storedel(key)

{key, value}

{key, value}

{key, value}

Page 18: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor

KV.Store Supervisor

KV.StoreKV.Store

Page 19: Ten minutes elixir (매우 간단한 Fault-tolerance server)

[KV_03] 상태를 유지하는 다시 살아나는 간단한 Key, Value 저장 서버

https://github.com/haruio/ten_minutes_elixir/tree/master/kv_03

Page 20: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor + Agent

KV.Store Supervisor

KV.StoreKV.Store Stash

get(key) set(key, val)

get(key) set(key, val) {key, value}

{key, value}

{key, value}

Page 21: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor + Agent

KV.Store Supervisor

KV.StoreKV.Store Stash

{key, value}

{key, value}

{key, value}

del(key)

Page 22: Ten minutes elixir (매우 간단한 Fault-tolerance server)

GenServer + Supervisor + Agent

KV.Store Supervisor

KV.StoreKV.Store Stash

{key, value}

{key, value}

{key, value}

del(key)

Page 23: Ten minutes elixir (매우 간단한 Fault-tolerance server)

KV.Store Supervisor

KV.StoreKV.Store Stash

{key, value}

{key, value}

{key, value}

del(key)KV.Store

GenServer + Supervisor + Agent

Page 24: Ten minutes elixir (매우 간단한 Fault-tolerance server)

Resources• Tutorials

• http://elixir-lang.org/

• Books

• Programming Elixir: https://pragprog.com/book/elixir/programming-elixir

• Slack

• https://elixir-lang.slack.com/

• Facebook

• https://www.facebook.com/groups/elixir.korea/

• https://www.facebook.com/groups/elixir.lang/