Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

749 views

Published on

Elixir 그리고 MSA

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

Published in: Technology
  • Be the first to comment

나프다 웨비너 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. 감사합니다.

×