Dành cho tập đoàn và nhiều thương hiệu
Nhiều công ty, một bản cài đặt, không dùng chung khách hàng
Các tập đoàn thường giải quyết vấn đề này theo hai cách tồi: hoặc năm bản cài đặt riêng biệt với tất cả mọi thứ đều riêng, hoặc một bản cài đặt với lời hứa trang nghiêm rằng ứng dụng luôn lọc đúng. Cách thứ nhất đắt đỏ. Cách thứ hai là một lời hứa, và lời hứa không phải là một mô hình bảo mật.
Nếu bạn vận hành nhiều hơn một công ty — một tập đoàn mẹ có các công ty con, một nhượng quyền thương mại, hai thương hiệu nhắm đến các thị trường khác nhau, một agency và thứ mà agency tách ra — bạn đã biết vấn đề có hình dạng như thế nào. Các thương hiệu chia sẻ con người, công cụ và phòng tài chính. Chúng không chia sẻ khách hàng, và tuyệt đối không được trông như đang chia sẻ.
iKonekt vận hành tất cả chúng từ một bản cài đặt, và sự tách biệt giữa chúng được duy trì bởi cơ sở dữ liệu chứ không phải bởi mã nguồn. Sự khác biệt đó nghe có vẻ học thuật cho đến ngày nó không còn vậy nữa.
Tại sao lớp này quan trọng
Một bộ lọc ở cấp ứng dụng là một câu trong truy vấn. Nó hoạt động chừng nào mọi truy vấn từng được viết đều chứa nó — bao gồm cả truy vấn viết vội vàng, truy vấn viết bởi lập trình viên mới, và truy vấn viết cho một báo cáo vốn chỉ định dùng một lần.
Đẩy ranh giới xuống cơ sở dữ liệu và phép tính bị đảo ngược. Chính sách chạy trên mọi thao tác đọc và mọi thao tác ghi, bên dưới tất cả. Một truy vấn quên chỉ định công ty không trả về các dòng sai; nó trả về không dòng nào. Chế độ lỗi trở thành một màn hình trống và một lập trình viên bối rối — đó chính là chế độ lỗi đúng đắn.
Màn hình trống là một tính năng. Chúng tôi thà giải thích một màn hình trống cho kỹ sư của chính mình còn hơn giải thích danh sách khách hàng cho hai khách hàng không ngờ gặp nhau.
- 1Khách hàng & luồng hội thoạiGiới hạn theo phạm vi. Một nhân viên kinh doanh ở thương hiệu A không thể truy cập của thương hiệu B — do kiến trúc chứ không phải do cấu hình.
- 2Quyền sở hữu khách hàng"Chúng tôi đã có tài khoản khách hàng này" là một khóa được giữ theo từng công ty — để hai thương hiệu có thể cùng khai thác một thị trường mà không va chạm nhau.
- 3Prompt & cài đặtMỗi công ty chỉnh sửa của riêng mình. Nơi duy nhất từng bị dùng chung là một lỗi, và đó là lỗi mà hệ thống này tự hào nhất đã tìm ra.
- 4Chương trình đối tácMột module cho mỗi công ty, không phải một module toàn cục mà tất cả đều thừa kế.
Ranh giới được thực thi bên dưới ứng dụng
Một tập đoàn thực sự được chia sẻ những gì
Sự tách biệt không phải là cô lập vì mục đích cô lập. Những thứ đáng chia sẻ trong một tập đoàn được chia sẻ một cách có chủ ý, và phần lớn là những thứ nhàm chán — và điều đó hoàn toàn đúng, vì những thứ nhàm chán chính là nơi chi phí trùng lặp nằm:
- Một bản cài đặt để vận hành và cập nhật. Một lần triển khai, một bộ thông tin đăng nhập cần chăm sóc, một thứ cần vá lỗi.
- Một đội ngũ, mang những chiếc mũ khác nhau. Một người có thể làm việc ở nhiều hơn một công ty; điều họ không thể làm là nhìn thấy cả hai cùng lúc qua một truy vấn quên hỏi.
- Một tập thói quen. Cách một khách hàng tiềm năng được phân công, cách một ghi chú được viết, cách một công việc trở thành hóa đơn — học một lần, áp dụng ở mọi nơi, giúp việc đưa người mới vào chỉ mất khoảng một buổi sáng.
- Một mối quan hệ với phần còn lại của gia đình. castomAPI bên dưới, cùng một tài khoản, cùng các connector — cấu hình theo từng công ty ở nơi cần thiết.
Câu hỏi mà một tập đoàn luôn hỏi thứ hai
"Chúng ta có thể báo cáo trên tất cả chúng không?" Có — từ góc nhìn riêng của tập đoàn, một cách có chủ đích và rõ ràng, chứ không phải như tác dụng phụ của một ranh giới bị rò rỉ. Sự khác biệt đó là toàn bộ thiết kế: vượt qua ranh giới phải là một hành động ai đó cố ý thực hiện, với thẩm quyền để làm điều đó. Nó không bao giờ là điều một mã định nghĩa lạc có thể làm được một cách vô tình.
Và câu hỏi họ hỏi thứ ba: "chuyện gì xảy ra nếu chúng ta bán một trong các thương hiệu?" Một ranh giới mà cơ sở dữ liệu giữ cũng là ranh giới mà bạn có thể lấy ra một bản sao sạch. Điều đó không phải trùng hợp — sự tách biệt và tính di động là cùng một thuộc tính nhìn từ hai cuộc họp khác nhau.
Dưới sàn nhà
Cụ thể điều gì đang giữ ranh giới
Không phải lời khẳng định, mà là một danh sách. Nếu nhà cung cấp không thể đưa ra danh sách này về sản phẩm của chính họ, điều đó đáng để lưu ý.
26
Các bảng mang theo công ty của chúng, với ràng buộc được ép bật thay vì chỉ có sẵn.
72
Các policy, được viết ra từng cái một để mỗi cái đã được một con người đọc, chứ không được tạo trong một vòng lặp.
942
Các bài kiểm thử, chạy trên một cơ sở dữ liệu được dựng lại từ con số không mỗi khi có gì đó thay đổi.
0
Công ty mặc định. Một yêu cầu không có phạm vi sẽ bị ném lỗi trước khi chạm tới dữ liệu — không có phương án dự phòng nào để quên tắt.

“Năm công ty, năm lần cài đặt, năm hóa đơn từ bạn.”
Một lần cài đặt. Năm ranh giới mà cơ sở dữ liệu giữ.
Chung người, chung thói quen, chung nền tảng — và không một khách hàng nào chung. Vượt qua ranh giới đó phải là điều một con người cố ý làm, không bao giờ là điều một mã định nghĩa làm được một cách vô tình.
Cách sự tách biệt được xây dựng →