10장. 모르면 답답해지는 네트워크 기초네트워크 기초를 모르면서버 장애의 원인이 애플리케이션 코드가 아니라 네트워크 설정에 있을 수 있다.내부 통신에 사용하는 IP와 외부에서 접근할 때 사용하는 IP를 혼동하면 접속 허용 대상을 잘못 지정할 수 있다.서버 개발자가 네트워크를 깊게 알 필요는 없지만, 장애 원인을 찾고 설정 문제를 해결하려면 기본 개념은 알아야 한다.노드, 네트워크, 라우터데이터를 송수신하는 모든 장치를 노드(Node)라고 한다.휴대폰, 노트북, 서버, 네트워크 장비 등이 해당한다.노드가 서로 데이터를 주고받기 위해 연결된 시스템을 네트워크(Network)라고 한다.노드가 네트워크를 통해 전송하는 데이터의 단위를 패킷(Packet)이라고 한다.헤더에는 송수신 정보, 페이로드에는 실제 데이터..
커넥션 풀이랑 스레드 풀, 면접 준비하다가 제대로 정리했다면접 스터디에서 이런 질문을 받았다."톰캣 스레드가 200개인데 커넥션 풀이 10개예요. 요청 200개가 동시에 들어오면 어떻게 되나요?" 커넥션 풀이 뭔지, 스레드 풀이 뭔지는 당연히 안다고 생각했는데 이 질문 앞에서 멈칫했다. 둘을 각각은 알고 있었지만 같이 놓고 생각해본 적이 없었다. 그래서 이참에 제대로 정리했다.풀이 왜 필요한가부터커넥션 풀과 스레드 풀은 이름만 비슷한 게 아니라 해결하려는 문제가 똑같았다.만드는 비용이 비싼 자원을 매번 새로 만들지 말고, 미리 만들어두고 빌려 쓰자는 것이다.DB 커넥션 하나를 새로 만들 때 실제로 뭐가 일어나는지 보면 왜 비싼지 감이 온다.TCP 3-way 핸드셰이크를 하고, DB 프로토콜 핸드셰이크를 ..
짠팟 인프라 개선 방향 — 보안과 확장성현재 단일 EC2 구조에서 발생할 수 있는 위험 요소를 분석하고, 트래픽 증가와 보안 위협에 대응하기 위한 AWS 인프라 개선 방향을 정리합니다.1. 현재 아키텍처 구조현재 짠팟의 전체 서버 흐름은 아래와 같습니다. 현재 짠팟은 VPC 내 Public/Private Subnet이 분리된 구조입니다. EC2(Nginx, Spring Boot Blue/Green, Prometheus+Grafana)는 Public Subnet에, RDS는 Private Subnet에 위치하여 외부 직접 접근이 차단되어 있습니다. 단, EC2는 단일 인스턴스로 운영 중이며 단일 AZ(ap-northeast-2a)에 집중되어 있습니다.2. 현재 구조의 위험 요소현재 짠팟은 모든 것이 EC2..
HTTP vs HTTPS 환경에서의 쿠키 보안 설정 Spring Boot로 인증 시스템을 구현하다 보면, 로컬 개발 환경과 배포 환경에서 쿠키 설정을 다르게 해야 하는 상황을 마주하게 됩니다.이번 글에서는 왜 그래야 하는지, 그리고 쿠키 보안의 전반적인 개념을 정리해보겠습니다.1. 문제 상황: 왜 환경마다 쿠키 설정이 다를까?Spring Boot에서 Refresh Token을 쿠키로 관리할 때, 보통 이런 식으로 환경별 설정을 분리합니다.# application-local.yml (로컬 개발)security: cookie: refresh: secure: false same-site: Lax# application-prod.yml (배포)security: cookie: re..
시스템 디자인의 2번째 핵심 목표 - 성능 신뢰성 이야기를 하면서 기본적인 동작이 잘 되는 시스템을 어떻게 만드는지 그리고 문제 상황에서도 어떻게 오류 없이 작동하도록 하는지에 대해서 알아보았다.시스템이 정확하게 동작을 하더라도 응답 속도가 너무 느리게 되면 사용자 입장에서는 불편함을 느끼고 서비스를 이탈한다.그래서 성능도 중요하게 지켜야 할 목표 중에 하나이다.메신저 서비스에서 메시지를 전송했는데 한 5초 뒤에 상대방에게 도착을 했다면 실시간 대화 가능해야하는 메신저 서비스 특성상 이런 전송 지연은 치명적이다.또 주식매매 서비스에서 사용자가 매도 요청을 한 시점에 바로 매도가 되지 않으면 사용자 입장에서는 금전적인 손실이 일어날 수도 있어서 기능이 빠르게 동작하는 것이 중요하다. 성능의 정의 성능을 ..