Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

K8S On-premise: Incident & Lesson Learned ZaloPay Merchant Platform (MEP)

666 views

Published on

Speaker: Châu Nguyễn Nhật Thanh - Head of MEP @ ZaloPay

Khi phát triển hệ thống dựa trên kiến trúc monolithic, chúng ta thường gặp phải những khó khăn ảnh hưởng đến tốc độ delivery features, scaling những resources như databases,.. và những rủi ro khi thay đổi, nâng cấp sản phẩm.

Microservice là một trong những lựa chọn phổ biến hiện nay để giải quyết những khó khăn trên kiến trúc monolithic khi hệ thống scale phức tạp hơn, cần tốc độ delivery nhanh hơn, dễ dàng lựa chọn, triển khai nhiều technologies khác nhau cùng lúc,...

Nhưng có phải khi triển khai Microservice là chúng ta có thể tránh được những vấn đề trên?

- Chúng ta thường nghe nói đến việc scale API (compute) bằng cách sử dụng microservice dùng docker on k8s, nhưng làm thế nào để scale databases (storage) tránh SPOF?
- Làm thế nào để triển khai microservice trên hệ thống máy vật lý (on-premise) trên hạ tầng sẵn có?
- Làm thế nào để triển khai CI/CD cho hệ thống một cách hiệu quả?
- Làm sao để tracing/debug khi gặp sự cố?
- Và làm thế nào để monitor hệ thống đã triển khai?

Đến với Grokking TechTalk #34, các bạn sẽ được anh Châu Nguyễn Nhật Thanh - Head of MEP @ ZaloPay - chia sẻ về những kinh nghiệm và những vấn đề cũng như đau thương khi sử dụng microservices cho hệ thống ZaloPay Merchant Platform sử dụng Kubernetes on-premise.

Published in: Technology

K8S On-premise: Incident & Lesson Learned ZaloPay Merchant Platform (MEP)

  1. 1. K8S On-premise: Incident & Lesson Learned ZaloPay Merchant Platform (MEP) Châu Nguyễn Nhật Thanh Head of MEP - VNG Corp.
  2. 2. • About me • Why k8s on premise? • MEP K8S stack • Issues • Lesson learned • Next step Contents
  3. 3. - M.Sc Uni Duisburg, Germany - Tech Lead: - ZingMe - CSMBoot, CSMPlay, CSM - GBC - IoT Lab - ZaloPay Merchant Platform (MEP) - K8S newbie Me
  4. 4. Why K8S • Trend: micro service, container • Orchestrating across hosts • Easy to manage and scale app • Save cost !!! Source: https://x-team.com/blog/introduction-kubernetes-architecture
  5. 5. Why on premise • Fintech -> secure data • Save cost !!!
  6. 6. MEP K8S Stack • Deploy Architect • Load balancing • Access internet • Storage • DB • File • CI/CD • Log Collect • Tracing • Monitor & Alert
  7. 7. MEPK8S Stack
  8. 8. Load balancing • Why do we need proxy ? • Proxy mode • User space proxy mode (from v1.0) • IPTables proxy mode (from v1.1) • IPVS proxy mode (from v1.2)
  9. 9. Load balancing • Service type: • ClusterIP • NodePort • LoadBalancer => our choice • Using MetalLB layer 2 (ARP)
  10. 10. Access Internet • Using HTTP(S) Proxy installed in HAProxy node • In K8s
  11. 11. Storage • DB • Separate VLAN • SQL: TiDB • NoSQL: Redis, Cassandra • Queueing: Kaffka, ActiveMQ • Search: Elastic Search • File • Minio
  12. 12. Storage https://upload.wikimedia.org/wikipedia/commons/1/1f/TiDB_Architecture.jpg
  13. 13. CI/CD v1 • Gitlab hook when commit with comment “BUILD <ENV>” • Why don’t we use GitLab Webhook? • Call Jenkins Pipeline • Build the code • Test the code • Deploy to K8s • Manual config HAProxy
  14. 14. CI/CD v2
  15. 15. Log collector https://medium.com/@carlosedp/log-aggregation-with-elasticsearch-fluentd-and-kibana-stack-on-arm64-kubernetes-cluster-516fb64025f9
  16. 16. Tracing https://medium.com/velotio-perspectives/a-comprehensive-tutorial-to-implementing-opentracing-with-jaeger-a01752e1a8ce
  17. 17. Tracing
  18. 18. Monitor & Alert
  19. 19. Monitor & Alert
  20. 20. Monitor & Alert
  21. 21. Monitor & Alert • Monitor dashboard from K8S • Monitor HAProxy log • Parse ERR 5XX • Alert by SMS to tech leader
  22. 22. Issues 1 • Scale node break the production farm • Multi interface because of sticky node • Kubespray choose default route when no IP in inventory file
  23. 23. Issues 2 • Cannot join node which joined before • Kubeadm installed • Kubelet cannot start • How to fix ?
  24. 24. Issues 3 • 2 node die • Product has problem • Biz pressure: request to shutdown product because of tech incidents • Try to fix => more problem • How to fix ?
  25. 25. Lesson learned • Try to make DEV ~ PROD • Try to understand the root causes • Practice & Practice & Practice • Chaos engineering is VERY IMPORTANT for production • Need supporting from Biz Owner to apply new technology
  26. 26. Next steps • Upgrade to latest version k8s, tidb • Consolidate monitor tools • Make Alert system smarter • Apply Ingress controller : Nginx Ingress Controller • Try Persistence Volume: OpenEBS • Redis cluster solution • Fully automation CI/CD
  27. 27. https://twitter.com/danielepolencic/status/1172961505144377350 thanhcnn@vng.com.vn

×