Life is unique by how you shape it

Postgres Transpose Rows to Columns

延續上一篇文章 Rbac1 Design | KaiChu, 我們透過 Postgres 中的 CTE (common table expression) recursive query 來查詢有繼承 Role 的有對應的權限

user_id permission

user_idkey
87gb8fKJHGxh2Pz_Gk_R2create:devops
87gb8fKJHGxh2Pz_Gk_R2create:rbac
87gb8fKJHGxh2Pz_Gk_R2create:users
87gb8fKJHGxh2Pz_Gk_R2delete:devops
87gb8fKJHGxh2Pz_Gk_R2delete:rbac
87gb8fKJHGxh2Pz_Gk_R2delete:users
87gb8fKJHGxh2Pz_Gk_R2read:devops
87gb8fKJHGxh2Pz_Gk_R2read:rbac
87gb8fKJHGxh2Pz_Gk_R2read:users
87gb8fKJHGxh2Pz_Gk_R2update:devops
87gb8fKJHGxh2Pz_Gk_R2update:rbac
87gb8fKJHGxh2Pz_Gk_R2update:users
h8Iqlb8Ixc4IltuOoY5QCcreate:devops
h8Iqlb8Ixc4IltuOoY5QCdelete:devops
h8Iqlb8Ixc4IltuOoY5QCread:devops
h8Iqlb8Ixc4IltuOoY5QCupdate:devops
SbZeBSpuy2OdJ0WZ2Z_Qoread:devops
SJ36zw7nRS4lx18dZlCoocreate:users
SJ36zw7nRS4lx18dZlCoodelete:users
SJ36zw7nRS4lx18dZlCooread:users
SJ36zw7nRS4lx18dZlCooupdate:users

user vs resource permission

read:R, write:C, delete:D, update:U

user_iddevopsrbacusers
87gb8fKJHGxh2Pz_Gk_R2CDRUCDRUCDRU
h8Iqlb8Ixc4IltuOoY5QCCDRUNULLNULL
SbZeBSpuy2OdJ0WZ2Z_QoRNULLNULL
SJ36zw7nRS4lx18dZlCooNULLNULLCDRU

透過 postgres 的 Transpose Rows to Columns 可以得到上面一個人眼比較直覺得大表 核心的 sql 就是使用 crosstab 指令, 完整操作請看下方 full sql

...more

Rbac1 Design

權限系統在任何應用程式都是基礎且重要的部份,主要是對不同的人訪問資源進行權限的控制,本篇文章並沒有特別的再說明 Role-Based Access Control, 解釋的文章已經太多了,隨便 Google 都是一堆。最期在公司的專案也是有採用 RBAC 來管控系統的權限,一般的 RBAC0 (最基本的 User - Role - Permission) 的模型大至上可以符合需求,不過在權限配直的時候會有一點重工,所以選擇了有角色繼承的 RBAC1 來進行實作

RBAC1

Postgres Database Schema

...more

GoPherCon 2020 TW: 如何透過 Go-kit 快速搭建微服務架構應用程式實戰

Golang 也因為開源、程式語法的簡潔開始受到程式開發人員的喜好。也因些在搭建微服務架構應用程式的時候有很多選擇,在 Web 框架中就有 Gin, Echo, Beego 等等,每一個 Web 框架都有其不同的特性,而 Go-Kit 是一個微服務開發的工具鏈,本場次將基於 Kuberentes/Istio 透過 Go-kit 搭建微服務架構應用程式實戰中的工程項目進行說明

在第一屆的 GopherCon TW 中分享 如何透過 Go-kit 快速搭建微服務架構應用程式實戰

...more

Gokit microservice demo

小弟在 GDG Devfest 2019 分享過 Build go kit microservices at kubernetes with ease,Gokit 是一個建立 microservice 的 toolkit,Gokit 提出 Transport Endpoint Service 三種概念來幫助開始者進行架構分離,對單一微服務進行架構強制分離或許會增加程式碼的閱讀性,不過對一定規模的微服務來說,一致性的程式架構分離反而會增加多人開發的效率

cage1016/ms-demo

ServiceDescription
addExpose Sum method
tictacExpose Tic/Tac method

cage1016/ms-demo: gokit microservice demo 提供了使用 gokit 建立的 kubernetes/istio 的 manifest, 可以讓使用者快速的練習基於 kubernetes/istio 來搭建 gokit 微服務

...more