feat: 가상화 문서들 추가
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
- generic [ref=f3e3]:
|
||||
- link "본문으로 건너뛰기" [ref=f3e4] [cursor=pointer]:
|
||||
- /url: "#main-content"
|
||||
- banner [ref=f3e5]:
|
||||
- generic [ref=f3e6]:
|
||||
- link "TechLog Studio" [ref=f3e7] [cursor=pointer]:
|
||||
- /url: /studio
|
||||
- text: TechLog
|
||||
- generic [ref=f3e8]: Studio
|
||||
- navigation "Studio 주 탐색" [ref=f3e10]:
|
||||
- link "작업본" [ref=f3e11] [cursor=pointer]:
|
||||
- /url: /studio/documents
|
||||
- link "게시 기록" [ref=f3e12] [cursor=pointer]:
|
||||
- /url: /studio/publications
|
||||
- link "새 문서" [ref=f3e13] [cursor=pointer]:
|
||||
- /url: /studio/documents/new
|
||||
- link "주제·프로젝트" [ref=f3e14] [cursor=pointer]:
|
||||
- /url: /studio/taxonomy
|
||||
- link "릴리즈" [ref=f3e15] [cursor=pointer]:
|
||||
- /url: /studio/releases
|
||||
- link "공개 사이트 보기" [ref=f3e16] [cursor=pointer]:
|
||||
- /url: /
|
||||
- button "로그아웃" [ref=f3e17]
|
||||
- main [ref=f3e18]:
|
||||
- generic [ref=f3e19]:
|
||||
- generic [ref=f3e20]:
|
||||
- generic [ref=f3e21]:
|
||||
- paragraph [ref=f3e22]: WORKSPACE
|
||||
- heading "작업 흐름" [level=1] [ref=f3e23]
|
||||
- paragraph [ref=f3e24]: 작성 중인 기록을 이어서 정리하고 검증·게시 흐름으로 연결합니다.
|
||||
- link "새 문서" [ref=f3e25] [cursor=pointer]:
|
||||
- /url: /studio/documents/new
|
||||
- region "Studio 요약" [ref=f3e26]:
|
||||
- generic [ref=f3e27]:
|
||||
- generic [ref=f3e28]: 전체 작업본
|
||||
- strong [ref=f3e29]: "47"
|
||||
- generic [ref=f3e30]:
|
||||
- generic [ref=f3e31]: 검증할 기록
|
||||
- strong [ref=f3e32]: "5"
|
||||
- generic [ref=f3e33]:
|
||||
- generic [ref=f3e34]: 게시 준비
|
||||
- strong [ref=f3e35]: "0"
|
||||
- generic [ref=f3e36]:
|
||||
- generic [ref=f3e37]: 게시 기록
|
||||
- strong [ref=f3e38]: "21"
|
||||
- generic [ref=f3e39]:
|
||||
- generic [ref=f3e40]:
|
||||
- heading "이어서 작성" [level=2] [ref=f3e41]
|
||||
- link "전체 보기" [ref=f3e42] [cursor=pointer]:
|
||||
- /url: /studio/documents
|
||||
- paragraph [ref=f3e44]: 이어서 작성할 문서가 없습니다.
|
||||
- generic [ref=f3e45]:
|
||||
- generic [ref=f3e46]:
|
||||
- heading "검증과 미리보기" [level=2] [ref=f3e47]
|
||||
- link "전체 보기" [ref=f3e48] [cursor=pointer]:
|
||||
- /url: /studio/documents
|
||||
- generic [ref=f3e49]:
|
||||
- article [ref=f3e50]:
|
||||
- paragraph [ref=f3e51]: 검증 기록
|
||||
- generic [ref=f3e52]:
|
||||
- heading [level=3] [ref=f3e53]:
|
||||
- link "Forward-Auth에서 Client가 보낸 Identity Header를 신뢰하면 안 되는 이유" [ref=f3e54] [cursor=pointer]:
|
||||
- /url: /studio/documents/a0e1cc05-92b3-4dac-bce1-513ab8cd862b/edit
|
||||
- paragraph [ref=f3e55]: KeyCloak Patterns · 검증하기
|
||||
- time [ref=f3e56]: 2026. 9. 7.
|
||||
- article [ref=f3e57]:
|
||||
- paragraph [ref=f3e58]: 검증 기록
|
||||
- generic [ref=f3e59]:
|
||||
- heading [level=3] [ref=f3e60]:
|
||||
- link "Browser Token을 없애면서 BFF에 Session과 CSRF 책임이 생긴 과정" [ref=f3e61] [cursor=pointer]:
|
||||
- /url: /studio/documents/d85bd6af-7599-4ef7-9407-6609927d5b5c/edit
|
||||
- paragraph [ref=f3e62]: KeyCloak Patterns · 검증하기
|
||||
- time [ref=f3e63]: 2026. 9. 7.
|
||||
- article [ref=f3e64]:
|
||||
- paragraph [ref=f3e65]: 검증 기록
|
||||
- generic [ref=f3e66]:
|
||||
- heading [level=3] [ref=f3e67]:
|
||||
- link "Refresh Token 관리만 서버로 이전, Access Token은 여전히 Browser에 노출" [ref=f3e68] [cursor=pointer]:
|
||||
- /url: /studio/documents/488ce49b-afa4-42a5-a2ce-de2e0653cd82/edit
|
||||
- paragraph [ref=f3e69]: KeyCloak Patterns · 검증하기
|
||||
- time [ref=f3e70]: 2026. 9. 7.
|
||||
- article [ref=f3e71]:
|
||||
- paragraph [ref=f3e72]: 검증 기록
|
||||
- generic [ref=f3e73]:
|
||||
- heading [level=3] [ref=f3e74]:
|
||||
- link "SPA에서 OAuth Token을 JavaScript Memory에 보관한 경우" [ref=f3e75] [cursor=pointer]:
|
||||
- /url: /studio/documents/bf675775-4f3e-4744-8014-f0efff51422a/edit
|
||||
- paragraph [ref=f3e76]: KeyCloak Patterns · 검증하기
|
||||
- time [ref=f3e77]: 2026. 9. 7.
|
||||
- article [ref=f3e78]:
|
||||
- paragraph [ref=f3e79]: 열린 질문
|
||||
- generic [ref=f3e80]:
|
||||
- heading [level=3] [ref=f3e81]:
|
||||
- link "ANALYZE 이후 Cardinality Estimate는 어떻게 달라지는가" [ref=f3e82] [cursor=pointer]:
|
||||
- /url: /studio/documents/e1e0e2a0-c6b6-45bf-be42-f697ba5e2fff/edit
|
||||
- paragraph [ref=f3e83]: Liner N + 1문제 · 검증하기
|
||||
- time [ref=f3e84]: 2026. 9. 4.
|
||||
- generic [ref=f3e85]:
|
||||
- generic [ref=f3e86]:
|
||||
- heading "게시 준비" [level=2] [ref=f3e87]
|
||||
- link "전체 보기" [ref=f3e88] [cursor=pointer]:
|
||||
- /url: /studio/documents
|
||||
- paragraph [ref=f3e90]: 게시 준비가 끝난 문서가 없습니다.
|
||||
- region [ref=f3e91]:
|
||||
- generic [ref=f3e92]:
|
||||
- paragraph [ref=f3e93]: PUBLIC HOME
|
||||
- heading "지금 집중하는 것" [level=2] [ref=f3e94]
|
||||
- paragraph [ref=f3e95]: 공개 홈 맨 위 영역입니다. 셋 다 비워 두면 그 영역은 나타나지 않습니다.
|
||||
- generic [ref=f3e96]:
|
||||
- generic [ref=f3e97]:
|
||||
- generic [ref=f3e98]:
|
||||
- generic [ref=f3e99]: 현재 작업 (프로젝트)
|
||||
- combobox "현재 작업 (프로젝트) 단계·현재 목표·다음 작업이 카드에 함께 나옵니다." [ref=f3e100]:
|
||||
- option "고르지 않음"
|
||||
- option "Liner N + 1문제"
|
||||
- option "Backend Clean Architecture"
|
||||
- option "KeyCloak Patterns" [selected]
|
||||
- generic [ref=f3e101]: 단계·현재 목표·다음 작업이 카드에 함께 나옵니다.
|
||||
- generic [ref=f3e102]:
|
||||
- generic [ref=f3e103]: 열린 질문
|
||||
- combobox "열린 질문" [ref=f3e104]:
|
||||
- option "고르지 않음"
|
||||
- option "Forward-Auth 구조에서 Application Authorization을 어디까지 Edge에 둘 것인가"
|
||||
- option "BFF의 Session과 OAuth2AuthorizedClient를 어디에 저장할 것인가" [selected]
|
||||
- option "서버 세션 기반 인증 구조는 다중 인스턴스에서 어떻게 운영할 것인가"
|
||||
- option "Refresh Token Rotation과 다중 Replica 경쟁을 어떻게 처리할 것인가"
|
||||
- generic [ref=f3e105]:
|
||||
- generic [ref=f3e106]: 최근 결정
|
||||
- combobox "최근 결정" [ref=f3e107]:
|
||||
- option "고르지 않음"
|
||||
- option "브라우저에 OAuth token을 노출하지 않으면서 애플리케이션이 Resource Server 호출을 중계하고 조합해야 하는 경우, BFF가 authorization code 교환과 token 보관, downstream API 호출을 소유한다. 브라우저에는 애플리케이션 session만 제공한다." [selected]
|
||||
- option "외부 IdP 연동은 별도의 인증 구조가 아니다. Google과 같은 외부 IDP는 사용자의 인증을 담당하고, Keycloak은 그 인증 결과를 받아 애플리케이션이 신뢰할 수있는 토큰을 발급한다. SPA, Mediator, BFF, OAuth2-proxy와 같은 4가지 구조는 이렇게 발급된 토큰이나 세션을 애플리케이션에서 어디까지 노출하고 관리할지를 구분한다."
|
||||
- generic [ref=f3e108]:
|
||||
- button "홈 설정 저장" [ref=f3e109]
|
||||
- paragraph [ref=f3e110]:
|
||||
- text: 저장하면 공개 홈에 바로 반영됩니다.
|
||||
- link "주제·프로젝트" [ref=f3e111] [cursor=pointer]:
|
||||
- /url: /studio/taxonomy
|
||||
- text: 에서 프로젝트를 만들고 게시할 수 있습니다.
|
||||
- generic [ref=f3e112]:
|
||||
- generic [ref=f3e113]:
|
||||
- heading "최근 게시" [level=2] [ref=f3e114]
|
||||
- link "게시 기록 보기" [ref=f3e115] [cursor=pointer]:
|
||||
- /url: /studio/publications
|
||||
- generic [ref=f3e116]:
|
||||
- article [ref=f3e117]:
|
||||
- paragraph [ref=f3e118]: 게시
|
||||
- generic [ref=f3e119]:
|
||||
- heading "Collection Fetch Join Pagination의 In-memory Paging" [level=3] [ref=f3e120]
|
||||
- paragraph [ref=f3e121]: Liner N + 1문제
|
||||
- time [ref=f3e122]: 2026. 9. 1.
|
||||
- article [ref=f3e123]:
|
||||
- paragraph [ref=f3e124]: 게시
|
||||
- generic [ref=f3e125]:
|
||||
- heading "Collection Fetch Join으로 N+1을 해결하다 만난 MultiBag예외와 행 폭증 문제" [level=3] [ref=f3e126]
|
||||
- paragraph [ref=f3e127]: Liner N + 1문제
|
||||
- time [ref=f3e128]: 2026. 9. 1.
|
||||
- article [ref=f3e129]:
|
||||
- paragraph [ref=f3e130]: 게시
|
||||
- generic [ref=f3e131]:
|
||||
- heading "Fetch 타입이 아닌 조회 방식으로 인한 N+1" [level=3] [ref=f3e132]
|
||||
- paragraph [ref=f3e133]: Liner N + 1문제
|
||||
- time [ref=f3e134]: 2026. 9. 1.
|
||||
- article [ref=f3e135]:
|
||||
- paragraph [ref=f3e136]: 게시
|
||||
- generic [ref=f3e137]:
|
||||
- heading "외부 IdP Brokering의 동작" [level=3] [ref=f3e138]
|
||||
- paragraph [ref=f3e139]: KeyCloak Patterns
|
||||
- time [ref=f3e140]: 2026. 9. 1.
|
||||
- article [ref=f3e141]:
|
||||
- paragraph [ref=f3e142]: 게시
|
||||
- generic [ref=f3e143]:
|
||||
- heading "BFF가 OAuth Token을 관리하는 조건" [level=3] [ref=f3e144]
|
||||
- paragraph [ref=f3e145]: KeyCloak Patterns
|
||||
- time [ref=f3e146]: 2026. 8. 31.
|
||||
- paragraph [ref=f3e147]
|
||||
Reference in New Issue
Block a user