전체 글 93

네트워크 지연 원인 분석 (RTT, TTFB, 병목)

클라이언트가 서버로 요청을 보내면 서버에서 클라이언트로 다시 응답을 하게된다. 그 과정속에서 응답 시간이 길어지게 되는 일들이 생겨나게되는걸 네트워크 지연이라고한다. 네트워크 지연이 짧을수록 더욱 빠르게 응답이 온다는것이고 고성능을 의미하게된다. 지연의 종류요청과 응답 속에서의 전달되는 데이터는 패킷이라는 단위로 분리되어 전달된다.해당 패킷은 라우터를 통해 목적지까지 이동을 하게되는데 그 과정 속에서 지연이되는 일들의 종류를 알아보겠다. 처리 지연라우터가 패킷의 데이터를 읽어 오류를 확인하고 그 다음 경로를 결정하는데에 걸리는 지연이다.처리 지연은 굉장히 짧기때문에 사실 거의 없다고 볼수 있다. 큐잉 지연라우터는 한번에 하나의 패킷만 담당할 수 있다.여러개의 패킷이 몰려와도 하나씩 순서대로 다음 경로로..

Network 2026.05.06

CDN 개념과 캐싱 전략

웹 서비스를 운영하다보면 CDN와 캐싱이란 개념을 접하게 된다. 캐싱캐싱은 우리 어느 주소로 접속을 했을때 정적인 콘텐츠(HTML, 이미지, 자바스크립트 파일 등)을 임시로 저장해둔 뒤에동일한 요청을 했을때 다시 서버로 요청을 보내지않고 보관해둔 리소스를 통해 빠르게 제공하는 기술이다. 개개인이라면 그 속도 차이가 미미할수 있겠지만 동시에 몇백만에 접속자들이 동일한 주소로 요청을 보내게 될 경우서버로 요청이 폭주하지 않고 각각 저장되어있는 캐싱을 통해 서버로의 요청을 눈에 띄게 줄여 웹의 성능을 향상 시킬 수 있게된다. 또한 HTTP 헤더를 통해 캐시의 유효시간, 재검증 필요 여부 등을 조절할 수 있다.CDNCDN은 인프라라고 생각하면된다.우리 서비스를 좀 더 글로벌 서비스로 확장하게 될 때 거리가 먼 ..

Network 2026.05.02

로드밸런서 종류 & L4 vs L7 차이

로드 밸런싱이란서버를 운영할때 한꺼번에 많은 트래픽이 몰리게 되었을 때 서버 부하가 되는것을 방지하기 위해 트래픽을 분산해서 여러 서버로 처리하게된다. 이때 이 분산하는 기술을 로드 밸런싱이라고 한다. 흔히 정각에 티켓팅 예매가 시작된다고했을때불과 1초만에 엄청난 트래픽이 한꺼번에 몰리게될 것이다. 이때 서버가 터지지 않고 안정적으로 순차처리될 수 있는것이 로드밸런싱의 기능이다. 로드 밸런서 종류로드 밸러서의 종류는 크게 L4 와 L7 이 있다.각각 OSI 7계층에서 L4는 4계층인 전송계층 L7은 7계층인 응용계층이다. 서버의 요청과 응답을 처리할때 해당 계층에서 로드밸런싱 역할을 수행하게된다. 전송 계층(L4)전송계층에서는 payload를 볼 수 없기 때문에 단순히 앞에 IP주소와 Port만 보..

Network 2026.04.30

DNS 동작 과정 순서

DNS는 도메인을 IP로 변환하거나 그 반대의 역할을 수행하는 시스템이다. 우리가 어느 웹사이트에 방문을 하려면 url 검색창에 주소를 검색해야한다. 하지만 IP는 숫자로 나열되어있으며 내가 접속하려는 사이트의 IP주소를 외우는것은 쉽지않다. 따라서 우리가 쉽게 구분하여 검색할 수 있도록 해주는 시스템이 DNS이다. 예를 들어 네이버에 검색을 할때 보통 url 검색창에 naver.com 으로 검색이 될 것이다. 이걸 도메인 네임 이라고 한다 그 이후 단순히 naver.com 이라는 주소로 이동이 되는것이아니라 DNS 서버에 의해서 해당 도메인 네임이 IP로 바뀌게 되는것이다. DNS의 변환 과정도메인 네임으로 검색하면 DNS 서버에서는 해당 도메인 네임과 맞는 IP를 탐색하게된다. 제일 첫번째로 접..

Network 2026.04.27

CORS(Cross-Origin Resource Sharing)

개발을 하다보면 한번씩 CORS 에러가 발생한다. CORS는 동일하지 않은 출처에서 서버로 요청 시 접근권한을 부여하는 정책이다. 여기서 출처란 우리가 흔히 브라우저에 접속하면 상단에 보이는 url을 출처라고한다. 프로토콜(https) / 호스트(google.com) / 포트(8080)이걸 총 합쳐서 출처라고 부른다. CORS 를 왜 사용할까기본적으로 SOP라는 정책으로 인해 우리는 브라우저에서 요청할때 서버출처와 동일하지않으면 다 차단 당하게 된다. 그 이유는 차단하지않으면 완전히 다른 브라우저에서도 내 서버에 접근이 가능하여 문제가 생길 수 있기때문이다. 그렇다면 동일한 출처 하나만 서버와 연결해야할까? 웬만한 웹사이트는 하나의 출처만으로 운영하진않을것이다. 현재 일하고있는 환경만해도 내가 작업하..

