Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Elixir 그리고 MSA
MSA?
http://www.slideshare.net/andrewdohyunjung/msa-43702981
http://www.slideshare.net/andrewdohyunjung/msa-43702981
http://www.slideshare.net/andrewdohyunjung/msa-43702981
Elixir 와 MSA가 무슨 연관이?
Erlang
Elixir
사실 MSA에 묻어가려고…
MSA 개발/운영 시에 있으면 좋
을꺼 같은것들(매우 주관적)
• 서비스들이 죽지 않았으면 좋겠다.
• 운영중에 패치가 편했으면 좋겠다.
• 클러스터링 가능 했으면 좋겠다.
• 서비스들간의 통신이 편했으면 좋겠다.
• 서비스들이 죽지 않았으면 좋겠다. Supervisor
• 운영중에 패치가 편했으면 좋겠다. Hot Code Swapping
• 클러스터링 가능 했으면 좋겠다. Cluster
• 서비스들간의 통신이 편했으면 좋겠다. ...
Erlang/Elixir
1986: 에릭슨사 개발
1998: 오픈소스화
2016: Erlang/OTP18.3
Erlang
• 함수형 언어.
• 불변 변수(Immutable variables)
• 강타입, 동적 타입 자료형 체계(strong, dynamic typing)
• 병행성(Concurrency) 모델중 Actor mod...
https://www.youtube.com/watch?v=B4rOG9Bc65Q
https://www.youtube.com/watch?v=B4rOG9Bc65Q
http://stackoverflow.com/questions/1636455/where-is-erlang-used-and-why/1637137#1637137
2012: José Valim 개발
2016: Elixir 1.2
Elixir
• Erlang의 특징을 계승.
• Elixir 컴파일러가 BEAM(Erlang VM)용 바이트코트로 컴파일.
• 도큐먼트 제공
• 툴 제공(ExUnit, iex, Mix)
• 페키지 관리 (Hex pack...
https://www.youtube.com/watch?v=lly-1UYmnFI
http://www.slideshare.net/gabriele.lana/the-magic-of-elixir
–Joe Armstrong
“Erlang was designed for writing concurrent programs that run
forever”
Concurrency model
Erlang/Elixir Actor model
Node.js
Single thread,
Event driven
Go CSP
Actor = Process + Data +
Code
http://www.slideshare.net/christophevg/actors-la-akka
Actor Actor Actor
Actor Actor Actor
data data
datadata
data
Input
Output
http://www.slideshare.net/eonblast/why-erlang-gdc-online-2012
http://www.slideshare.net/eonblast/why-erlang-gdc-online-2012
Lightweight process
ProcessMail box
Heap
Stack
Garbage Collector
Message passing
P2
Receiver
P1
Sender
Mail box Mail box
message
message
Message passing
P2Mail box
message
P2
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
Message passing
P2
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
Message passing
P2
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
Message passing
P2
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
Message passing
P2
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
P3
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
PN
메시지 수신
메시지 라우팅
메시지 처리
메시지 응답
…
– erlang.org
“OTP (Open Telecom Platform) is a large collection of
libraries for Erlang to do everything from compiling AS...
OTP Behaviours
• GenServer
• GenEvent
• GenFSM
• Supervisor
GenServer
Server
Client
Client
기본 프로세스 GenServer 프로세스
GenEvent
EventManage
r
Client Client Client
event
GenFSM
http://knewter.github.io/erlang_dc_workshop/deck/otp_with_elixir/finite_state_machines/slides/#/2
MSA 와 Elixir
• 서비스들이 죽지 않았으면 좋겠다. Supervisor
• 운영중에 패치가 편했으면 좋겠다. Hot Code Swapping
• 클러스터링 가능 했으면 좋겠다. Cluster
• 서비스들간의 통신이 편했으면 좋겠다. ...
Supervisor
Supervisor
ProcessProcess Process
Supervisor
ProcessProcess Process
Supervisor
ProcessProcess Process
Process
Supervisor
ProcessProcess Process
one_for_one
Supervisor
ProcessProcess Process
one_for_one
Supervisor
ProcessProcess Process
one_for_one
Process
Supervisor
ProcessProcess Process
one_for_all
Supervisor
ProcessProcess Process
one_for_all
Supervisor
ProcessProcess Process
one_for_all
Process Process Process
Supervisor
ProcessProcess Process
reset_for_all
Supervisor
ProcessProcess Process
reset_for_all
Supervisor
ProcessProcess Process
reset_for_all
Process Process
Supervisor
ProcessProcess Supervisor
ProcessProcess Process
Hot code swapping
Actor
Code Data
Process
Actor
Code Data
Process
New Code
Actor
Data
Process
New Code
Cluster
EndPoin
t
Paymen
t
Cart
Service
EndPoin
t
Paymen
t
Cart
Service
EndPoin
t
Paymen
t
Cart
Service
Proxy
Service
EndPoin
t
Paymen
t
Cart
특정 기능에만 부하가 집중된
다면
ServiceService
EndPoin
t
Paymen
t
Cart
EndPoin
t
Paymen
t
Cart
Proxy
Node#2Node#1
EndPoin
t
Paymen
t
Cart Cart
Cart
EndPoin
t
EndPoin
t
EndPoin
t …
Cart Cart
Paymen
t …
DMZEndpoint
Business
Client
Node
Node Node
Node
$ Node.connect(nodename)
Service/Node간 통신
SystemSystem
Node Node
Node Node
SystemSystem
SystemSystem
pid
사실 Thrift 씁니다..
Elixir에 관심이 생기셨다면..
http://elixir-lang.org
https://www.facebook.com/groups/elixir.korea/
감사합니다.
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발
Prochain SlideShare
Chargement dans…5
×

나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발

758 vues

Publié le

Elixir 그리고 MSA

https://www.youtube.com/watch?v=uGKg8gm4F58

Publié dans : Technologie
  • Soyez le premier à commenter

나프다 웨비너 1604: Elixir와 함수형 프로그래밍을 이용한 웹 개발

  1. 1. Elixir 그리고 MSA
  2. 2. MSA?
  3. 3. http://www.slideshare.net/andrewdohyunjung/msa-43702981
  4. 4. http://www.slideshare.net/andrewdohyunjung/msa-43702981
  5. 5. http://www.slideshare.net/andrewdohyunjung/msa-43702981
  6. 6. Elixir 와 MSA가 무슨 연관이?
  7. 7. Erlang Elixir
  8. 8. 사실 MSA에 묻어가려고…
  9. 9. MSA 개발/운영 시에 있으면 좋 을꺼 같은것들(매우 주관적)
  10. 10. • 서비스들이 죽지 않았으면 좋겠다. • 운영중에 패치가 편했으면 좋겠다. • 클러스터링 가능 했으면 좋겠다. • 서비스들간의 통신이 편했으면 좋겠다.
  11. 11. • 서비스들이 죽지 않았으면 좋겠다. Supervisor • 운영중에 패치가 편했으면 좋겠다. Hot Code Swapping • 클러스터링 가능 했으면 좋겠다. Cluster • 서비스들간의 통신이 편했으면 좋겠다. MessagePassing/RPC Erlang Elixir
  12. 12. Erlang/Elixir
  13. 13. 1986: 에릭슨사 개발 1998: 오픈소스화 2016: Erlang/OTP18.3
  14. 14. Erlang • 함수형 언어. • 불변 변수(Immutable variables) • 강타입, 동적 타입 자료형 체계(strong, dynamic typing) • 병행성(Concurrency) 모델중 Actor model.
  15. 15. https://www.youtube.com/watch?v=B4rOG9Bc65Q
  16. 16. https://www.youtube.com/watch?v=B4rOG9Bc65Q
  17. 17. http://stackoverflow.com/questions/1636455/where-is-erlang-used-and-why/1637137#1637137
  18. 18. 2012: José Valim 개발 2016: Elixir 1.2
  19. 19. Elixir • Erlang의 특징을 계승. • Elixir 컴파일러가 BEAM(Erlang VM)용 바이트코트로 컴파일. • 도큐먼트 제공 • 툴 제공(ExUnit, iex, Mix) • 페키지 관리 (Hex packages)
  20. 20. https://www.youtube.com/watch?v=lly-1UYmnFI
  21. 21. http://www.slideshare.net/gabriele.lana/the-magic-of-elixir
  22. 22. –Joe Armstrong “Erlang was designed for writing concurrent programs that run forever”
  23. 23. Concurrency model Erlang/Elixir Actor model Node.js Single thread, Event driven Go CSP
  24. 24. Actor = Process + Data + Code
  25. 25. http://www.slideshare.net/christophevg/actors-la-akka
  26. 26. Actor Actor Actor Actor Actor Actor data data datadata data Input Output
  27. 27. http://www.slideshare.net/eonblast/why-erlang-gdc-online-2012
  28. 28. http://www.slideshare.net/eonblast/why-erlang-gdc-online-2012
  29. 29. Lightweight process ProcessMail box Heap Stack Garbage Collector
  30. 30. Message passing P2 Receiver P1 Sender Mail box Mail box message message
  31. 31. Message passing P2Mail box message P2 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답
  32. 32. Message passing P2 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답
  33. 33. Message passing P2 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답
  34. 34. Message passing P2 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답
  35. 35. Message passing P2 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답 P3 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답 PN 메시지 수신 메시지 라우팅 메시지 처리 메시지 응답 …
  36. 36. – erlang.org “OTP (Open Telecom Platform) is a large collection of libraries for Erlang to do everything from compiling ASN.1 to providing a WWW server. Most projects using "Erlang" are actually using "Erlang/OTP", i.e. the language and the libraries. OTP is also open source.”
  37. 37. OTP Behaviours • GenServer • GenEvent • GenFSM • Supervisor
  38. 38. GenServer
  39. 39. Server Client Client
  40. 40. 기본 프로세스 GenServer 프로세스
  41. 41. GenEvent
  42. 42. EventManage r Client Client Client event
  43. 43. GenFSM
  44. 44. http://knewter.github.io/erlang_dc_workshop/deck/otp_with_elixir/finite_state_machines/slides/#/2
  45. 45. MSA 와 Elixir
  46. 46. • 서비스들이 죽지 않았으면 좋겠다. Supervisor • 운영중에 패치가 편했으면 좋겠다. Hot Code Swapping • 클러스터링 가능 했으면 좋겠다. Cluster • 서비스들간의 통신이 편했으면 좋겠다. MessagePassing/RPC Erlang Elixir
  47. 47. Supervisor
  48. 48. Supervisor ProcessProcess Process
  49. 49. Supervisor ProcessProcess Process
  50. 50. Supervisor ProcessProcess Process Process
  51. 51. Supervisor ProcessProcess Process one_for_one
  52. 52. Supervisor ProcessProcess Process one_for_one
  53. 53. Supervisor ProcessProcess Process one_for_one Process
  54. 54. Supervisor ProcessProcess Process one_for_all
  55. 55. Supervisor ProcessProcess Process one_for_all
  56. 56. Supervisor ProcessProcess Process one_for_all Process Process Process
  57. 57. Supervisor ProcessProcess Process reset_for_all
  58. 58. Supervisor ProcessProcess Process reset_for_all
  59. 59. Supervisor ProcessProcess Process reset_for_all Process Process
  60. 60. Supervisor ProcessProcess Supervisor ProcessProcess Process
  61. 61. Hot code swapping
  62. 62. Actor Code Data Process
  63. 63. Actor Code Data Process New Code
  64. 64. Actor Data Process New Code
  65. 65. Cluster
  66. 66. EndPoin t Paymen t Cart Service
  67. 67. EndPoin t Paymen t Cart Service EndPoin t Paymen t Cart Service Proxy
  68. 68. Service EndPoin t Paymen t Cart 특정 기능에만 부하가 집중된 다면
  69. 69. ServiceService EndPoin t Paymen t Cart EndPoin t Paymen t Cart Proxy
  70. 70. Node#2Node#1 EndPoin t Paymen t Cart Cart Cart
  71. 71. EndPoin t EndPoin t EndPoin t … Cart Cart Paymen t … DMZEndpoint Business Client
  72. 72. Node Node Node Node $ Node.connect(nodename)
  73. 73. Service/Node간 통신
  74. 74. SystemSystem Node Node Node Node
  75. 75. SystemSystem
  76. 76. SystemSystem pid
  77. 77. 사실 Thrift 씁니다..
  78. 78. Elixir에 관심이 생기셨다면..
  79. 79. http://elixir-lang.org
  80. 80. https://www.facebook.com/groups/elixir.korea/
  81. 81. 감사합니다.

×