E hèm :> trước hết thì chào mừng các bạn đã trở lại với chuyên mục mỗi tuần vài bài viết nhảm quần. Buổi chia sẻ kiến thức số 2 xin được phép bắt đầu.
Tựa đề hôm nay là một câu chuyện mang tính tiếp diễn những gì diễn ra ở bài trước, câu chuyện về hệ thống và sự biến thể của cấu trúc cụm máy tính.
OK thì TL;DR chúng ta sẽ bó gọn lại ở đây vấn đề và phương pháp giải quyết và cũng như vấn đề của cả nền IT thế giới. Nhảy theo từng giai đoạn.
- Tôi có một con máy tính, tôi cho rằng con máy của tôi là bá cmn đạo, cả thể giới chắc cũng chỉ có được vài con thôi ý mà, nên là có máy tôi thì tôi cứ dùng thôi. Mạng máy tính thì cũng cùi mía, ipv4 là mướt mùa cho các bố ngịch mấy con máy 4kb ram rồi.
- Từ đâu nhảy ra vài tên giải quyết được vấn đề của máy tính cơ học cổ, thế là, Tèng Tèng mấy bố bán máy tính cá nhân rồi thì đùng cái ai cũng có máy tính. Ối dồi ôi nó lại là tệ vl.
- Rồi thì bùng nổ công nghệ, chuyện không chỉ là việc máy mình có phần cứng, có hệ điều hành thì máy mình chạy. Chúng ta lại có cả tỉ lý do để phân tách nó ra, rồi làm con này trong con kia, thằng này trong chăn con nọ, để tối ưu, để mở rộng, để đảm bảo và ti tỉ thứ.
- Và rồi Cloud. Ờ tạm thế. Sẽ có tí tám nhảm ở dươi đi.
Phần 3 thật ra đã bao hàm phần lớn những vấn đề về hệ thống mà chúng ta gặp phải.
Tưởng tượng một ngày bật dậy bạn thấy thư mục tài liệu học tập cắm torrent của mình chật cứng, bạn thì quá lười để đi mua ổ cứng, quá mệt để nhận đồ ship hay quá ngu để tự cắm con ổ của mình vào máy tính. Hay đơn giản bạn chơi dò mìn chợt thấy máy mình chậm vờ lờ, Ram quá yếu nhưng bạn lên mạng tải thì không được.
Hay bạn là một kẻ nghịch ngợm một lúc muốn sử dụng 2 3 hệ điều hành, bạn có nhu cầu liên tục khởi chạy các ứng dụng chỉ vì bạn thích, nhưng bạn lại không thích cài lại hệ điều hành vì bạn lười.
Công ty bạn làm được con app ngon vler và muốn nhân rộng nó lên hết mức có thể. Thế là bùm. Ừ mở rộng không được vì quá khó thiết lập nền, công ty bạn chết dãy đành đạch.
Với những công nghệ hay nền tảng hệ thống sau đây, mọi bài toán trên gần như đã bị loại bỏ và chào mừng các bạn đến với kỉ nguyên mới nơi mà các kĩ sư làm app monolithic khóc thét. Và mọi thứ đều dễ dàng hơn bao giờ hết với microservices. Chúng ta sẽ chia làm 2 phần Cứng và Mềm để cho các anh em dễ hiểu.
Hardware solution | Software solution |
Cluster | Virtual Machine |
Server Farm | Docker |
Hyper-V | Hyper-V |
CLOUD | CLOUD |
oke thì bởi vì cái idea về cluster đã nói hôm nọ, kèm đó là thật ra tất cả các khái niệm trên đều dính dáng nhau và nhiều lúc rát nhầm lẫn nên tôi xin phép vào phần tôi muốn nói hôm nay.
VIRTUALZATION VÀ CONTAINERIZATION
Vậy thì Ảo Hóa và Container Hóa chính xác là gì.
Để bắt đầu với 2 khái niệm này chúng ta hãy cũng tìm hiểu thứ đầu tiên là VM (virtual machine) một khái niệm mà hẳn là các bạn đã nghe qua. VM vẫn là một sự lựa chọn thông dụng ở Việt Nam do sự tiện dụng của nó. Và VM là một ví dụ điển hình của Virtualzation với các đặc điểm sau.
- Mỗi máy ảo là một sự copy đầy đủ của hệ điều hành, thích hợp tạo môi trường tách biệt hoàn hảo khỏi can thiệp vào OS nền nhưng ngược lại bạn luôn phải cấp phát một lượng ram, chip, data cho nó. Cố Định.
- Chạy các kết nối phần nào qua OS nền.
- Và siêu khó khi mở rộng.
Và như các bạn đã thấy hệ thống đã trở thành một nền tảng để host nhiều hệ thống hơn. Khá là nhiều. Và Microsoft thậm chí còn đẩn nó lên một tầng cao mới với HYPER-V. Đại khái là một sự chuyên nghiệp, tách biệt hơn, bảo mật hơn cho nền tảng xây dựng theo Virtualzation.
TUY NHIÊN VẤN ĐỀ CỦA MÁY ẢO LỘ RẤT RÕ RÀNG, máy ảo khởi chạy chậm do bản chất khi xây dựng phải cài đặt một OS mới. Với rất nhiều những cố định về khả năng xử lý mà phải tới HYPER V mới phần nào được giải quyết.
Tiếp theo là Container. Container có thể nói đã manh mún từ khá sớm từ khi linux bắt đầu thêm vào khái niệm namespace để có thể phân tách hệ điều hành của mình ra thành các khu vực cụ thể. Vậy thì điều này dẫn tới việc gì?
Khi sự tách biệt được rõ ràng chúng ta có thể tách hoàn toàn OS nền ra chạy độc lập, Các ứng dụng khởi chạy dù dùng chung một OS nhưng lại có thể tách biệt hoàn toàn đồng thời OS nền cũng khó có thể bị ảnh hưởng bởi các ứng dụng chạy trên nó. Tất cả các điều trên biến hệ thống thành những mảnh ghép tại đó OS là mảnh ghép lớn có các mảnh ghép nhỏ hơn cắm ở trên. Nó dễ dàng thêm các mảnh ghép, thay thế, cắm thêm các mảnh cùng màu hay tháo rời các phần nhỏ nhưng vẫn giữ được bản thân không bị can thiệp.
Và tất nhiên khi miếng ghép nền bị hết chân cắm, thì máy của bạn cơ bản đã tải hết sức.
Vậy thì contaier như đã nói có những điểm mạnh và yếu sau.
- Khởi chạy nhanh do chạy cùng OS và OS bản thân đã được khởi chạy từ trước.
- Sự tách biệt cũng như Virtualz nhưng là ở tầng application.
- Dễ dàng mở rộng cũng như thao tác, tận dụng bộ xử lý, ram và data.
- Tuy nhiên do cơ chế xây dựng trên cùng OS nên ứng dụng chỉ có thể cùng loại có thể chạy trên OS nền ví dụ như Lĩnux chạy Linux container – Windows chạy windows container.
- Do chạy cùng OS nên vẫn có thể có nguy cơ bị can thiệp OS, lỗi bảo mật và xử lý.
Đấy đấy là khác biệt, nhưng như các bạn đã thấy thật ra VIRTUALZATION và CONTAINERIZATION thật ra ở hai tầng khác nhau, một phân tách ở tầng OS một phân tách ở tầng APP vì vậy tùy bài toán mà chúng ta lựa chọn giải pháp phù hợp cho hệ thống. Và container tất nhiên có thể chạy trên các máy ảo vì chúng ở hai tầng khác nhau.
Thôi viết hơi nhiều rồi đi ngủ đây.
dừa dừa.