Network 2026.04.23

[OAuth] PKCE 와 Authorization Code 탈취

저번에 OAuth에서 간단히 요약해보았는데OAuth 은 비밀번호 없이도 한 어플리케이션에서 특정 어플리케이션의 권한을 받을 수 있는 프로토콜이다. 하지만 비밀번호 없이 한다고해도 완벽히 안전하다고는 할 순 없다. OAuth에 흐름을 간단히 짚어보며 알아보려고한다. 우리가 흔히 어느 웹 클라이언트에서 소셜 로그인을 누르면 비밀번호나 아이디를 입력하지 않아도즉시 내 정보들을 가져옴과 함께 로그인이 된다. 로그인을 누르는 순간 해당 리소스 서버의 로그인 창이 나오게 될 것이고아이디와 비밀번호를 입력하면 해당 서버의 인증서버로 전달이 될 것이다. 인증을 한 뒤 클라이언트로 인증된 Code를 전달한다.이때 해당 클라이언트 주소를 Redirect URL이라고 한다. 브라우저는 생성된 Code를 클라이언트 서버..

Network 2026.04.23

OAuth(Open Authorization)의 흐름

OAuth란비밀번호를 사용하지 않고 해당 서비스에 특정 권한만 안전하게 위임 받아서 사용할 수 있는 표준 프로토콜이다. 실제로 많은 서비스에서 OAuth을 통해 연동하여 사용하고있다. 예를 들면 내가 A 어플리케이션에서 B 의 달력 기능을 연동해서 보여주고싶다.원래라면 B의 시스템을 연동하기 위해서는 B에 접근할 수 있도록 비밀번호등 정보들이 있다. 하지만 나는 B 서비스 자체에 들어가고싶은게 아닌 B에서 원하는 기능만을 안전하게 위임받아 A 어플리케이션에 넣어야한다. 이러한 연동을 할때 사용되는것이 OAuth이다. 또 하나 예시를 들어보자면가장 흔히 접할 수 있는 예로는 쇼핑몰에서 카카오나 구글 같은 소셜 로그인을 제공하는것도 OAuth 를 활용한 사례이다. 만약 OAuth 가 없다면? 많은 ..

Network 2026.04.21

[아키텍처] Aggregate Root 란 무엇일까

DDD 아키텍처를 공부중 Aggregate Root라는 단어가 나왔다. "강하게 연결된 도메인 객체들을 하나로 묶은 큰 덩어리" 예를 들어 Game이라는 도메인과 Waiting이라는 도메인이 있다. Game은 그 어느것에도 종속되지 않고 독립적으로 존재하는 객체이다.이럴 경우 이 Game 객체를 Aggregate Root 라고 부른다. 그러면 Waiting은 어떨까? Waiting은 Game을 대기하는 객체이기 때문에Game 없이 독립할 수 없는 객체이다. 그렇기 때문에 Waiting은 Game 의 서브 도메인으로 들어가게된다. Game(Aggregate Root) | ㄴ> Waiting | Aggregate ..

아키텍처 2025.11.14

nginx를 통한 로컬환경과 운영환경의 차이

흔히 개발을 할 때 개발용으로 쓰는 로컬과 실제로 배포되어있는 운영환경이 같이 존재한다이 둘의 차이점은 로컬환경은 프론트와 백이 각각 다른 2개의 서버가 있다는것이고운영환경은 하나의 서버이다.둘의 차이점을 더 자세히 알아보았다로컬환경백엔드에서는 기본적으로 다른 서버로의 접속을 차단한다 따라서 로컬에서는 프론트와 백의 서버가 다르기때문에 차단된다이를 임시적으로 막아주기 위해서 CORS 을 통해 프론트 서버의 접근을 허용해주는것이다.이로써 빌드 없이 즉시 병렬적으로 화면과 api쪽을 빠르게 수정하고 테스트하며 개발할 수있다운영환경오늘의 핵심인 운영환경이다운영환경은 아까 말했듯이 하나의 서버가 존재한다.개발서버처럼 두개의 서버로 하면 빠르고 간단하지않나 라고 생각해보기도했었는데그럴경우의 단점은 사용자입장에서 ..

Network 2025.10.22

[ESB] ESB를 왜 사용할까

ESB는 서로 다른 서비스들을 통합하여 서로 공유할 수 있도록 지원하는 아키텍처이다. 즉 A 라는 결제기관과 B라는 금융기관이 있을때 A로 결제를 하면 B에 금융기관을 통해서 나의 계좌에 돈이 빠져나가는것을 볼 수 있다. 이때 A와 B는 서로 시스템 내부구조가 다를텐데 어떻게 연동이 되어서 하나의 서비스가 이루어질까? 의문이 드는데 이런것을 가능하게 하도록 중간에서 변환작업을 처리해주는 것이 ESB이다. 굳이 ESB를 사용해야할까? ESB는 표준화된 인터페이스 설계와 보안정책을 준수하며 설계를 한다.따라서 지켜야할 규칙등이 많기 때문에 초기 설계와 구축이 시간이 많이 들어간다. 또 이쯤에서 드는 의문은 굳이 ESB를 사용하여 연결을 해야할까? 라는 생각이 들 수 있다. 사실 A가 B의 내부구조를 알..

ESB 2025.08.18