feat(b0): B-0 을 주입부터 원상복구까지 끝까지 밟는다 — setup 35편 완주
남아 있던 한 편이다. keycloak-pattern 에 이 실험과 무관한 변경이 39개(미추적 3개 더) 있어 따로 떼어낸 작업 트리에서 파일 넷을 고치고 이미지를 구워 두 노드에 넣었다. 원래 작업 트리는 한 글자도 안 바뀌었다. 자동구성이 고른 것 - 빈 321개 — 이 편이 예측한 숫자와 같다 - authorizedClientService -> InMemoryOAuth2AuthorizedClientService - SessionRepository 빈이 하나도 없다. Spring Session 이 아예 안 걸렸고 세션을 톰캣이 자기 메모리의 HttpSession 에 직접 들고 있다 - 타입에 Redis 나 Jdbc 가 든 빈 0개 로그인이 replica 개수에서 갈린다 - 원 가이드는 브라우저로 한 번 해 보라고 적는데 그러면 한 번의 결과만 남는다. 쿠키 병을 쓰는 curl 로 같은 흐름을 여섯 번씩 돌려 양쪽을 같은 수로 견줬다 - replica 2 — 여섯 번 다 /login?error - replica 1 — 여섯 번 다 200. 이쪽이 대조군이라, 거기서도 실패했으면 가설이 아니라 시험 방법을 의심해야 한다 - 토큰 경계는 원래 실행과 한 글자도 다르지 않았다 원상복구를 같은 명령으로 확인했다 - 빈 321 → 437, InMemory → Jdbc, Redis/Jdbc 빈 0 → 58, Redis 세션 키 6 - replica 2 에서 로그인이 다시 되는 것이 복구 판정이다 그리고 ⑤ 의 `git diff --stat` 점검은 작업 트리가 깨끗할 때만 성립한다는 것을 적었다. git worktree 로 떼어내면 그 점검이 다시 살아난다. 관문: check_body PASS · check_prose error 0 · check_evidence 문제 없음 · verify-tech-log-tree error 0 · verify-project-layout error 0 · 코드펜스 전수 0건 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
bbd87dc9ab
commit
7661f08d58
@@ -13729,8 +13729,8 @@ code=200 size=155395
|
||||
설정이 바뀌면 다시 막힐 수 있다. 다만 `Bad Gateway` 를 「이 주소는 원래 밖에서 안 된다」로
|
||||
읽지는 않는다.
|
||||
|
||||
**B-0 의 주입은 2026-09-17 에 1 절(파일 넷 편집)과 2 절의 빌드까지 밟았다**
|
||||
(observed). 두 노드에 이미지를 밀어 넣는 단계부터는 안 밟았다(unknown).
|
||||
**B-0 의 주입은 2026-09-17 에 끝까지 다시 밟았다**(observed) — 파일 넷 편집·빌드부터
|
||||
배포·관찰·원상복구까지.
|
||||
|
||||
**★ ⑤ 의 `git diff --stat` 점검은 작업 트리가 깨끗할 때만 성립한다**(2026-09-17,
|
||||
observed). 그 줄은 「네 파일만 나오는가」로 덜 지운 것을 잡으려는 것인데,
|
||||
@@ -13762,6 +13762,41 @@ exit=0
|
||||
replica 2 로 로그인하면 **성공한다.** B-0 은 같은 조건에서 실패한다고 적으므로,
|
||||
두 편을 가르는 것이 세션 저장소 하나임이 반대편에서 확인된다.
|
||||
|
||||
자동구성이 고른 것은 이렇다(observed). 빈이 321개로 이 편이 예측한 숫자와 같고,
|
||||
`SessionRepository` 빈은 하나도 없다.
|
||||
|
||||
```text
|
||||
빈 개수: 321
|
||||
authorizedClientService -> org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService
|
||||
OAuth2AuthorizedClientManager -> org.springframework.security.oauth2.client.web.DefaultOAuth2AuthorizedClientManager
|
||||
authorizedClientRepository -> org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository
|
||||
SessionRepository 계열 -> 없다
|
||||
타입에 Redis 나 Jdbc 가 든 빈 -> 없다
|
||||
```
|
||||
|
||||
로그인은 replica 개수에서 갈렸다. 쿠키 병을 쓰는 `curl` 로 같은 흐름을 여섯 번씩
|
||||
돌려 양쪽을 같은 수로 견켜 봤다.
|
||||
|
||||
```text
|
||||
replica 2 — 여섯 번 다 https://app1.hyeonworks.com/login?error 200
|
||||
replica 1 — 여섯 번 다 https://app1.hyeonworks.com/ 200
|
||||
```
|
||||
|
||||
한 번만 치면 replica 2 에서 우연히 같은 파드로 가 성공할 수도 있고, 그러면 반대로
|
||||
읽힌다. replica 1 쪽은 대조군이다 — 거기서도 실패했으면 가설이 아니라 시험
|
||||
방법을 의심해야 한다. 토큰 경계는 원래 실행과 한 글자도 다르지 않았다.
|
||||
|
||||
원상복구도 같은 명령으로 확인했다.
|
||||
|
||||
| 재본 값 | B-0 | 복구 뒤 |
|
||||
|---|---|---|
|
||||
| 빈 개수 | `321` | `437` |
|
||||
| `authorizedClientService` | `InMemoryOAuth2AuthorizedClientService` | `JdbcOAuth2AuthorizedClientService` |
|
||||
| 타입에 Redis 나 Jdbc 가 든 빈 | `0` | `58` |
|
||||
| replica 2 로그인 6회 | 6번 다 `/login?error` | 6번 다 `200` |
|
||||
| Redis 세션 키 | — | `6` |
|
||||
|
||||
|
||||
그래서 파드 안에서 직접 받는다. **alpine 기반 JRE 이미지에는 `wget` 이 있다** —
|
||||
Keycloak 이미지와 다른 점이다.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user