摘要:當下基于云的部署大大縮短了應用的發布周期,讓機構可以將更多精力投入到產品特性設計上。然而,大規模應用架構從來都不是件容易的事情。從本文起,我們將帶大家領略Clay.io的10X架構,首先關注的則是技術上的選擇。
近日,Clay.io的Zoli Kahan開始了“10X”系列博文的撰寫。通過這個系列博文,Zoli將分享如何只使用一個很小的團隊支撐Clay.io的大規模應用。首期分享則是對Clay.io所使用技術的盤點。
下為譯文
云方面
CloudFlare
CloudFlare主要負責支撐DNS,并作為一個防護DDoS攻擊的緩存代理,同時CloudFlare還負責處理SSL。
Amazon EC2 + VPC + NAT服務器
基本上Clay.io的所有服務器都是Amazon EC2類型,其中大部分是中大型實例。同時,我們還使用Amazon VPC將所有服務器托管在一個私有網絡,從而這些服務器很難在外網訪問。為了訪問這些私有網絡,我們還配置了一個NAT服務器,它同時也作為一個VPN終端,用以內部網絡使用。
Amazon S3
我們使用Amazon S3作為應用的CDN后端,它托管了Clay.io的所有靜態內容。為了安全和性能因素,我們為之配置一個獨立的域名——cdn.wtf,一個cookie-less域名。
HAProxy
HAProxy是一個非常高性能的反向代理,我們使用它將流量路由到不同的服務。基于Clay.io的性質和平臺所需支撐的內容(比如遺留代碼),HAProxy意義重大。在以后文章中,我將對這點進行深入討論。
當下,Clay.io使用的是一個配置了m3.medium的HAProxy服務器。在流量增加后,HAProxy必將迎來一次無可避免的升級。此外我們還會在前端增加一個Amazon ELB,在需要時進行橫向擴展。
應用服務器——Docker
Docker用于管理Linux容器,類似于輕量級的Virtual Machines(同時還省略了隔離和安全保障)。Docker的好處是可以做代碼封裝,并且忽略底層服務器特性做任意的代碼重用/移植,在下文我們將詳細介紹。
演示應用服務器——Docker
在Clay.io,演示環境服務器和應用程序服務器相同,并且和生產環境運行相同的二進制Docker文件。對于防止不必要的生產系統破壞和宕機,這種設置環境非常重要。
數據存儲
MySQL
MySQL是一個久經沙場的關系型SQL數據庫,當下Clay.io的數據大部分都依賴一個主從設置的MySQL集群。在這個集群中,一個主節點和兩個從節點服務器支撐了大部分的用戶查詢。當然,在未來我們可能需要對主節點進行分片。但是期望不要太早,因為我們正在考量其他數據庫。
Logstash
Logstash是個日志聚合工具,通過Kibana進行分析。當下,它基本上負責了Clay.io所有的應用程序日志,以備系統發生錯誤時使用。使用Kibana,我們避免了必須SSH到一個機器進行日志檢查。
MongoDB
MongoDB是個NoSQL文檔存儲數據庫,當下MongoDB為我們的一些開發端點和A/B測試框架Flak Cannon提供服務。
Memcached
Memcached使用了鍵值存儲類型,非常類似于Redis。Memcached在Clay.io主要負責一些遺留Web應用,用以緩存MySQL的查詢結果。毫無疑問,隨著系統的迭代,終它將完全被Redis取代。
DevOps
Ansible
在我們系統中,Ansible被作為服務器管理工具的一個選擇。對于大部分開發者來說,它非常易于學習和使用,Ansible可以幫助許多日常DevOps的自動化處理,由一個專門的運營團隊負責。
其他服務
GitHub
GitHub——無需多言,這是個非常強大的源代碼管理工具。
Uptime Robot
Uptime Robot是個免費的監測服務,我們使用它來監測健康檢查和端點。如果有問題發生,它可以在5分鐘內給我們發送電子郵件和文本消息。
Drone.io
Drone.io是一個連續的集成服務,我們使用它為各種項目連續不斷的運行測試集。它非常類似于TravisCI,近日我們還釋放了一個開源的自托管版本。
Docker Registry
當下,我們使用官方的Docker Registry來管理Docker容器,它類似于Docker專用的GitHub。
New Relic
New Relic是個服務器和應用程序監視服務,主要用于服務器監視,在磁盤和內存滿載時進行提醒。
Google Analytics
Google Analytics是我們主要的網站分析跟蹤工具,用于跟蹤網站具體功能,我們使用了定制事件特性。
Google Apps
Google Apps為我們clay.io域名提供郵件,并為機構提供了一個共享的Google Drive設置。
Last Pass
Last Pass是一個密碼管理服務,它允許我們便捷的在所有團隊共享公司認證信息。
未來
雖然我們對當下的設置已經比較滿意,但是我們仍然期望在數個月內對系統的某些方面進行升級。審視初的基礎設施版本,有許多地方并沒有花大量的時間去設計。而就是這些地方,成了未來系統擴展時必須面對的瓶頸。
Kubernetes在大規模Docker容器管理上表現出了驚人的潛力,也是我們重點跟蹤的項目之一。毫無疑問,在該項目成熟時,必將成為我們生產環境的一部分。
Amazon Glacier,用于數據庫備份,是我們未來的一個實現目標。
RethinkDB,雖然當下還非常不成熟,但其潛力不容忽視。和Docker一樣,我們將緊跟這個項目的發展。在未來棄用MySQL時,它將是一個不錯的選擇。
原文鏈接:How Clay.Io Built Their 10x Architecture Using AWS, Docker, HAProxy, And Lots More
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。