2025/03 11

프록시와 스케일링: 안정적인 트래픽 처리

트래픽이 몰리는 순간, 시스템은 어떻게 안정성을 유지할까?백엔드 아키텍처에서 핵심이 되는 개념인 프록시, 로드 밸런서, 스케일링 전략을『이것이 취업을 위한 컴퓨터 과학이다』 5-7절 내용을 바탕으로 정리합니다.1. 오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시프록시는 말 그대로 중간에서 통신을 중개하는 서버입니다.하지만 ‘누구를 대신해서’ 요청을 보낼 것인지에 따라 두 가지 종류로 나뉩니다.✅ 포워드 프록시 (Forward Proxy)클라이언트 입장에서 중간 서버내부망 사용자 → 외부 서버 요청 시 사용접근 제어, 캐싱, 보안 우회(우회 접속) 등에 활용ex) 회사 내부에서 외부 웹사이트 접근 시, 포워드 프록시 서버를 거쳐야 하는 경우 Q: 프록시 서버와 VPN의 차이는 무엇인가요?→ 둘 다..

Network 2025.03.26

[3편] 브라우저는 어떻게 나를 기억할까? - HTTP 활용

쿠키부터 HTTPS까지, HTTP 활용 기술1. 개요웹 개발을 하면서 가장 자주 접하게 되는 프로토콜은 HTTP(Hypertext Transfer Protocol) 입니다. 우리는 흔히 이 프로토콜을 통해 데이터를 주고받고 있지만,단순히 텍스트를 요청하고 응답하는 것 외에도,사용자 상태 유지, 콘텐츠 최적화, 보안 통신, 인증 처리 등 매우 다양한 기능을 제공한다는 점은 간과하기 쉽습니다. 이번 글에서는 실전 프로젝트에서 꼭 필요한 다음과 같은 HTTP 활용 기술들을 정리해봅니다.사용자의 로그인 상태를 유지하는 쿠키서버 응답을 효율적으로 재활용하는 캐시클라이언트와 서버가 언어, 포맷을 조율하는 콘텐츠 협상사용자의 신원을 검증하는 인증전송 중 데이터의 보안을 책임지는 HTTPS(보안 통신)2. 쿠키 (Co..

Network 2025.03.26

[2편] HTTP 메서드부터 상태 코드, 주요 헤더까지

1. 개요이번 포스트에서는 HTTP의 핵심 요소인 메서드, 상태 코드, 주요 헤더에 대해 살펴봅니다. REST API 설계, 클라이언트-서버 통신 흐름 파악, 인증 및 보안 처리 등실무 전반에서 자주 마주치는 필수 기초입니다.2. HTTP 메서드 – 요청의 목적을 나타내는 방식HTTP는 클라이언트가 서버에 요청을 보낼 때 무엇을 하고 싶은지를 명시합니다.이는 HTTP 메서드(Method)를 통해 표현됩니다. 메서드설명GET리소스를 조회할 때 사용. URL에 데이터를 포함하고 본문은 없음HEADGET과 같지만 본문 없이 헤더 정보만 요청POST서버에 리소스를 생성할 때 사용. 본문에 데이터 포함PUT리소스를 전체 수정할 때 사용PATCH리소스를 일부 수정할 때 사용DELETE리소스를 삭제할 때 사용✅ 예시..

Network 2025.03.26

[1편] 브라우저는 어떻게 서버를 찾을까? – DNS와 HTTP 메시지 구조까지

1. 들어가며웹 개발을 하다 보면 가장 기초적이면서도 중요한 개념이 바로 HTTP입니다.하지만 그 시작점인 DNS, 그리고 HTTP 메시지의 구조에 대해 정확히 알고 있어야 합니다. 이번 글에서는 다음의 흐름을 따라가며 웹 요청의 여정을 함께 따라가보겠습니다.사용자가 브라우저에 www.example.com을 입력하면,어떻게 서버의 IP를 찾고,어떤 형식의 메시지를 주고받으며,어떻게 웹 페이지가 뜨는지?2. DNS와 URI/URL – 웹 통신의 출발점2-1. 도메인 네임과 DNS컴퓨터는 IP 주소(예: 1.2.3.4)로 통신하지만,우리는 www.example.com 같은 도메인 이름을 사용합니다. 이걸 IP로 바꿔주는 시스템이 바로 DNS (Domain Name System) 입니다. 즉, DNS는 사람이..

Network 2025.03.26

LeetCode 2529. Maximum Count of Positive Integer and Negative Integer -

정렬된 배열에서 양수와 음수 개수 세기 Java 완전탐색 vs 이진탐색완전탐색: O(N) 이진탐색: O(log n) LeetCode의 "Maximum Count of Positive Integer and Negative Integer" 문제를 풀면서 접근 방식에 따른 성능 차이를 체감할 수 있었다. 처음에는 가장 직관적인 방법으로 접근했지만, 문제 조건을 다시 살펴보며 더 효율적인 방법을 발견하는 과정이 흥미로웠다.문제 파악문제는 정렬된 배열에서 양수와 음수의 개수를 세고, 둘 중 더 큰 값을 반환하는 것이었다. 0은 카운트하지 않는다.첫 번째 접근: 브루트포스처음에는 당연하게도 배열을 순회하며 각 요소를 확인하는 방식으로 접근했다. public int maximumCount(int[] nums) { ..

DSA/코딩테스트 2025.03.16

Java NPE(NullPointerException)과 Spring JSpecify 도입

십억 달러 실수에서 Spring의 혁신까지어느날 아침의 악몽회사 채팅방에 빨간 알림이 계속 올라옵니다. 주말 동안 배포한 새 기능에서 사용자들이 "오류가 발생했습니다" 화면을 보고 있다는 보고입니다. 로그를 열어보니 익숙한 그 녀석이 있습니다.java.lang.NullPointerException at com.company.service.UserServiceImpl.processUserPreferences(UserServiceImpl.java:127) at com.company.controller.DashboardController.getUserDashboard(DashboardController.java:56) ... 가슴이 쿵 내려앉습니다. 테스트 환경에서는 멀쩡했는데, 프로덕션에서는..

Lang/Java 2025.03.15

컴퓨터 구조 기초 - 캐시 메모리와 가상 메모리 시스템

캐시(Cache)는 처음에 메인 메모리와 프로세서 간의 중간 계층 메모리를 지칭하기 위해 도입된 용어이다. 현재도 주로 이 의미로 사용되지만, 지역성(Locality) 원리를 활용하여 데이터를 관리하는 모든 저장 장치를 통칭하는 의미로도 확장되어 사용되고 있다. 더보기지역성(Locality) : CPU가 메모리를 접근할 때 특정 패턴이 반복되는 경향을 설명하는 개념으로, 이를 활용하면 데이터를 효율적으로 저장하고, 메모리 접근 비용을 줄여 성능을 향상시킬 수 있다. 시간 지역성(Temporal Locality) : 한 번 접근한 데이터는 곧 다시 접근될 가능성이 높다. 프로그램에서 같은 데이터나 변수를 반복적으로 사용하는 경우가 많기 때문.공간 지역성(Spatial Locality) : 한 번 접근한 데..

알고리즘이란

(출처 - gcfglobal)1. 알고리즘의 정의알고리즘이란, 간단히 말해서 "문제를 해결하기 위한 명확한 절차"를 의미한다. "An Efficient method for solving a problem using a finite sequence of instructions": "유한한 인스트럭션들의 연속을 통해 문제를 해결하는 효율적인 방법""A list of well-defined instructions for completing a task": "어떠한 태스크를 끝내기 위해서 잘 정의된 명령어들의 리스트"여기서 주목할 점:Instructions(명령어): 컴퓨터가 이해할 수 있는 명확한 지시사항well-defined(잘 정의된): 다르게 해석될 여지가 없는efficient(효율적인): 최소한의 리소..

DSA 2025.03.10

운영체제(커널)이란

컴퓨터를 사용하면서 우리가 당연하게 여기는 운영체제(Operating System, OS)는 사실 컴퓨터의 두뇌라고 할 수 있다. 운영체제와 커널이 무엇이며, 어떤 역할을 하는지 자세히 알아보자.운영체제란 무엇인가?운영체제는 컴퓨터 시스템의 핵심 소프트웨어다. 우리가 컴퓨터를 켜고 끌 때까지 끊임없이 작동하면서, 하드웨어 자원을 관리하고 사용자가 컴퓨터와 상호작용할 수 있도록 돕는 중요한 매개체 역할을 한다.운영체제의 주요 목적은 크게 두 가지로 나눌 수 있다.사용자에게 편리하고 효율적인 컴퓨팅 환경 제공컴퓨터 하드웨어의 효율적인 관리 및 사용커널: 운영체제의 핵심(출처: GeekforGeeks)운영체제를 이야기할 때 '커널(Kernel)'이라는 용어를 자주 접하게 된다. 커널은 좁은 의미의 운영체제로,..

OS 2025.03.10

URL 입력부터 웹 페이지 렌더링까지 동작 (현대 브라우저 기준)

Intro“사용자가 주소창에 URL을 입력하면 어떻게 되는가?”웹 개발자로서 이러한 질문을 받으면 어떻게 답변할지는 대강 정해져 있다.(출처: BrowserStack - What is Browser?아주 간단하게는, "브라우저는 해당 URL로 요청을 보내고, 서버는 응답을 보내주고, 브라우저는 응답을 화면에 렌더링한다." 로 '요약'할 수 있다. 이런 짧은 답변 속에는 훨씬 복잡한 프로세스가 숨어 있다. 이 과정은 컴퓨터 과학의 거의 모든 영역을 아우른다. (출처: TCP School - 웹의 동작 원리)URL 입력부터 웹 페이지 표시까지 발생하는 모든 과정을 컴퓨터 과학적 관점과 브라우저 동작 관점에서 종합적으로 살펴보겠다. 간단한 질문에 답하기까지 브라우저 기본 구조, 네트워크 요청과 서버 응답, 보..

Network 2025.03.05