Xây dựng kiến trúc Microservices (P1)
Loạt bài viết này tổng hợp các bài dịch từ các tác giả có nhiều kinh nghiệm trong việc xây dựng và triển khai microservices bao gồm Chris Richardson, Martin Fowler, James Lewis, Sam Newman và nhiều tác giả khác. Bài viết cũng dựa trên kinh nghiệm xây dựng sản phẩm hiện tại của người viết theo hướng đi microservices .
Tư duy về microservices
Bản thân người viết thấy rằng, việc chạy theo xu hướng giống như việc cưỡi ngựa xem hoa, lý thuyết cho dù kỹ nhưng không nắm thực tế, không trực tiếp triển khai hay giải quyết vấn đề sẽ không mang lại hiệu quả gì . Microservices là một khái niệm dễ `chém gió` nhưng khó triển khai .
Khái niêm về microservices được xuất hiện khi tôi tham gia vào Edumall . Tất nhiên dịch vụ, thứ liên tưởng đến lúc đấy là SOA, kiến trúc hướng dịch vụ, team lúc đấy chưa có hiểu nhiều về microservices, tuy nhiên với lối tư duy vận hành theo hướng dịch vụ của công ty, team quyết định xây dựng hệ thống theo microservices. Đây là một quyết định đặt nền móng cho chúng tôi sau này trong việc phát triển theo kiến trúc microservices .
Câu chuyện về Atlas , vị thần khổng lồ nâng đỡ bầu trời cho chúng ta một bài học rằng việc đội trên đầu một bầu trời tiềm ẩn rất nhiều nguy cơ, và việc để cả bầu trời cho một vị thần nâng đỡ càng nguy hiểm hơn .
Khoảng sáu năm trước, Netflix đã bắt đầu chuyển từ một kiến trúc monolithic sang microservices . Netflix là một trong những hệ thống áp dụng đầu tiên về microservices, một thuật ngữ mà thậm chí không tồn tại khi Netflix bắt đầu chuyển dần ra khỏi tảng đá nguyên khối của nó.
Hôm nay, các ứng dụng Netflix xử lý khoảng hai tỉ yêu cầu API mỗi ngày và được xử lý bởi khoảng 500 + micro services. Netflix đã rất thành công với kiến trúc của nó, công ty đã opensource rất nhiều nền tảng của nó bao gồm các công nghệ tạo nên microservices . Netflix đã trở thành một trong những ví dụ nổi tiếng nhất của một kiến trúc hiện đại — microservices;
Hãy bắt đầu với các câu hỏi what, why, when và how.
Việc định nghĩa thế nào là microservices.
Quan điểm của chúng tôi khi bắt đầu đi theo hướng microservices là simple-service, các dịch vụ được thiết kế đơn giản , việc thiết kế database cũng chấp nhận thiết kế đơn giản và loại bỏ các ràng buộc, tất nhiên giải pháp nào luôn có nhược điểm, và bạn phải tìm cách để giải quyết bài toàn ràng buộc đó. Cũng có những quyết định có vẻ như không hợp lý như chọn nhiều loại database để lưu trữ dữ liệu, tuy nhiên không vì những sai lầm để quay lại theo hướng monolid ban đầu.
Microservice có thể là một kiến trúc hoặc là một tư tưởng. Ban đầu chỉ là cố gắng chia nhỏ môt hệ thống nguyên khối ra thành các khối nhỏ hơn, cho đến hiện tại, mọi thử trở nên phức tạp hơn bao giờ hết.
….