突襲北非、殖民冰島,劫掠歐洲各國——維京人的擴張大冒險

突襲北非、殖民冰島,劫掠歐洲各國——維京人的擴張大冒險
Photo Credit: Johan Peter Raadsig @ public domain

我們想讓你知道的是

迄今為止,維京人最勇敢的行為便是跨越大西洋前往冰島、格陵蘭島和北美洲,儘管挪威人與冰島的相遇,只是其向西航行到設德蘭群島和法羅群島的自然結果。挪威人自八世紀起在那裡定居,據說愛爾蘭修道士可能在九世紀之前便在那裡隱居。

那裡可以滿足北方人一整年的家庭生活所需,其環境也比丹麥或挪威更適宜居住,而且更便於襲擊法國南部和伊比利亞半島。一份阿拉伯語文獻記錄了在八四四年至九七年間,維京人曾六次遠征安達盧斯,其中兩次抵達了地中海。

一開始,一支由五十四艘戰艦組成的丹麥艦隊襲擊了里斯本,之後航行到瓜達爾基維爾河上游,向下游去掠奪塞維利亞。丹麥人在科爾多瓦遭到了伏擊,損失了約兩千人。在達成停戰協定後,大多數倖存者乘著二十艘船撤回故土,但也有一些丹麥人皈依了伊斯蘭教並定居下來,其中有許多人成為了農場主,以製作乳酪聞名。這次遠航產生了一個在其他地區也出現過的週期性模式,即先控制河口,然後襲擊內陸沿河城鎮及其腹地,通過水路和陸路快速行軍。但是對於斯堪的納維亞人而言,在這樣的行動中參與的人數太少,難以扎根,即便維京人成為了當地的統治者仍是如此。

八四四年的襲擊造成了一個奇怪的結果,即埃里克二世(Eirik II)請求與阿卜杜勒・拉曼二世(Abd ar-Rahman II)建立外交關係。阿卜杜勒・拉赫曼二世是科爾多瓦的埃米爾,他派自己最卓越的外交官加扎勒(al-Ghazal)前往日德蘭半島。加扎勒曾參與同拜占庭帝國的談判,經驗十分豐富,他在丹麥受到了熱情的歡迎,並停留了一年多。

我們不清楚《丹麥─安達盧斯條約》的具體條款,但它很快就變成了一紙空文。八五九年,丹麥王子比約恩‧艾恩賽德(Björn Ironside)和一位名叫哈施泰因(Hastein)的士兵率領六十二艘戰艦襲擊了安達盧斯。然而與此同時,阿卜杜勒・拉赫曼二世已經打造了一支艦隊,在遠至比斯開灣的海面上巡邏。

安達盧斯軍隊在西班牙南部沿海俘獲了兩艘丹麥戰艦,阻止任何人進入瓜達爾基維爾河。在直布羅陀海峽東面,丹麥人洗劫了阿爾赫西拉斯,此後被一支裝備「希臘火」的伍麥亞王朝的艦隊打敗。在一次對北非沿海地區的小規模襲擊之後,丹麥人經巴利阿里群島航行到高盧南部,襲擊了羅納河畔的瓦朗斯。他們沒有遇到阻力,因為法蘭克人已經放棄了查理大帝的地中海艦隊。四年後,比約恩和哈施泰因率領十二艘船返回故土。儘管沒有產生長期的效果,但他們在這次遠距離、大範圍的遠征中表現出了傑出的機動性、戰鬥力和冒險精神,其軍隊的規模從未超過四千人。

Vikings-Voyages
Photo Credit: Bogdangiusca @ CC BY-SA 3.0
維京人的活動範圍

八五一年,維京人首次在不列顛群島越冬,具體位置是在泰晤士河河口旁的薩尼特島。不久,他們奪取了坎特伯雷和倫敦。八六六年,他們對諾森伯利亞的約克城發起猛攻,該城位於福斯河與烏斯河之間的一處岬角,距北海一二○公里。作為基督教中心和弗里斯蘭商人的港口,約克與歐洲大陸之間有著廣泛的聯繫,並向北歐提供了最早的一批傳教士,其中包括被稱作「弗里斯蘭人的使徒」的威利布羅德(Willibrord),他於六九五年成為烏德勒支的第一位主教。

從八七五年到九五四年,約克一直是挪威人的約克王國的中心。盎格魯─撒克遜人無力抵禦斯堪的納維亞人的入侵,直到阿爾弗雷德大帝(Alfred the Great)統治時期。阿爾弗雷德於八七一年即位,同年,丹麥國王古特魯姆(Guthrum)親率一支軍隊在東盎格利亞登陸。丹麥人向威塞克斯進軍,但是未能俘獲狡猾的阿爾弗雷德。阿爾弗雷德於八七八年在埃丁頓戰役中擊敗了丹麥人。

