7월 14일 박재선 멘토님 정리본
문서 정보
- 원본 메모: [[7월 14일 박재선 멘토님]]
- 정리본 작성일: 2026-07-14
- 멘토링 일자: 2026-07-14
- 멘토: 박재선 멘토님
- 참석자: 원본에 미기록
- 관련 프로젝트/주제: AWS VPC·Subnet·EC2 실습, IGW와 Route Table, Security Group, Nginx reverse proxy, private API server
- 관련 문서: [[6월 23일 박재선 멘토님 정리본]]
- 상태: 초안
한 줄 결론
AWS에서 서버가 외부와 통신하려면 public IP만으로 충분하지 않으며, IGW 연결 → Route Table 경로 → Security Group 허용 → 서비스 listen이 모두 맞아야 한다. 서비스 구조는 외부에 노출되는 Nginx reverse proxy와 private subnet의 API server를 분리하되, SSH와 키 관리 방식은 실습 편의가 아니라 최소 권한 원칙으로 다시 설계해야 한다.
회의 맥락
- 지난 AWS 네트워크 기초 멘토링에 이어 VPC, public/private subnet, EC2, Nginx를 실제로 구성하며 연결 실패 원인을 단계별로 확인했다.
- 주요 실습 흐름은 public subnet에 Nginx를 두고 private subnet의 API server로 요청을 전달하는 구조였다.
- 접속 실패를 단순히 애플리케이션 문제로 보지 않고, IGW, Route Table, Security Group, public IP, listen port를 차례로 점검하는 관점이 강조되었다.
- 원본은 실습 중 빠르게 기록한 메모이므로, 특정 CIDR과 인스턴스 설정은 확정된 운영 아키텍처가 아니라 예시로 취급한다.
핵심 피드백
| 영역 | 멘토 피드백 | 해석 | 우선순위 |
|---|---|---|---|
| VPC/Subnet | VPC를 public subnet과 private subnet으로 나누고 역할을 구분한다. | 외부 진입점과 내부 애플리케이션을 분리하면 노출 범위와 운영 책임이 명확해진다. | High |
| 네트워크 경로 | VPC에 IGW를 연결하고, public subnet이 사용하는 Route Table에 인터넷 경로를 추가해야 외부 통신이 가능하다. | public IP 또는 열린 포트 하나만 확인하지 말고 전체 네트워크 경로를 함께 점검해야 한다. | High |
| Security Group | 서비스가 listen 중이어도 해당 포트의 inbound 규칙이 없으면 외부에서 접근할 수 없다. | SSH, HTTP, HTTPS, API 포트를 용도별로 최소 허용해야 한다. | High |
| Nginx | Nginx는 외부 요청을 내부 API server로 전달하는 reverse proxy 역할을 한다. | public Nginx를 단일 진입점으로 두고 API server는 private 영역에 두는 구성을 검토할 수 있다. | High |
| Private API | API server는 private subnet에 두고 public 진입점을 통해 접근하도록 구성한다. | API server에 public IP를 직접 부여하지 않는 구조가 기본 후보가 된다. | High |
| CIDR | VPC와 subnet의 IP 대역을 CIDR로 설계하며 /32는 단일 IP를 가리킨다. |
향후 환경과 AZ를 늘릴 수 있도록 대역 중복과 주소 여유를 사전에 확인해야 한다. | Medium |
| 가용성 | RDS와 subnet을 설계할 때 AZ 구성을 함께 고려해야 한다. | 데이터베이스 고가용성이 필요해지면 다중 AZ와 subnet group을 별도로 설계한다. | Medium |
| 운영 분리 | VPC 또는 네트워크 경계를 나누면 개발·운영 리소스를 혼동해 잘못 변경할 위험을 줄일 수 있다. | 환경 분리는 보안뿐 아니라 운영 실수의 범위를 제한하는 수단이다. | Medium |
| EC2 | 인스턴스 아키텍처로 x86과 Arm을 선택할 수 있고 Arm 계열이 비용 면에서 유리할 수 있다. | 실제 선택은 이미지·라이브러리 호환성과 실측 비용을 함께 비교한 뒤 결정한다. | Low |
| 장애 진단 | nmap 등을 이용해 포트가 filtered인지 open인지 확인할 수 있다. |
네트워크 계층과 애플리케이션 계층을 분리해서 진단하는 체크리스트가 필요하다. | Medium |
| 설정 관리 | Nginx 설정 파일을 변경하기 전에 백업한다. | 운영 설정은 변경 전 원본 보존, 변경 이력, 검증, 롤백 절차를 갖춰야 한다. | Medium |
결정 사항
-
이번 실습의 기본 구조는
public Nginx reverse proxy → private API server로 이해한다.- 근거: Nginx는 public subnet의 외부 진입점이고 API server는 private 영역에 두는 흐름으로 실습했다.
- 영향: 실제 인프라 초안에서도 외부 노출 컴포넌트와 내부 애플리케이션 경계를 먼저 구분한다.
-
연결 문제는 다음 순서로 점검한다.
- 근거: IGW 미연결, Route Table 미설정, Security Group 포트 누락이 각각 실제 실패 원인으로 등장했다.
- 영향:
public IP → IGW → route → security group → process listen → reverse proxy upstream순서의 진단 체크리스트를 사용한다.
-
특정 CIDR, EC2 OS, 고정 IP 사용 여부는 아직 운영 결정으로 확정하지 않는다.
- 근거: 원본의
10.1.0.0/16,10.1.7.0/24, Amazon Linux/Ubuntu, public IP 설정은 실습 예시다. - 영향: 실제 요구사항과 비용을 확인한 뒤 별도 인프라 문서에서 결정한다.
- 근거: 원본의
보류 사항
-
Elastic IP 또는 다른 고정 진입점 사용 여부
- 이유: 자동 할당 public IP는 인스턴스 재시작 시 바뀔 수 있지만, 고정 IP와 관련 리소스에는 비용 정책을 확인해야 한다.
- 다시 판단할 조건: 운영 도메인, TLS, 배포 방식과 예상 가동 시간이 정해진 뒤.
-
Bastion host 사용 여부
- 이유: private server 관리 경로가 필요하지만 Bastion 운영 비용과 키 관리 부담이 생긴다.
- 다시 판단할 조건: AWS Systems Manager Session Manager, VPN/Tailscale, Bastion을 보안·운영성·비용으로 비교한 뒤.
-
다중 AZ 및 RDS 도입 여부
- 이유: 고가용성 필요 수준과 데이터베이스 요구사항이 확정되지 않았다.
- 다시 판단할 조건: 서비스 가용성 목표와 데이터 저장 구조가 정해진 뒤.
-
x86과 Arm 인스턴스 선택
- 이유: 원본에는 Arm의 비용 장점이 언급됐지만 실제 워크로드 호환성과 가격은 검증되지 않았다.
- 다시 판단할 조건: 배포 이미지와 의존성을 두 아키텍처에서 검증하고 예상 비용을 비교한 뒤.
액션 아이템
| 작업 | 담당 | 산출물 | 기한 | 상태 |
|---|---|---|---|---|
| AWS 요청 경로 구성도 작성 | 팀 | Client, IGW, Route Table, Security Group, Nginx, private API 흐름도 | 미정 | Todo |
| public/private subnet 라우팅 검증 | 인프라 담당 | subnet별 Route Table 연결과 인터넷 경로 점검 기록 | 미정 | Todo |
| Security Group 최소 권한화 | 인프라 담당 | SSH 관리 대역, HTTP/HTTPS 진입, Nginx→API 허용 규칙표 | 운영 전 | Todo |
| private API server 연결 완료 | 인프라 담당 | Nginx upstream 설정과 end-to-end 요청 성공 기록 | 미정 | Todo |
| Nginx 설정 변경 절차 작성 | 인프라 담당 | 백업, nginx -t, reload, rollback 명령을 포함한 체크리스트 |
미정 | Todo |
| 서버 접근 키 관리 방식 재검토 | 팀 | Bastion, Session Manager, VPN/Tailscale 비교 및 선택안 | 운영 전 | Todo |
| 고정 진입점과 TLS 전략 검토 | 팀 | Elastic IP·ALB·도메인·HTTPS 구성 및 비용 비교 | 운영 전 | Todo |
후속 질문
- Nginx가 전달할 private API의 포트는 외부 전체가 아니라 Nginx Security Group에서만 접근하도록 제한할 수 있는가?
- SSH
22포트를Anywhere에 열지 않고 팀원의 고정 IP, VPN 또는 Session Manager로 관리할 수 있는가? - private API server가 패키지 설치나 외부 API 호출을 위해 outbound internet이 필요하다면 NAT 비용을 감수할 것인가?
- 현재 단계에서 Bastion이 필요한가, 아니면 Session Manager나 Tailscale로 관리 경로를 단순화할 수 있는가?
- 운영 진입점은 EC2 public IP, Elastic IP, ALB와 도메인 중 무엇이 적합한가?
- RDS를 도입한다면 어떤 가용성 목표 때문에 다중 AZ가 필요한가?
원문 근거
-
"subnet public, subnet private 으로 구성됨. public : 인터넷에서 직접 인바운드 가능 / private 영역 : 직접 접속 안댐"
- 정리 해석: 외부 진입 리소스와 내부 리소스를 subnet 경계로 분리한다.
- 확실성: 높음
-
"VPC를 만들면 반드시 IGW라는 것을 붙여주어야하는데 안한겁니다."
- 정리 해석: public subnet의 외부 통신을 위해 VPC에 IGW를 연결해야 한다.
- 확실성: 높음
-
"라우팅 테이블이라는게 있어요. vpc안에서 트래픽이 어떻게 도는지에 대한 세팅이에요."
- 정리 해석: IGW 연결뿐 아니라 해당 subnet의 Route Table에 올바른 경로가 있어야 한다.
- 확실성: 높음
-
"서버에떠있는 잘 listen하고있음에도 접속이 안되는이유... 보안그룹에서 허용을 해놨는지"
- 정리 해석: 프로세스 listen 상태와 Security Group 허용 상태를 모두 확인해야 한다.
- 확실성: 높음
-
"여기까지한건 리버스 프록시 띄운거고, api 서버도 띄워야죠."
- 정리 해석: Nginx 진입점과 실제 API server는 별도 구성 요소다.
- 확실성: 높음
-
"나는 설정 파일 바꿀때는 백업 한번 하고 해요."
- 정리 해석: Nginx와 같은 운영 설정은 변경 전 백업과 롤백 가능성을 확보한다.
- 확실성: 높음
정리에서 제외한 내용
- "SSH 22번을 Anywhere로 열어도 된다"는 표현은 실습 편의를 위한 발언 또는 농담일 가능성이 있으며, 운영 보안 원칙과 충돌하므로 권고사항으로 채택하지 않았다.
pem키를scp로 다른 서버에 복사하는 방식은 키 유출 위험이 있으므로 확정된 접근 방식으로 옮기지 않았다.- "Amazon Linux, Ubuntu 모두 Red Hat 계열"이라는 원문은 기술적으로 재확인이 필요해 핵심 내용에서 제외했다.
- Arm 인스턴스가 최대 60% 저렴하다는 수치는 인스턴스 종류와 시점에 따라 달라질 수 있어 정량 근거로 사용하지 않았다.
- IPv6와 비용에 관한 파편은 문맥이 불완전해 결정 근거에서 제외했다.
최종 반영 위치
- 기획 문서: 이번 멘토링에서 직접 결정된 변경 없음
- 모델 레이어: 이번 멘토링에서 직접 결정된 변경 없음
- 메모리 레이어: 서버 백업을 도입할 경우 private storage와 접근 경계 검토
- 앱 레이어: API 호출의 public 진입점과 private backend 경계
- 평가/실험:
nmap,curl, end-to-end 요청을 통한 네트워크 검증 절차 - Linear 이슈: 미등록
다음 업데이트
- private API server와 Nginx upstream 연결이 완료되면 실제 Security Group 규칙과 요청 경로를 반영한다.
- 운영용 접근 방식과 고정 진입점, TLS 구성이 결정되면 보류 사항을 갱신한다.
- 다음 AWS 실습 메모가 생기면 [[6월 23일 박재선 멘토님 정리본]]과 함께 인프라 학습 흐름으로 연결한다.