CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. TỔNG QUAN VỀ DOCKER. Docker là gì? Docker là một nền tảng cho developers và sysadmin để develop, deploy và run application với container. Nó cho phép tạo các môi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng và môi trường này được gọi là container.
Khi cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì application của bạn sẽ được khởi chạy ngay lập tức. Lợi ích của docker. Khả năng start và stop chỉ vài giây, nhanh hơn nhiều so với sử dụng máy ảo. Khởi chạy container trên các hệ thống khác nhau mà bạn muốn.
Việc xây dựng và loại bỏ nhanh và tốn ít chi phí hơn việc sử dụng máy ảo. Dễ dàng thiết lập môi trường làm việc. Chỉ cần 1 file config và config 1 lần duy nhất và không bao giờ phải cài đặt lại các dependencies. Nó sẽ tách biệt môi trường máy thật và máy thật của bạn.
Đảm bảo việc chạy và khởi tạo ứng dụng không ảnh hưởng tới máy thật của bạn khi có vấn đề xảy ra. Việc cài đặt docker đơn giản cho các hệ điều hành khác nhau. Bạn có thể dễ dàng cài đặt docker cho từng môi trường riêng biệt theo tài liệu riêng biệt tại đây. Một số khái niệm quan trọng.
Docker bao gồm các thành phần chính: Docker Engine: dùng để tạo ra Docker image và chạy Docker container. Docker Hub: dịch vụ lưu trữ giúp chứa các Docker image. Một số khái niệm khác: Docker Machine: Tạo ra các Docker engine trên máy chủ. Docker Compose: chạy ứng dụng bằng cách định nghĩa cấu hình các Docker container thông qua tệp cấu hình 4 do an Docker image: một dạng tập hợp các tệp của ứng dụng, được tạo ra bởi Docker engine.
Nội dung của các Docker image sẽ không bị thay đổi khi di chuyển. Docker image được dùng để chạy các Docker container. Docker Container: một dạng runtime của các Docker image, dùng để làm môi trường chạy ứng dụng. Dockerfile: là một tập tin dạng text chứa một tập các câu lệnh để tạo mới một Image trong Docker.
Một số lệnh trong dockerfile: FROM <base_image>:<phiên_bản>: đây là câu lệnh bắt buộc phải có trong bất kỳ Dockerfile nào. Nó dùng để khai báo base Image mà chúng ta sẽ build mới Image của chúng ta. MAINTAINER <tên_tác_giả>: câu lệnh này dùng để khai báo trên tác giả tạo ra Image, chúng ta có thể khai báo nó hoặc không. RUN <câu_lệnh>: chúng ta sử dụng lệnh này để chạy một command cho việc cài đặt các công cụ cần thiết cho Image của chúng ta.
CMD <câu_lệnh>: trong một Dockerfile thì chúng ta chỉ có duy nhất một câu lệnh CMD, câu lệnh này dùng để xác định quyền thực thi của các câu lệnh khi chúng ta tạo mới Image. ADD <src> <dest>: câu lệnh này dùng để copy một tập tin local hoặc remote nào đó (khai báo bằng <src>) vào một vị trí nào đó trên Container (khai báo bằng dest). ENV <tên_biến>: định nghĩa biến môi trường trong Container. ENTRYPOINT <câu_lệnh>: định nghĩa những command mặc định, cái mà sẽ được chạy khi container running.
VOLUME <tên_thư_mục>: dùng để truy cập hoặc liên kết một thư mục nào đó trong Container. Liệt kê danh sách image/container: - $ docker image/container ls Xóa image/container: - $ docker image/container rm <tên image/container > Xóa tất cả image hiện có: - $ docker image rm $(docker images –a –q) Danh sách tất container hiện có: - $ docker ps –a Dừng một container cụ thể: - $ docker stop <tên container> Chạy container từ image và thay đổi tên container: - $ docker run –name <tên container> <tên image> Dừng tất container: - $ docker stop $(docker ps –a –q) Xóa tất cả container hiện có: - $ docker rm $(docker ps –a –q) Hiển thị log một container: - $ docker logs <tên container> Xây một image từ container: - $ docker build -t <tên container>. Tạo một container chạy ngầm: - $ docker run -d <tên image> Tải một image trên docker hub: - $ docker pull <tên image> Khởi chạy một container: - $ docker start <tên container> 6 do an 2. TỔNG QUAN VỀ MONGODB VÀ NOSQL.
Nosql là gì? NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL. NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value. NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS (Relational Database Management System- Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng, khả năng mở rộng,. Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc.
NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng. NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable, … 2. MongoDB là gì? MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server.) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row, MongoDB sẽ dùng các document thay cho row trong RDBMS. Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định. 7 do an Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB 2. Lợi ích của MongoDB.
Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái. Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS. MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster: Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng. Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL. TỔNG QUAN VỀ SPRING FRAMEWORD.
Spring là gì? Là framework phát triển ứng dụng phổ biến nhất dành cho Java Enterprise, là một Java Platform mã nguồn mở, một giải pháp gọn nhẹ dành cho Java Enterprise. Với Spring Framework các nhà phát triển có thể tạo ra các mã có hiệu suất cao, dễ kiểm thử và có thể sử dụng lại được. Lợi ích của sử dụng spring framework. Spring cho phép các nhà phát triển tạo các ứng dụng cấp Enterprise sử dụng các POJO.
Spring được tổ chức theo kiểu mô đun. Spring sử dụng một số công nghệ hiện có như ORM Framework, logging framworks, JEE, JDK timers và các công nghệ view khác. Dễ dàng kiểm thử một chương trình viết bằng spring. Web framework của spring là một Web MVC framework có thiết kế tốt, nó là một thay thế tuyệt vời cho Structs và các công nghệ kém phổ biến khác.
Spring cung cấp một số API thuận tiện để dịch các ngoại lệ cụ thể ( ném bởi JDBC, Hibernate, hoặc JDO chẳng hạn ). IoC container có trọng lượng nhẹ. Điều này có lợi ích cho việc phiển và triển khai các ựng dụng trên các máy tính có bộ nhớ và tài nguyên CPU hạn chế. Spring cung cấp một bộ chứa giao diện quản lý các transaction nhất quán có thể mở rộng (Ví dụ như sử dụng một cơ sỏ dữ liệu).
Các dự án của spring. Spring MVC được thiết kế dành cho việc xây dựng các ứng dụng nền tảng web 3. Cung cấp các cơ chế xác thực và phân quyền cho ứng dụng của bạn 3. Spring Boot là một trong dự án nằm trong hệ thống của spring framework nó giúp bạn xây dựng một ứng dụng web nhanh hơn và ít config nhất có thể.
Dự án này giúp chúng ta dễ dàng tạo các lịch trình và tiến trình cho các công việc xử lý theo mẻ. Dự án sẽ kết nối ứng dụng của bạn với các API bên thứ ba của FB, Twitter, Linkedlin… - Ngoài ra spring framework còn có rất nhiều các dự án khác như là: + Spring cloud + Spring Mobile 9 do an + Spring for Android + Spring session 3. Hướng dẫn cài đặt spring vào dự án java. Đối với mỗi dự án cụ thể thì có một cách config nhất định vì thế bạn có thể tham khảo tại đây để biết rõ hơn về cách sử dụng cụ thể.
TỔNG QUAN VỀ REACTJS. Reactjs là gì? React là thư viện JavaScript phổ biến nhất để xây dựng giao diện người dùng (UI). Nó cho tốc độ phản hồi tuyệt vời khi user nhập liệu bằng cách sử dụng phương pháp mới để render trang web. Một trong những điểm hấp dẫn của React là thư viện này không chỉ hoạt động trên phía client, mà còn được render trên server và có thể kết nối với nhau.
React so sánh sự thay đổi giữa các giá trị của lần render này với lần render trước và cập nhật ít thay đổi nhất trên DOM. Các khái niệm trong Reactjs. Virtual DOM: Công nghệ DOM ảo giúp tăng hiệu năng cho ứng dụng. Việc chỉ node gốc mới có trạng thái và khi nó thay đổi sẽ tái cấu trúc lại toàn bộ, đồng nghĩa với việc DOM tree cũng sẽ phải thay đổi một phần, điều này sẽ ảnh hưởng đến tốc độ xử lý.
React JS sử dụng Virtual DOM (DOM ảo) để cải thiện vấn đề này.