雙方簽訂了條約,規定古特魯姆及其大臣接受洗禮,阿爾弗雷德成為古特魯姆的教父,這使英格蘭以宗教的方式對斯堪的納維亞半島產生了影響。儘管雙方之間簽訂了條約,並有著共同的宗教信仰,但阿爾弗雷德仍不知疲倦地修築威塞克斯的防禦工事,在最重要的十字路口和橋梁建立營地,組織小規模的機動部隊,並派遣一支艦隊反擊丹麥人。

埃丁頓戰役結束七年後的第二個條約規定了丹麥的版圖,亦即所謂的「丹麥區」(Danelaw),主要包括諾森伯利亞和東盎格利亞兩個王國。儘管雙方之間的敵對狀態並未完全結束,但威塞克斯的統治者可以與丹麥人平起平坐了。

螢幕快照_2018-03-24_下午8_56_01
Photo Credit: Hel-hama @ CC BY-SA 3.0
埃丁頓戰役結束後英格蘭各勢力的分佈

儘管阿爾弗雷德使威塞克斯免於被丹麥人吞併,但丹麥人在隨後的一百五十年中仍在不列顛群島保持著優勢地位。他們已經不再只是定居下來的外來者,因為在七九○年至八二五年間,挪威人已經形成了一個獨立的國家,即萊特林王國,包括奧克尼郡和赫布里底群島以及蘇格蘭沿海地區。這裡成為對愛爾蘭發動季節性襲擊的起航點。

維京人強迫愛爾蘭人進貢,並建造了一座「從赫布里底群島到愛爾蘭的船橋」。(愛爾蘭北部和金泰爾角之間的莫伊勒海峽只有十一英里寬。)八三七年,兩支艦隊(包括六十艘戰艦)駛入了博伊奈河和利菲河。儘管被愛爾蘭人擊敗,但四年後,挪威人的萊特林王國在都柏林建造了要塞,以保衛登陸地點。

第一批環繞愛爾蘭的沿海要塞(longphort)位於沃特福德、科克和利默里克等地,而都柏林依然是最重要的,它實際上成為了挪威人在不列顛群島的都城。當時,艾瑪爾(Ímar)繼承了萊特林王國的王位,並成為「整個愛爾蘭和大不列顛島的挪威人的國王」。愛爾蘭人於九○二年將挪威人從都柏林驅逐出去,但是十五年後,艾瑪爾的孫子重新奪回都柏林,並將約克和諾森伯利亞也納入了自己的勢力範圍。


猜你喜歡


挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

我們想讓你知道的是

企業如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署,減輕人力負擔,提升專案服務運作效率?

所謂現代化智慧 IT,所有工程師最希望的境界,莫過於只要輕鬆點幾下設定,系統就會自動跑起來,管理者再也不用隨時待命在機台旁邊,從此工作悠哉又快樂!儘管這樣情境還沒到來,但隨著敏捷式開發的流行,除了 DevOps 人員,有越來越多開發者將 CI/CD 概念融入到工作流程當中,例如從 build code、執行 unit test、到部署應用程式。

透過 AWS 增加雲端技能 在組織發揮影響力

上述種種反覆步驟自動化執行,也就能提昇服務品質、主動通知開發人員以減輕人力負擔,讓專案服務能持續運作。

其中,GitLab 是執行 CI/CD 常用的工具之一,也是開發者使用程式碼儲存庫的地方。為了讓 GitLab Runner 在雲端快速實踐 CI/CD,《AWS 開發者系列》透過影片分享,如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署。

以下節錄工作坊影音內容,幫助開發者快速理解如何運用 Amazon EKS 的高可用性且安全的叢集,將修補、部署節點、更新等關鍵任務,全部做到自動化設定。同時影片也會示範 Amazon EKS 搭配 GitLab 如何展開自動部署,幫助工程團隊實踐 CI/CD 價值。

Amazon EKS 對容器管理輕鬆簡單、維運省時省力

容器化服務越來越興盛,當容器(Container)越來越多,在複雜的微服務(Microservice)系統環境之下,運維團隊的管理成本可能相對會增加不少,為了有效調度容器部署, 導入Kubernetes 無疑是近年企業熱門的話題之一。

建構 Kubernetes Cluster 流主要可區分兩大塊,一是安排容器調度的Control Plane、另一則是容器運行時需要用到的 Worker Node。

Control Plane 裡面涵蓋有儲存狀態的 ETCD、CoController manager 、Scheduler 的調度管理、甚至是操作時進行互動的 APIServer,若是自己創建 的 Kubernetes Cluster ,需要自己安裝這些元件,後續仍需要對 Control Plane 進行相關管理、維護、升級工作。為了減少上述 Components 的繁複維護,在透過 AWS EKS 代管的 Kubernete Control Plane 部可以獲得以下三大好處。

Amazon EKS 一鍵式部署,展現三大優勢

第一,Amazon EKS代管的 Control Plane實踐了跨AZ的高可用部署,使用者不需要擔心單一節點故障的風險。

第二,Amazon EKS 支持至少四個 Kubernetes版本,持續跟進每季 CNCF 的發佈,同時 EKS 也完全符合上游 CNCF 規範。

第三,部署 Amazon EKS 之後,可直接使用 AWS 平台上現成的服務工具,在安全性管理、網路設定方面,可以做到無縫整合。

