Factor | Giải thích | |
---|---|---|
1 | Code Base | Code base duy nhất cho mỗi microservice, lưu trữ trong repository. Sử dụng version control và có thể được triển khai cho nhiều môi trường (QA, Staging, Production). |
2 | Dependencies | Mỗi microservice sẽ cô lập và đóng gói với các dependencies của riêng nó, bao gồm các thay đổi mà không ảnh hưởng đến toàn bộ hệ thống. |
3 | Configurations | Thông tin các config được tách biệt khỏi microservice và lưu trữ bên ngoài thông qua một công cụ quản lý không liên quan gì tới code trong microservice. |
4 | Backing Services | Thành phần tài nguyên hỗ trợ cho microservice (data stores, caches, message brokers) phải được expose qua một addressable URL; tách được thành phần này ra khỏi ứng dụng, cho phép nó có thể hoán đổi cho nhau. |
5 | Build, Release, Run | Mỗi phiên bản release phải được phân tách qua các giai đoạn build, release, và run; mỗi version phải được đánh tag và hỗ trợ khả năng rollback khi cần. Áp dụng CI/CD để giải quyết yếu tố này. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
job "datastores" { | |
datacenters = ["dc1"] | |
type = "service" | |
group "elasticsearch" { | |
count = 1 | |
// khai báo volume | |
// cái này sẽ khởi tạo trong phần install nomad,consul ansible | |
// file host_vars/node-1 |
New Factor | Giải thích | |
---|---|---|
13 | API First | Triển khai ứng dụng như một dịch vụ, hãy giải sử app được sử dụng bởi front-end client, gateway, third party services, etc. |
14 | Telemetry | Đảm bảo thiết kế hệ thống bao gồm việc thu thập dữ liệu giám sát, health/system data, etc. |
15 | Authentication/ Authorization | Nên thực hiện xác thực danh tính ngay từ ban đầu, sử dụng RBAC (role-based access control). |
Tasks | Giải thích |
---|---|
Scheduling | Tự động lập lịch để chạy các container trên node phù hợp. |
Affinity/anti-affinity | Xác định các điều kiện, chính sách chạy cho container, xác định mối quan hệ giữa các container. |
Health monitoring | Tự động phát hiện các container bị lỗi; Thực hiện stop, restart hay xoá và tạo mới container. |
Failover | Tự động phân bổ lại các container tạo mới bị thất bại trên một node phù hợp hơn. |
Scaling | Tự động thêm hoặc xóa phiên bản container để đáp ứng nhu cầu sử dụng. |
Networking | Quản lý network overlay cho kết nối giữa các container. |
Service Discovery | Cho phép container có thể tìm thấy, xác định vị trí container khác. |
Rolling Upgrades | Triển khai upgrade hệ thống với zero downtime. Tự động khôi phục các thay đổi khi có vấn đề. |
Message Base | Data Pipeline |
---|---|
RabitMQ | Kafka |
ActiveMQ | Kinesis |
SQS | RocketMQ |
ZeroMQ | |
MSMQ | |
IronMQ | |
Redis Pub/sub |
Message Base | Data Pipeline |
---|---|
Lưu trạng thái của các consumer nhằm đảm bảo tất cả các consumer đều nhận được message từ topic mà đã subscribe |
Không lưu trạng thái của consumer . |
Sau khi tất cả các consumer nhận được message thì message đó sẽ bị xoá |
Message được xoá sau một khoảng thời gian nhất định |
Khi có một message mới, consumer chỉ có thể lấy được duy nhất một message đó |
Khi có message mới, consumer có thể tuỳ ý lựa chọn lấy về một danh sách các message |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// $ 6g echo.go && 6l -o echo echo.6 | |
// $ ./echo | |
// | |
// ~ in another terminal ~ | |
// | |
// $ nc localhost 3540 | |
package main | |
import ( |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
job "http-echo" { | |
datacenters = ["dc1"] | |
group "echo" { | |
count = 1 | |
task "server" { | |
driver = "docker" | |
config { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
APPLICATION=${APPLICATION:-app} | |
REPOSITORY_NAME=${REPOSITORY_NAME:-empty} | |
TAG_NAME=${TAG_NAME:-empty} | |
KUSTOMIZE_ENV=${KUSTOMIZE_ENV:-empty} | |
KUSTOMIZE_VARIANT=${KUSTOMIZE_VARIANT:-empty} | |
COMMIT=${CI_COMMIT_SHORT_SHA:-default} | |
# git configuration repository [uri] | |
GIT_CONFIG_URI="https://oauth2:$CI_TOKEN@gitlab.knovel.org/delivery/longclaw/marine-vessel/cloud-mono-repo.git" |
OlderNewer