high availability at heroku
play

High ! Availability ! at ! Heroku Mark ! McGranaghan - PowerPoint PPT Presentation

High ! Availability ! at ! Heroku Mark ! McGranaghan


  1. High ! Availability ! at ! Heroku Mark ! McGranaghan

  2. ���

  3. ������� ������� ����

  4. ������� ������� ������� ������� ���� ���� ������� ������� ������� ������� ���� ����

  5. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  6. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  7. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  8. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  9. Scale ! & ! Scope

  10. O(1,000) ! instances O(1,000,000) ! apps

  11. Success ! & ! Failure

  12. Architecture Execution

  13. Architecture Execution

  14. ������� ������� ����

  15. Platform-Enabled HA ! Routing

  16. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  17. Crashes ! & Supervision

  18. Crashes ! as ! the ! only ! code ! path

  19. Crashes ! as ! a ! hot ! code ! path

  20. Error ! Kernel

  21. Layered ! design

  22. Message ! passing...

  23. {slug: “https://aws...”, cmd: “java ...”, env: {“JAVA_OPTS”: ..., “DATABASE_URL”: ..., “SESSION_SECRET”: ...}}

  24. ...of ! narrow, ! versioned ! values

  25. {slug: “https://s3...”, cmd: “java -cp ...”, env: {“JAVA_OPTS”: ..., “DATABASE_URL”: ..., “SESSION_SECRET”: ...}, flag: “extra_cpu”}

  26. No ! Stopping ! the ! World

  27. Load ! balancing Supervision Crash-only Error ! kernels Layered ! design Message-passing

  28. Erlang Designed ! for granular ! failure

  29. Distributed ! Systems Defined ! as granular ! failure

  30. Brokered ! Queueing

  31. Publish ! one ! / Subscribe ! many

  32. Distributed ! call ! graphs

  33. Read ! call ! graph Partial ! failure

  34. Write ! call ! graph de-synchronizing

  35. Architecture Execution

  36. Architecture Execution

  37. “...we ! deployed ! a ! code ! change... ...introduced ! a...problem... ...visible ! under ! unusual...conditions... ...engineers ! noticed ! a ! deviation... ...began ! to ! escalate... ...system...entered ! into ! a ! feedback ! loop... ...engineers...deactivated ! the ! feedback...

  38. Evolving Socio-Technical ! Systems

  39. ������� ������� ����

  40. ��� ��� ��� ��� ��� ��� ��� ��� ������� ��� ��������� ������� ������� ����

  41. Availability ! >> ! Architecture

  42. Failed ! deploys Bad ! visibility Cascading ! feedback

  43. Evolving Socio-Technical ! Systems

  44. Failed ! deploys Bad ! visibility Cascading ! feedback

  45. Deploy ! tooling Visibility ! services Feedback ! controls

  46. bin/ship

  47. bin/ship \ --component api \ --version v408

  48. Incremental ! deploys

  49. ��� ��� ���

  50. ��� ��� ���

  51. Incremental ! rollouts

  52. prep_launch - launch_without_lxc + launch-with_lxc monitor_launch

  53. if flag_on?(“lxc”) launch_with_lxc else launch_without_lxc

  54. app.flag_on(“lxc”) app.flag_off(“lxc”)

  55. ��� ���� ���

  56. ��� ��� ��� ��� ���� ���

  57. Real-time ! visibility

  58. Service-level ! assertions

  59. assert(index > 0)

  60. assert(index > 0) objects[index]

  61. assert(p99_latency < 50)

  62. assert(p99_latency < 50)

  63. assert(active_cons > 10)

  64. assert(active_cons > 10)

  65. Flow ! control & ! Backpressure

Recommend


More recommend