diff --git a/00_Philosophy/01_PRINCIPLES/Network_Principles.md b/00_Philosophy/01_PRINCIPLES/Network_Principles.md index 7891d6e..c8ef5f9 100644 --- a/00_Philosophy/01_PRINCIPLES/Network_Principles.md +++ b/00_Philosophy/01_PRINCIPLES/Network_Principles.md @@ -1,35 +1,25 @@ # Network Principles -## 1. Access Is a Contract -- 네트워크 접근은 우연히 열려 있는 상태가 아니라 명시적으로 유지되는 계약이다. -- 서비스 의존 경로는 출발지, 목적지, 포트, 프로토콜 단위로 설명 가능해야 한다. +## 1. Network Facts Belong to Structure +- 23은 제어면, 24는 실행면이라는 역할 분리가 네트워크 경로에도 그대로 드러나야 한다. +- 실행면이 제어면의 DB, 인증, 게이트웨이, 그래프에 의존한다면 그 경로는 문서와 설정에서 같은 그림으로 설명 가능해야 한다. -## 2. Reachability Before Runtime -- 애플리케이션 오류처럼 보여도 먼저 네트워크 도달 가능성을 확인한다. -- 서비스 기동 실패, 타임아웃, 헬스 불일치는 코드보다 앞서 TCP 경로로 검증한다. +## 2. Old Addresses Are Operational Debt +- 구 IP, 임시 대역, 과거 upstream은 잔존 문자열이 아니라 미래 장애의 원인이다. +- 서버 이전이나 대역 변경 뒤에도 살아남은 주소는 예외가 아니라 SSOT 위반으로 본다. -## 3. Firewall and Listen Address Move Together -- 방화벽 허용과 리슨 주소는 하나의 세트로 다룬다. -- 포트를 허용해도 서비스가 `localhost`에만 리슨하면 외부 실행면에서는 실패로 본다. -- 리슨 주소만 열고 허용 규칙이 없으면 역시 실패로 본다. +## 3. Dependency Ports Are Not Open or Closed in the Abstract +- `5432`, `7687` 같은 의존 포트는 "열려 있다"가 아니라 "누가 어디서 접근할 수 있다"로 판단한다. +- 방화벽 규칙, 리슨 주소, 실제 출발지 기준 접근성이 동시에 맞아야만 연결이 성립한 것으로 본다. -## 4. Dependency Ports Need Source-Aware Rules -- 데이터베이스, 그래프DB, 검색엔진 같은 의존 포트는 출발지 IP와 브리지 대역 기준으로 최소 허용한다. -- 서버 교체, IP 변경, 역할 이동이 생기면 기존 허용 대상을 그대로 믿지 않는다. +## 4. Health Is Not Dependency Truth +- 서비스가 떠 있고 헬스체크가 성공해도 핵심 의존 포트가 실패하면 부분 정상일 뿐이다. +- 운영 판단은 프로세스 생존이 아니라 의존 구조의 진실을 기준으로 내린다. -## 5. Verify From the Real Caller -- 네트워크 검증은 실제 호출 주체에서 한다. -- 호스트에서 열려 있어도, 실제 컨테이너나 원격 실행 서버에서 실패하면 미해결로 본다. -- `host ok`, `container fail`, `remote fail`은 서로 다른 상태로 분리 기록한다. +## 5. Real Callers Close Network Issues +- 네트워크 문제는 설정 변경으로 닫히지 않는다. +- 실제 호출 주체인 원격 서버나 컨테이너에서 재검증되기 전까지는 해결로 판단하지 않는다. -## 6. Health Is Not Dependency Success -- 헬스체크 성공을 모든 의존성 성공으로 해석하지 않는다. -- 앱이 떠 있어도 핵심 의존 포트 timeout이 남아 있으면 부분 성공 상태로 기록한다. - -## 7. Exposure Must Stay Minimal -- 외부 공개 포트는 최소화하고, 의존 포트는 필요한 출발지에만 연다. -- 운영 편의 때문에 `Anywhere` 허용으로 되돌리지 않는다. - -## 8. Closure Requires Remote Proof -- 네트워크 이슈는 설정 변경으로 닫지 않는다. -- 방화벽, 리슨 주소, 실제 원격 TCP 연결, 필요한 경우 프로토콜 핸드셰이크까지 확인해야 닫힘으로 본다. +## 6. Minimal Exposure, Explicit Trust +- 의존 포트는 필요한 출발지에만 연다. +- `Anywhere` 같은 넓은 허용으로 편의를 사지 않고, 실제 실행 구조가 요구하는 신뢰 경계만 남긴다.