Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Running Laravel on Amazon ECS (2021)

Ernest Chiang
September 24, 2021

Running Laravel on Amazon ECS (2021)

This is the presentation deck of the talk given on 2021-09-23 at the meetup of AWSUG Taiwan. Thanks for the invitation of AWSUG Taiwan.

You can find the meetup video recording in Chinese at https://youtu.be/ge3O_4KLIzg?t=3473

`dwchiang/nginx-php-fpm` Docker image project for PHP developers:
https://hub.docker.com/r/dwchiang/nginx-php-fpm

Ernest's study notes on Amazon ECS:
https://www.ernestchiang.com/en/notes/aws/ecs/

Ernest's blog:
https://www.ernestchiang.com/

Ernest Chiang

September 24, 2021
Tweet

More Decks by Ernest Chiang

Other Decks in Technology

Transcript

  1. Ernest Chiang, 2021
    拆解整合
    將 Laravel 運⾏在 Amazon ECS
    Running Laravel on Amazon ECS

    View Slide

  2. Shared Notes
    • https://hackmd.io/@dwchiang/
    laravel-on-amazon-ecs-2021-
    awsug

    • 短網址:

    https://bit.ly/ecs2021awsug

    • 問與答 Q&A
    共筆筆記

    View Slide

  3. 拆.解.整.合.的.旅.⼈
    • PAFERS

    Product & Technology Integration

    • AWS

    Community Hero

    • ex-TSMC

    Process Integration Engineer
    Ernest Chiang

    View Slide

  4. COSCUP | https://bit.ly/yt-pkb
    近期分享

    View Slide

  5. Outline
    ⼤綱
    • 拆解整合;思路介紹

    • Laravel

    • Virtualization; Containerization; Orchestration

    • Amazon ECS

    • Laravel on Amazon ECS

    • Demo

    View Slide

  6. 資訊爆炸?無法消化?
    www.ErnestChiang.com
    思路

    View Slide

  7. 藉由拆解、定義,釐清思緒。
    1

    View Slide

  8. 藉由拆解、定義,釐清思緒。
    再⽤整合、組合,實現產出。
    1

    View Slide

  9. 藉由拆解、定義,釐清思緒。
    再⽤整合、組合,實現產出。
    1

    View Slide

  10. View Slide

  11. 先⼿動,再⾃動。
    2

    View Slide

  12. 就。很。動。
    2

    View Slide

  13. 1. 草稿初版流程。
    2

    View Slide

  14. 1. 草稿初版流程。
    2. 驗證流程產出。
    2

    View Slide

  15. 1. 草稿初版流程。
    2. 驗證流程產出。
    3. 找⼯具⾃動化。
    2

    View Slide

  16. 流程步驟
    2

    View Slide

  17. S. + V. + O.
    流程步驟
    2

    View Slide

  18. input/trigger (S.) 👉 process (V.) 👉 output (O.)
    流程步驟
    2

    View Slide

  19. input/trigger (S.) 👉 process (V.) 👉 output (O.)
    流程步驟
    2

    View Slide

  20. input/trigger (S.) 👉 process (V.) 👉 output (O.)
    ⾃動化
    2

    View Slide

  21. 先⼿動,再⾃動。
    2

    View Slide

  22. View Slide

  23. Class vs. Instance
    3

    View Slide

  24. 3

    View Slide

  25. 3

    View Slide

  26. 3

    View Slide

  27. 3

    View Slide

  28. 3

    View Slide

  29. Class vs. Instance
    3

    View Slide

  30. img src: https://commons.wikimedia.org/wiki/File:Cair_Pavarel.jpg
    Laravel
    www.ErnestChiang.com
    issues?

    View Slide

  31. That is Cair Paravel, the castle of the four thrones.

    View Slide

  32. 從 本機 開始

    View Slide

  33. 先⼿動,再⾃動。

    View Slide

  34. 我 👉 開發 👉 程式源碼
    www.ErnestChiang.com

    View Slide

  35. 我 👉 安裝 👉 執⾏環境
    www.ErnestChiang.com

    View Slide

  36. 我 👉 安裝 👉 作業系統
    www.ErnestChiang.com

    View Slide

  37. 我 👉 安裝 👉 ⼀台電腦
    www.ErnestChiang.com

    View Slide

  38. 我 👉 安裝 👉 ⼀台電腦
    我 👉 安裝 👉 作業系統
    我 👉 安裝 👉 執⾏環境
    我 👉 開發 👉 程式源碼
    www.ErnestChiang.com

    View Slide

  39. 我 👉 安裝 👉 ⼀台電腦 👈 別⼈做的
    我 👉 安裝 👉 作業系統 👈 別⼈做的
    我 👉 安裝 👉 執⾏環境 👈 別⼈做的
    我 👉 開發 👉 程式源碼 👈 ⾃⼰做的
    www.ErnestChiang.com

    View Slide

  40. 我 👉 安裝 👉 ⼀台電腦
    我 👉 安裝 👉 作業系統
    我 👉 安裝 👉 執⾏環境
    我 👉 開發 👉 程式源碼
    www.ErnestChiang.com

    View Slide

  41. 在我的電腦上,可以正常執⾏
    www.ErnestChiang.com

    View Slide

  42. 在同事電腦上,就。很。炸。
    www.ErnestChiang.com

    View Slide

  43. 就別提部署到量產主機了?!

    View Slide

  44. www.ErnestChiang.com

    View Slide

  45. www.ErnestChiang.com

    View Slide

  46. 所以?將 PHP Code 打包?

    View Slide

  47. 還是 加上 執⾏環境 ⼀起打包?

    View Slide

  48. 還是 外加 作業系統 ⼀起打包?

    View Slide

  49. 好,⾄少我們知道這台電腦不能打包。

    View Slide

  50. 就。不。包。

    View Slide

  51. solution?
    Virtualization
    www.ErnestChiang.com

    View Slide

  52. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  53. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  54. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  55. Creating a virtual version of something;

    View Slide

  56. Creating a virtual version of something;

    View Slide

  57. A hypervisor (or virtual machine monitor, VMM,
    virtualizer) is computer software, firmware or
    hardware that creates and runs virtual machines.

    View Slide

  58. www.ErnestChiang.com

    View Slide

  59. www.ErnestChiang.com

    View Slide

  60. img src: https://unsplash.com/photos/CJdZ800-Fbs
    part of virtualization
    Containerization
    www.ErnestChiang.com

    View Slide

  61. Operating-system-level virtualization, also known
    as containerization, refers to an operating system
    feature in which the kernel allows the existence
    of multiple isolated user-space instances.
    Such instances, called containers, partitions,
    virtual environments (VEs) or jails (FreeBSD jail or
    chroot jail), may look like real computers from the
    point of view of programs running in them.

    View Slide

  62. Operating-system-level virtualization, also known
    as containerization, refers to an operating system
    feature in which the kernel allows the existence
    of multiple isolated user-space instances.
    Such instances, called containers, partitions,
    virtual environments (VEs) or jails (FreeBSD jail or
    chroot jail), may look like real computers from the
    point of view of programs running in them.

    View Slide

  63. Operating-system-level virtualization, also known
    as containerization, refers to an operating system
    feature in which the kernel allows the existence
    of multiple isolated user-space instances.
    Such instances, called containers, partitions,
    virtual environments (VEs) or jails (FreeBSD jail or
    chroot jail), may look like real computers from the
    point of view of programs running in them.

    View Slide

  64. Operating-system-level virtualization, also known
    as containerization, refers to an operating system
    feature in which the kernel allows the existence
    of multiple isolated user-space instances.
    Such instances, called containers, partitions,
    virtual environments (VEs) or jails (FreeBSD jail or
    chroot jail), may look like real computers from the
    point of view of programs running in them.

    View Slide

  65. www.ErnestChiang.com

    View Slide

  66. www.ErnestChiang.com

    View Slide

  67. www.ErnestChiang.com

    View Slide

  68. www.ErnestChiang.com

    View Slide

  69. www.ErnestChiang.com

    View Slide

  70. www.ErnestChiang.com

    View Slide

  71. www.ErnestChiang.com

    View Slide

  72. www.ErnestChiang.com

    View Slide

  73. > php artisan migrate
    www.ErnestChiang.com

    View Slide

  74. www.ErnestChiang.com

    View Slide

  75. www.ErnestChiang.com

    View Slide

  76. www.ErnestChiang.com

    View Slide

  77. www.ErnestChiang.com

    View Slide

  78. www.ErnestChiang.com

    View Slide

  79. www.ErnestChiang.com

    View Slide

  80. www.ErnestChiang.com

    View Slide

  81. www.ErnestChiang.com

    View Slide

  82. www.ErnestChiang.com

    View Slide

  83. www.ErnestChiang.com

    View Slide

  84. View Slide

  85. www.ErnestChiang.com

    View Slide

  86. www.ErnestChiang.com

    View Slide

  87. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  88. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  89. Virtualization
    虛擬化
    • Virtual

    • Virtual machine (VM)

    • Hypervisor

    • Guest OS

    • Virtual machine monitor (VMM)

    • KVM

    • Hyper-V

    • Xen

    • VirtualBox

    • QEMU

    • Docker

    • Amazon ECS

    • Kubernetes

    • OpenShift

    View Slide

  90. Virtualization


    ├── Hardware-Hypervisors


    │ ├── Type 1-Native


    │ │ └── KVM, Hyper-V, QNX, VMware vSphere, Xen


    │ └── Type 2-Hosted


    │ └── bhyve, Parallerls, QEMU, VirtualBox, VMware Fusion


    └── OperatingSystem


    ├── 1-OS Containers


    │ └── FreeBSD jail, LXC, OpenVZ, Virtuozzo


    ├── 2-Application Containers


    │ └── Docker, imctfy, rkt


    └── Orchestration


    └── Amazon ECS, Kubernetes, OpenShift
    www.ErnestChiang.com

    View Slide

  91. Virtualization


    ├── Hardware-Hypervisors


    │ ├── Type 1-Native


    │ │ └── KVM, Hyper-V, QNX, VMware vSphere, Xen


    │ └── Type 2-Hosted


    │ └── bhyve, Parallerls, QEMU, VirtualBox, VMware Fusion


    └── OperatingSystem


    ├── 1-OS Containers


    │ └── FreeBSD jail, LXC, OpenVZ, Virtuozzo


    ├── 2-Application Containers


    │ └── Docker, imctfy, rkt


    └── Orchestration


    └── Amazon ECS, Kubernetes, OpenShift
    www.ErnestChiang.com

    View Slide

  92. Virtualization


    ├── Hardware-Hypervisors


    │ ├── Type 1-Native


    │ │ └── KVM, Hyper-V, QNX, VMware vSphere, Xen


    │ └── Type 2-Hosted


    │ └── bhyve, Parallerls, QEMU, VirtualBox, VMware Fusion


    └── OperatingSystem


    ├── 1-OS Containers


    │ └── FreeBSD jail, LXC, OpenVZ, Virtuozzo


    ├── 2-Application Containers


    │ └── Docker, imctfy, rkt


    └── Orchestration


    └── Amazon ECS, Kubernetes, OpenShift
    www.ErnestChiang.com

    View Slide

  93. Virtualization


    ├── Hardware-Hypervisors


    │ ├── Type 1-Native


    │ │ └── KVM, Hyper-V, QNX, VMware vSphere, Xen


    │ └── Type 2-Hosted


    │ └── bhyve, Parallerls, QEMU, VirtualBox, VMware Fusion


    └── OperatingSystem


    ├── 1-OS Containers


    │ └── FreeBSD jail, LXC, OpenVZ, Virtuozzo


    ├── 2-Application Containers


    │ └── Docker, imctfy, rkt


    └── Orchestration


    └── Amazon ECS, Kubernetes, OpenShift
    www.ErnestChiang.com

    View Slide

  94. img src: https://unsplash.com/photos/aEnH4hJ_Mrs
    arrangement
    Orchestration
    www.ErnestChiang.com

    View Slide

  95. View Slide

  96. www.ErnestChiang.com

    View Slide

  97. www.ErnestChiang.com

    View Slide

  98. 2
    1
    1 2

    View Slide

  99. www.ErnestChiang.com

    View Slide

  100. 2
    1
    1 2

    View Slide

  101. View Slide

  102. 1 2
    www.ErnestChiang.com

    View Slide

  103. img src: Photo by sergio souza on Unsplash
    orchestration
    Amazon ECS
    www.ErnestChiang.com

    View Slide

  104. www.ErnestChiang.com

    View Slide

  105. 1 2

    View Slide

  106. 1 2
    1 2

    View Slide

  107. View Slide

  108. www.ErnestChiang.com

    View Slide

  109. www.ErnestChiang.com

    View Slide

  110. www.ErnestChiang.com

    View Slide

  111. www.ErnestChiang.com

    View Slide

  112. www.ErnestChiang.com

    View Slide

  113. www.ErnestChiang.com

    View Slide

  114. View Slide

  115. www.ErnestChiang.com

    View Slide

  116. www.ErnestChiang.com

    View Slide

  117. img src: Photo by sergio souza on Unsplash
    on Amazon ECS
    Running Laravel
    www.ErnestChiang.com

    View Slide

  118. www.ErnestChiang.com

    View Slide

  119. www.ErnestChiang.com

    View Slide

  120. www.ErnestChiang.com

    View Slide

  121. View Slide

  122. www.ErnestChiang.com
    ECR

    View Slide

  123. S. (I) V. O. (image)
    ECR
    www.ErnestChiang.com

    View Slide

  124. S. (ECS)
    V.
    O.
    ECR
    www.ErnestChiang.com

    View Slide

  125. S. (CI)
    V.
    O.
    CI
    www.ErnestChiang.com

    View Slide

  126. www.ErnestChiang.com

    View Slide

  127. www.ErnestChiang.com Search "ernest laravel ecs workshop" to download.

    View Slide

  128. www.ErnestChiang.com Search "ernest laravel ecs workshop" to download.

    View Slide

  129. Demo
    www.ErnestChiang.com
    never live demo!

    View Slide

  130. 參考資料
    www.ErnestChiang.com
    Reference

    View Slide

  131. 參考資料
    Virtualization
    • Wikipedia - Virtualization

    • https://en.wikipedia.org/wiki/Virtualization

    • Playing With Firecracker VMM at COSCUP 2020

    • https://www.ernestchiang.com/en/posts/2020/playing-with-
    fi
    recracker/

    • Firecracker

    • https://
    fi
    recracker-microvm.github.io/

    View Slide

  132. 參考資料
    Virtualization
    • Linux 核⼼設計_發展動態回顧

    • https://www.youtube.com/watch?v=-2Pn4B8S1EM

    • Embedded Virtualization applied in Mobile Devices

    • https://www.slideshare.net/jserv/mobile-virtualization

    View Slide

  133. 參考資料
    Containerization
    • Wikipedia - OS-level virtualization

    • https://en.wikipedia.org/wiki/OS-level_virtualization

    View Slide

  134. 參考資料
    Orchestration
    • Docker image of nginx + php-fpm (amd64/arm64)

    • https://hub.docker.com/r/dwchiang/nginx-php-fpm

    View Slide

  135. 參考資料
    Amazon ECS
    • My study notes

    • https://www.ernestchiang.com/en/notes/aws/ecs/

    • Nathan Peck's Awesome List

    • https://github.com/nathanpeck/awesome-ecs

    • 技術選型: Amazon ECS Launch Types: EC2 vs. Fargate

    • https://www.ernestchiang.com/zh/posts/2020/technology-selection-amazon-ecs-launch-
    type/

    • 5 Steps: Using Amazon ECS Exec to pass through Fargate/ECS into containers

    • https://www.ernestchiang.com/en/posts/2021/using-amazon-ecs-exec/

    View Slide

  136. 參考資料
    Running Laravel on Amazon ECS
    • Workshops: Running Laravel on AWS ECS (using CDK)

    • https://github.com/dwchiang/laravel-on-aws-ecs-workshops

    • CDK Construct Hub

    • https://constructs.dev/

    • CDK patterns for modern application with serverless containers on AWS

    • https://github.com/aws-samples/serverless-container-constructs

    • My study notes on CDK

    • https://www.ernestchiang.com/en/notes/aws/cdk/

    View Slide

  137. Virtualization software

    View Slide

  138. Search "ernest aws ecs" to download.

    View Slide

  139. Ernest's Blog
    • https://www.ernestchiang.com
    拆 / 解 / 整 / 合

    View Slide

  140. Ernest's Newsletter
    • https://bit.ly/3B2ksae
    拆 / 解 / 整 / 合 電⼦報

    View Slide

  141. 問與答
    www.ErnestChiang.com
    更多對話

    View Slide

  142. Shared Notes
    • https://hackmd.io/@dwchiang/
    laravel-on-amazon-ecs-2021-
    awsug

    • 短網址:

    https://bit.ly/ecs2021awsug

    • 問與答 Q&A
    共筆筆記

    View Slide