diff --git a/00_Philosophy/01_PRINCIPLES/Network_Principles.md b/00_Philosophy/01_PRINCIPLES/Network_Principles.md new file mode 100644 index 0000000..7891d6e --- /dev/null +++ b/00_Philosophy/01_PRINCIPLES/Network_Principles.md @@ -0,0 +1,35 @@ +# Network Principles + +## 1. Access Is a Contract +- 네트워크 접근은 우연히 열려 있는 상태가 아니라 명시적으로 유지되는 계약이다. +- 서비스 의존 경로는 출발지, 목적지, 포트, 프로토콜 단위로 설명 가능해야 한다. + +## 2. Reachability Before Runtime +- 애플리케이션 오류처럼 보여도 먼저 네트워크 도달 가능성을 확인한다. +- 서비스 기동 실패, 타임아웃, 헬스 불일치는 코드보다 앞서 TCP 경로로 검증한다. + +## 3. Firewall and Listen Address Move Together +- 방화벽 허용과 리슨 주소는 하나의 세트로 다룬다. +- 포트를 허용해도 서비스가 `localhost`에만 리슨하면 외부 실행면에서는 실패로 본다. +- 리슨 주소만 열고 허용 규칙이 없으면 역시 실패로 본다. + +## 4. Dependency Ports Need Source-Aware Rules +- 데이터베이스, 그래프DB, 검색엔진 같은 의존 포트는 출발지 IP와 브리지 대역 기준으로 최소 허용한다. +- 서버 교체, IP 변경, 역할 이동이 생기면 기존 허용 대상을 그대로 믿지 않는다. + +## 5. Verify From the Real Caller +- 네트워크 검증은 실제 호출 주체에서 한다. +- 호스트에서 열려 있어도, 실제 컨테이너나 원격 실행 서버에서 실패하면 미해결로 본다. +- `host ok`, `container fail`, `remote fail`은 서로 다른 상태로 분리 기록한다. + +## 6. Health Is Not Dependency Success +- 헬스체크 성공을 모든 의존성 성공으로 해석하지 않는다. +- 앱이 떠 있어도 핵심 의존 포트 timeout이 남아 있으면 부분 성공 상태로 기록한다. + +## 7. Exposure Must Stay Minimal +- 외부 공개 포트는 최소화하고, 의존 포트는 필요한 출발지에만 연다. +- 운영 편의 때문에 `Anywhere` 허용으로 되돌리지 않는다. + +## 8. Closure Requires Remote Proof +- 네트워크 이슈는 설정 변경으로 닫지 않는다. +- 방화벽, 리슨 주소, 실제 원격 TCP 연결, 필요한 경우 프로토콜 핸드셰이크까지 확인해야 닫힘으로 본다. diff --git a/README.md b/README.md index 5576b5a..ee707ed 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,8 @@ 1. [01_Terminology/100_인프라_용어집.md](./01_Terminology/100_인프라_용어집.md) 2. [00_Philosophy/00_IDENTITY/Infra_Project_Identity.md](./00_Philosophy/00_IDENTITY/Infra_Project_Identity.md) 3. [00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md](./00_Philosophy/01_PRINCIPLES/Core_Infrastructure_Principles.md) -4. [00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md](./00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md) -5. [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md) -6. [journey/research/260307_value_기준_인프라철학문서_구조초안.md](./journey/research/260307_value_기준_인프라철학문서_구조초안.md) -7. [journey/README.md](./journey/README.md) +4. [00_Philosophy/01_PRINCIPLES/Network_Principles.md](./00_Philosophy/01_PRINCIPLES/Network_Principles.md) +5. [00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md](./00_Philosophy/02_GUARDRAILS/Operational_Guardrails.md) +6. [02_Architecture/Infrastructure_Project_Structure.md](./02_Architecture/Infrastructure_Project_Structure.md) +7. [journey/research/260307_value_기준_인프라철학문서_구조초안.md](./journey/research/260307_value_기준_인프라철학문서_구조초안.md) +8. [journey/README.md](./journey/README.md)