iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0

前言

這個我主要以後端的面向來看這件事,但是作為溝通的主對象以及之前的一些 infra 經驗,所以前端也是會講到一點 (其實是因為 APP 部屬非我專長,不然我連 APP 都講,上架上起來!)

前端

  • SSR
JSP 時代,如果你的前後端交織夠密切 (這不是稱讚,淚)。其實前端工程師在開發時原始碼是要跟後端混在一起,塞在原始碼的某一個地方,同時還有路徑要處理的問題,那個時候幾乎都是 JSP 也要會一點,然後就跟後端混在一起了,所以也有人稱自己全端。但總之平心而論 JSP 能做的事真是超乎想像,有些特殊情境用它真的頂呱呱。
  • CSR and CDN
直接把靜態檔案放在 HTTP Server 的路徑,曾經的霸主 Apache HTTP 到今天人人愛用的 NGINX 都屬於這款,不過這類伺服器其實還不只這些功能,而且 NGINX 作為反向代理伺服器擋在前面還可以做最基本的負載平衡。再來就是 CDN (Content Delivery Network),內容我們篇幅有限不細講,但總之你把靜態檔部屬到這上面,簡直是好處多多而且可以頭好壯壯呢 (小聲說還是有小麻煩的,例如 Cache)

CDN WIKI

  • SSR
參考昨天,我們那個 Server Side Render 是前端自己搞一個 NodeJS Server 開起來,所以這個部屬的角度就會從前端變後端,無論你是要自己開一個 instance 部屬或是要弄成容器,我建議直接可以參考後面的篇幅。

後端

  • .jar or .war
無論專案打包最後的產物是 .jar 還是 .war,我們的 VM 只要有 JRE 都能把專案跑起來,更深一點可以在前面擋一個 Reverse Proxy Server 實作路由的控制與負載平衡,作為最基本的架構我認為他並沒有過時的問題,反而是一切的起點。
  • PAAS, IAAS with SAAS (AWS EC2, AWS Elastic Beanstalk, Heroku, GCP GCE, GCP GAE, ...)
雲端一開始的兩種主流服務,第一種是 PAAS (Platform as a Service),簡單的解說就是有人幫你管理部屬環境,你只要奉上你的打包成果,例如 .war。其他網路、設定什麼的它會幫你處理掉,簡簡單單開開心心。第二種是 Infrastructure as a Service,給你一個 VM 自己玩,自由度高,適合需要客製化多一點的情況,這就跟有人喜歡包子有人喜歡饅頭 (阿我兩個都不喜歡怎麼辦,毆飛)。
  • Docker and Docker Compose
其實 Docker 一開始紅的時候對 Java 沒有很明顯的誘因,實在是因為 Java 的跨平台有其優勢,你一個 VM 給我一樣能跨平台。我個人覺得是到 Infrastructure as Code 的興起以及日漸複雜的架構及系統,如果不進一步將環境也抽象化,很難應對這樣的潮流。那時許多工具都因應這樣而生,像是 Puppet、Chef、Ansible、Terraform、Vagrant 和 Packer。Docker 其實蠻有 Vagrant Lite 的影子,只是 Vagrant 操作的對象是 VM,Docker 更細化一點,有自己的架構,基本上是在同一台 VM 上多個 container。而當你單機越跑越多 Docker container 就會有管理的問題,前身是 fig 的 Docker Compose 也應時而生,管理容器的維度跳了一級。
  • CAAS and Kubernetes
現時所見的 AKS 和 GKE 一開始其實都是 CAAS (Container as a Service),概念很清晰,就是給你一個可以跑容器的環境,你只要交付你的 Docker image 出去就好,剩下是它的事情。

後來容器編排各家大戰,Google Kubernetes、Docker Swarm、Apache Mesos、HashiCorp Nomad,目前是 Kubernetes 脫穎而出。如果要用簡短的形容讓人理解這是什麼,我覺得可以這樣描述,Docker 是點 (單獨管理容器),Docker Compose 是線 (管理一排容器),Docker Swarm 是面 (管理多台機器多個容器),Kubernetes 就是屬於 Docker Swarm 那個維度的。

About Me

Jian-Min Huang

wide range skill set backend engineer

Research, Architecture, Coding, DB, Ops, Infra.

mainly write Java but also ❤️ Scala, Kotlin and Go

http://github.jianminhuang.cc

http://linkedin.jianminhuang.cc

http://note.jianminhuang.cc

yfr.huang@hotmail.com


上一篇
專案建置方法的演進
下一篇
系統架構的演進
系列文
後端攻城獅的實戰筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言