最後 AWS 台灣解決方案架構師也提到,若想在容器環境進行 CI/CD 及應用程式的管理,可以進一步透過 IaC 整合部署 Amazon EKS 叢集,透過使用 Console、把 EKS 變成 Cloudformation 的模板、使用 AWS 所開發出來的 eksctl.io、或指令是採用 AWS CDK 可以讓開發者用自身熟悉的語言,在 AWS 平台整合 CI/CD 工具進行維運及部署 EKS。

打造第一個在 AWS 上的應用程式

了解 Amazon EKS 整合 GitLab ,獲得三面向價值

對開發者而言,想把 Amazon EKS 整合到 CI/CD 工具之一的 GitLab 平台上,可以看到那些實際的優勢?

在 DevOps 開發者示範工作坊當中,GitLab 資深解決方案架構師指出,GitLab 使用到 Kubernetes 技術,主要有三種搭配方法,包含 GitLab Server、GitLab Runner、以及創建 Deployment Environment。

本次示範教學會主要聚焦在 GitLab Runner 如何採取 Auto-scaled 方式進行 Build、Test、Package Apps;以及在 Deployment Environment 運用 Kubernetes 技術,做到 Auto Deploy、Review App。

正因為 Amazon EKS 能夠在 DevOps 過程提供所需要的彈性計算資源,幫助開發者在 GitLab 平台上面獲得以下三個層次的優勢:

  • 在 GitLab 內建的部署工作流程當中,自動生成整套 CI/CD 最佳實踐腳本。
  • Review App 過程,從 Merge Request 中可直接訪問應用程式 /App 的 UI 介面,並且根據 Git branch 名稱、專案名稱,自動生成 Review App 的 URL,以及在 Merge 前的最後防線進行 Approval 檢查。
  • 加速 CI/CD 流水線,GitLab Runner 運行時候還可藉由 Amazon EKS Cluster 進行 Auto-scaled 的支援。

Amazon EKS 整合 GitLab ,需要兩大流程

影片最後,GitLab 資深解決方案架構師示範如何把 Amazon EKS 整合至 GitLab 執行 Auto Deploy,主要可分為兩大區塊流程,第一部分聚焦在 Amazon EKS cluster 的設置,第二部分則執行 Auto Deploy 設置。

第一塊可拆分為四個階段,首先教學怎麼創建 EC2 節點的 EKS cluster,第二階段示範把 EKS Cluster 連接到開發者的 GitLab Instance、Group 或 Project,下一步則使用 Cluster Management Project Template 創建一個 Cluster Management Project,以及最後一階段透過 Cluster Management Project 自帶的 Helm Chart,安裝在 Cluster 所需要的內建 App。

第二塊執行 Auto Deploy 設置,針對需要部署的 App 創建一個 GitLab Project,接著再把 gitlab-ci.yml 添加到 Project,並從 Web IDE 選擇及導入 Auto Deploy 的 CI 模版,讓 GitLab 自動生成最佳實踐的整套流水線。

幫助開發者更了解 Amazon EKS 整合 GitLab 的 QA 系列

Q:使用 Amazon EKS 之後,如何更有效率或優化資源去配置 Worker Node 的機器數量,以及如何有效空管開發維運的成本?

A:Kubernetes 除了本身有 HPA(Horizontal Pod Autoscaling)可根據使用程度自動調整資源流量,另外也能延伸使用 AWS Auto Scaling 方案,針對可擴展資源去設定自動擴展管理。另外在成本管控,雖然 Amazon EKS 會收取額外管理費用,但可透過 AWS 平台的 Calculato r計算每個 EKS 的價格,你會發現自動化部署及管理的費用,相對工程師人力的成本更加便宜。

Q:越來越多客戶考慮把現有 Application 變成容器部署,大多是爲了加快部署的效率,那麼變成容器模式之後,對 CI/CD 的工作流程有什麽影響嗎?

A:運用容器技術最直接的效果,可以讓應用程式的環境更一致化,例如 testing 環節、stage production,讓容器避開一些差異問題。至於 CD 部分要 delivery 一些 usage 不太一樣的時候,容器會幫忙做配置,所以 CI/CD 對容器的效益是相輔相成的。

Q: 客戶在開發流程漸漸會把 Infrastructure 變成代碼或文檔,是不是可以把程式碼跟現有的應用程式的 CI/CD 流水線整合在一起,達到一套完整的 CI/CD 部署流程?

A:觀察目前市場作法,主要分成兩個階段去做整體部署。如果規模比較小的團隊,會把 Infrastructure 代碼跟 App 代碼分開,在管理上會比較靈活;如果企業規模比較大,會有另外一個 Infrastructure 團隊來控制部署事情,這種情况之下,APP 的項目會生成一個 APP package,主要做到 delivery 這個階段爲止。而 Infrastructure 的項目會指定把需要版本的文檔,部署到他們的 Kubernetes Cluster。

填寫表單 找到適合的快速上雲服務與工具!


猜你喜歡