SlideShare uma empresa Scribd logo
1 de 102
Infrastructure as Code
at VCCorp
Phạm Tuấn Anh
Team Platform Services, VCCloud
ITLC HANOI
MONTHLY PUBLIC MEETUP
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 1
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 2
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 3
$ whoami
• Phạm TuấnAnh, 1988
• 2 failed (funded) startups
• VCCorp từ 2010
• Co-founder của Appdex
• Stack: python, nginx, lua, git, ansible, redis,
memcached, mysql, mongodb
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 4
VCCorp
5 khối:
1. Nội dung
2. Thương mại điện tử (Zamba)
3. Game (Soha Game)
4. Quảng cáo (Admicro)
5. Hạ tầng (VCCloud)
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 5
VCCloud
• > 60 người
• 3 bộ phận lớn:
• Data Center
• Cloud Solutions
• Platform Services
• Các bộ phận nhỏ khác: Security, Helpdesk
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 6
Team Platform Services
• Thành lập từ khoảng năm 2010
• Hiện tại có 8 người
• Các project chính:
• Storage (static files, ảnh, video…)
• CDN
• DDoS Request Filter
• PaaS
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 7
Một vài thống kê
• ~ 3 tỷ files, 750TB (12 data nodes, hơn 200 HDDs)
• MySQL 450GB, MongoDB 560GB
• 30k requests/s, > 400k active connections
• 40Gbps, ~ 30% CPU, 7 servers
• HTTP access log ~ 1.4GB/phút
• > 20 projects lớn nhỏ, khoảng > 100 servers
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 8
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
9
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
10
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
11
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
12
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 13
Hiện trạng hệ thống trước 2014
Một vài sự cố lớn:
• 2012: Database conflict
• 2013: DDoS
• 2014: Sập DC
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 14
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
15
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
16
Hiện trạng hệ thống trước 2014
Một vài vấn đề:
• các server cài giống nhau nhưng chạy khác nhau
(facepalm)
• các rule về security áp dụng không đồng nhất (do làm thủ
công và nhiều server)
• theo dõi hệ thống sơ sài, dùng con người là chính
• triển khai, thay thế server khó khăn, hay lỗi khi mới đưa vào
• server reboot: ~ 20-30 phút
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 17
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 18
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
19
Configuration drift
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
20
A few key people to do
"sensitive" deployments?
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
21
Human error factor
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
22
Infrastructure as Code
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
23
Infrastructure as Code
Reusable
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
24
Infrastructure as Code
Version Control
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
25
Infrastructure as Code
Coding Standards
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
26
Infrastructure as Code
Contribution
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
27
Infrastructure as Code
Code Review
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
28
Infrastructure as Code
Refactoring
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
29
Infrastructure as Code
Testing
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
30
Infrastructure as Code
Continuous Integration
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
31
Infrastructure as Code
Small Deployments
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
32
Infrastructure as Code
≠
DevOps
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 33
Infrastructure as Code
≠
Automation
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 34
Infrastructure as Code
=
Automation at Scale
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 35
Infrastructure as Code:
1. Tự động hóa quá trình deploy
2. Quản lý (mọi thứ) thông qua source control
3. Áp dụng tests
4. Hạn chế viết tài liệu
5. Dev & Ops cộng tác trên cùng 1 repo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 36
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
37
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
38
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
39
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 40
Triển khai thực tế:
• Wikimedia:
http://git.wikimedia.org/project/operations
• Bắt đầu từ tháng 7/2014 đến hiện tại (~18
tháng)
• Công cụ: Ansible, Git, GitLab, GitLab CI
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 41
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
42
Tại sao lại chọn Ansible?
• "agentless"
• Cú pháp rõ ràng
• Tài liệu chi tiết, nhiều module có sẵn
• Phổ biến
• Tốc độ?
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 43
Ansible vs Salt
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
44
Ansible vs Chef
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
45
Ansible vs Puppet
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
46
GitLab CI?
• jenkins
• GitLab CI UI đẹp hơn :)
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 47
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
48
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
49
Một vài vấn đề khi triển khai:
• Con người
• Setup môi trường
• Password, secret keys trên production
• Git workflow
• Tests
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 50
Con người:
• Ops: Học thêm git, ansible
• Dev: Học thêm ansible
• Thay đổi thói quen:
• Giảm login vào server để sửa
• Fix lỗi xong viết tests/checks
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 51
Con người:
• Khó khăn:
• naming things
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 52
– Phil Karlton
“There are only two hard things in
Computer Science: cache invalidation
and naming things.”
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
53
Con người:
• Khó khăn:
• naming things
• good commit messages
• atomic commits
• check-in early, check-in often
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 54
Setup môi trường:
• development (mỗi dev được cấp 1 server ảo)
• test (dành riêng cho server CI chạy)
• staging (dùng gor để capture & replay traffic từ production)
• production
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 55
Setup môi trường:
$ gor --http-original-host 
--input-raw :80 
--output-http "http://10.3.3.4|5%"
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 56
Password, secret keys trên production:
• ansible-vault
• ejson (Shopify)
• vault (HashiCorp), keywhiz (Square)
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 57
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
58
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
59
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
60
Git workflow:
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
61
Git workflow:
• master là nhánh ổn định, khi cần có thể deploy ngay
• các thay đổi được làm ở topic branches
• rebase sớm để tránh conflicts
• push trực tiếp vào repo chính, không dùng Fork
• roll forward
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 62
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
63
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
64
Tests
• các gói, thư viện cài đúng chưa?
• service chạy thật chưa?
• firewall chặn SSH từ WAN chưa?
• disable password login chưa?
• cảnh báo mail khi SSH hoạt động không?
• mạng server có bình thường không?
• …
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 65
Tests
• coding, writing style
• deploy (ansible)
• unit tests
• smoke tests (các service running hết chưa?)
• integration tests (theo logic cụ thể của từng project)
• nagios
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 66
Continuous Integration
• git commit
• git push lên GitLab
• GitLab gọi GitLab CI
• GitLab CI đẩy task sang GitLab CI Runner
• GitLab CI Runner chạy tests và report lại kết quả
• deploy lên production (thủ công)
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 67
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
68
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
69
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
70
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
71
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
72
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
73
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
74
Một số lưu ý khi triển khai:
• Admin UI → Config files
• SSH 2-factor → OpenVPN + DuoSecurity
• Packages/dependencies
• Account deploy dùng chung?
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 75
Kết quả đem lại:
• Giảm áp lực vận hành hệ thống
• Giảm lỗi, các server chạy thống nhất
• Có log chi tiết các thay đổi
• Việc chia sẻ, phối hợp trong team dễ dàng hơn
• Các thay đổi được review, test trước khi deploy
• Người đi - kiến thức ở lại
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 76
Q&A
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
77
FAQs
• Sao không dùng dynamic inventory?
• Merge/Pull Requests dùng thế nào?
• Merge vào master luôn như thế có nguy hiểm
không?
• Ansible deploy chậm
• CI server deploy lên đâu? Làm sao có môi trường
như production để test?
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 78
FAQs
• "Cloud" ở đâu?
• Zero-downtime reloads?
• Có server cần tham số riêng thì làm thế nào?
• Quản lý đồng thời server CentOS và Ubuntu thế
nào?
• Các module ansible hay dùng?
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 79
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
80
FAQs
• Auto scale?
• Ansible vs Docker?
• Khi provision infra tự động mà bị lỗi thì các bạn
xử lý thế nào? Có bài học nào hay ho không?
• Những khó khăn và thách thức nào khi xây
dựng và quản lý hạ tầng private và public?
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 81
Agenda
1. Giới thiệu
2. Hiện trạng hệ thống trước năm 2014
3. Infrastructure as Code
4. Triển khai thực tế từ 2014 đến nay
5. Demo
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 82
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
83
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
84
Inventory file
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
85
Templates
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
86
Templates
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
87
Tasks
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
88
Tasks
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
89
Deploy
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
90
Quản lý users
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
91
Quản lý users
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
92
Quản lý users
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
93
Iptables
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
94
Iptables
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
95
Update DNS
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
96
Update DNS
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
97
Deploy server mới
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
98
Security fix
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
99
Thêm cảnh báo
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
100
Q&A
ITLC Hanoi (https://facebook.com/itlchanoi)
– Pham Tuan Anh
101
Một số link tham khảo
• Ansible Best Practices: http://docs.ansible.com/ansible/
playbooks_best_practices.html
• Ansible Vault: https://therealmarv.com/ansible-vault-file-handling/
• Ansible Modules: http://docs.ansible.com/ansible/
modules_by_category.html
• RedHat mua Ansible: https://www.redhat.com/en/about/blog/
why-red-hat-acquired-ansible
• Continuous Delivery: https://puppetlabs.com/sites/default/files/
CDebook.pdf
ITLC Hanoi (https://facebook.com/itlchanoi) – Pham Tuan Anh 102

Mais conteúdo relacionado

Destaque

Destaque (12)

High performance web sites with multilevel caching
High performance web sites with multilevel cachingHigh performance web sites with multilevel caching
High performance web sites with multilevel caching
 
Zero to one.PETER THIEL
Zero to one.PETER THIELZero to one.PETER THIEL
Zero to one.PETER THIEL
 
Career talk
Career talkCareer talk
Career talk
 
Cẩm nang kinh doanh tết 2017
Cẩm nang kinh doanh tết 2017Cẩm nang kinh doanh tết 2017
Cẩm nang kinh doanh tết 2017
 
ITLCHN 18 - Automation & DevOps - Automic
ITLCHN 18 -  Automation & DevOps - AutomicITLCHN 18 -  Automation & DevOps - Automic
ITLCHN 18 - Automation & DevOps - Automic
 
itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1
 
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
ITLC - Hanoi - NodeJS - ArrowJS - 27-11 - 2015
 
IM Group hợp tác Haravan - slide nền tảng tổng thể haravan
IM Group hợp tác Haravan - slide nền tảng tổng thể haravanIM Group hợp tác Haravan - slide nền tảng tổng thể haravan
IM Group hợp tác Haravan - slide nền tảng tổng thể haravan
 
Graph ql
Graph qlGraph ql
Graph ql
 
Nghiên cứu luật kết hợp áp dụng xây dựng mạng chia sẻ đồ vật MiGi
Nghiên cứu luật kết hợp áp dụng xây dựng mạng chia sẻ đồ vật MiGiNghiên cứu luật kết hợp áp dụng xây dựng mạng chia sẻ đồ vật MiGi
Nghiên cứu luật kết hợp áp dụng xây dựng mạng chia sẻ đồ vật MiGi
 
Experience for implement PCI DSS
Experience for implement PCI DSS  Experience for implement PCI DSS
Experience for implement PCI DSS
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One
 

Mais de IT Expert Club

Mais de IT Expert Club (6)

Migrating to aws
Migrating to awsMigrating to aws
Migrating to aws
 
ITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigDataITEC - Qua trinh phat trien he thong BigData
ITEC - Qua trinh phat trien he thong BigData
 
Toi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dungToi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dung
 
itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2itlchn 20 - Kien truc he thong chung khoan - Phan 2
itlchn 20 - Kien truc he thong chung khoan - Phan 2
 
Towards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI StoryTowards the Cloud: Architecture Patterns and VDI Story
Towards the Cloud: Architecture Patterns and VDI Story
 
ITLC HN 14 - Bizweb Microservices Architecture
ITLC HN 14  - Bizweb Microservices ArchitectureITLC HN 14  - Bizweb Microservices Architecture
ITLC HN 14 - Bizweb Microservices Architecture
 

ITLC Hanoi 17 - Infrastructure as Code 07-01-2016